Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 97fa1a5b4e | |||
| 9f6527007b | |||
| d052221f24 | |||
| 2af2d6a2c5 | |||
| 180dfe0366 | |||
| 04895f540a | |||
| 4cd23b6064 |
@ -2,18 +2,21 @@ ARG NODE_IMAGE=node:24.0.0-alpine
|
|||||||
|
|
||||||
FROM ${NODE_IMAGE} AS build
|
FROM ${NODE_IMAGE} AS build
|
||||||
|
|
||||||
|
RUN apk add --no-cache python3 make g++
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package*.json .
|
COPY package*.json .
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
RUN npm prune --omit=dev
|
||||||
|
|
||||||
FROM ${NODE_IMAGE} AS production
|
FROM ${NODE_IMAGE} AS production
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY --from=build /app/dist ./dist
|
COPY --from=build /app/dist ./dist
|
||||||
|
COPY --from=build /app/node_modules ./node_modules
|
||||||
COPY --from=build /app/package*.json .
|
COPY --from=build /app/package*.json .
|
||||||
RUN npm ci --omit=dev
|
|
||||||
|
|
||||||
EXPOSE 9966
|
EXPOSE 9966
|
||||||
CMD [ "node", "./dist/server/entry.mjs"]
|
CMD [ "node", "./dist/server/entry.mjs"]
|
||||||
@ -1,7 +1,6 @@
|
|||||||
# yarkov.tech
|
# yarkov.tech
|
||||||
|
|
||||||
[](https://opensource.org/licenses/MIT)
|
[](https://opensource.org/licenses/MIT)
|
||||||
[](https://app.netlify.com/sites/yarkov/deploys)
|
|
||||||
|
|
||||||
Personal website created with Astro.
|
Personal website created with Astro.
|
||||||
|
|
||||||
@ -12,9 +11,9 @@ Personal website created with Astro.
|
|||||||
- [x] Dark/Light Theme
|
- [x] Dark/Light Theme
|
||||||
- [x] Multilang web-site
|
- [x] Multilang web-site
|
||||||
- [x] Table of contents
|
- [x] Table of contents
|
||||||
- [x] Content management via [NetlifyCMS](https://www.netlifycms.org/)
|
- [x] Content management via [Directus](https://directus.io/)
|
||||||
- [x] Form handling via [Netlify Forms](https://www.netlify.com/products/forms/)
|
- [x] Form handling
|
||||||
- [x] Comment system via [Disqus](https://disqus.com/)
|
- [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
|
- [x] Views counter
|
||||||
|
|||||||
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "yarkov.tech",
|
"name": "yarkov.tech",
|
||||||
"version": "2.1.0",
|
"version": "3.0.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "yarkov.tech",
|
"name": "yarkov.tech",
|
||||||
"version": "2.1.0",
|
"version": "3.0.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/check": "^0.9.5",
|
"@astrojs/check": "^0.9.5",
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "yarkov.tech",
|
"name": "yarkov.tech",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "2.1.0",
|
"version": "3.0.1",
|
||||||
"description": "Personal website created with Astro.",
|
"description": "Personal website created with Astro.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Sergey Yarkov",
|
"name": "Sergey Yarkov",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 690 KiB |
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 261 KiB |
|
Before Width: | Height: | Size: 408 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 2.7 MiB |
175
schema.graphql
@ -158,6 +158,9 @@ type Subscription {
|
|||||||
directus_activity_mutated(event: EventEnum): directus_activity_mutated
|
directus_activity_mutated(event: EventEnum): directus_activity_mutated
|
||||||
directus_comments_mutated(event: EventEnum): directus_comments_mutated
|
directus_comments_mutated(event: EventEnum): directus_comments_mutated
|
||||||
directus_dashboards_mutated(event: EventEnum): directus_dashboards_mutated
|
directus_dashboards_mutated(event: EventEnum): directus_dashboards_mutated
|
||||||
|
directus_deployment_projects_mutated(event: EventEnum): directus_deployment_projects_mutated
|
||||||
|
directus_deployment_runs_mutated(event: EventEnum): directus_deployment_runs_mutated
|
||||||
|
directus_deployments_mutated(event: EventEnum): directus_deployments_mutated
|
||||||
directus_files_mutated(event: EventEnum): directus_files_mutated
|
directus_files_mutated(event: EventEnum): directus_files_mutated
|
||||||
directus_flows_mutated(event: EventEnum): directus_flows_mutated
|
directus_flows_mutated(event: EventEnum): directus_flows_mutated
|
||||||
directus_folders_mutated(event: EventEnum): directus_folders_mutated
|
directus_folders_mutated(event: EventEnum): directus_folders_mutated
|
||||||
@ -174,7 +177,6 @@ type Subscription {
|
|||||||
directus_translations_mutated(event: EventEnum): directus_translations_mutated
|
directus_translations_mutated(event: EventEnum): directus_translations_mutated
|
||||||
directus_users_mutated(event: EventEnum): directus_users_mutated
|
directus_users_mutated(event: EventEnum): directus_users_mutated
|
||||||
directus_versions_mutated(event: EventEnum): directus_versions_mutated
|
directus_versions_mutated(event: EventEnum): directus_versions_mutated
|
||||||
directus_webhooks_mutated(event: EventEnum): directus_webhooks_mutated
|
|
||||||
global_mutated(event: EventEnum): global_mutated
|
global_mutated(event: EventEnum): global_mutated
|
||||||
global_translations_mutated(event: EventEnum): global_translations_mutated
|
global_translations_mutated(event: EventEnum): global_translations_mutated
|
||||||
home_page_mutated(event: EventEnum): home_page_mutated
|
home_page_mutated(event: EventEnum): home_page_mutated
|
||||||
@ -244,7 +246,6 @@ type appeal_mutated {
|
|||||||
|
|
||||||
type article {
|
type article {
|
||||||
id: ID!
|
id: ID!
|
||||||
title: String
|
|
||||||
translations(filter: article_translations_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [article_translations]
|
translations(filter: article_translations_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [article_translations]
|
||||||
translations_func: count_functions
|
translations_func: count_functions
|
||||||
}
|
}
|
||||||
@ -264,7 +265,6 @@ type article_aggregated {
|
|||||||
|
|
||||||
type article_aggregated_count {
|
type article_aggregated_count {
|
||||||
id: Int
|
id: Int
|
||||||
title: Int
|
|
||||||
translations: Int
|
translations: Int
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -276,7 +276,6 @@ input article_filter {
|
|||||||
_and: [article_filter]
|
_and: [article_filter]
|
||||||
_or: [article_filter]
|
_or: [article_filter]
|
||||||
id: number_filter_operators
|
id: number_filter_operators
|
||||||
title: string_filter_operators
|
|
||||||
translations: article_translations_quantifier_filter
|
translations: article_translations_quantifier_filter
|
||||||
translations_func: count_function_filter_operators
|
translations_func: count_function_filter_operators
|
||||||
}
|
}
|
||||||
@ -487,7 +486,6 @@ input create_appeal_input {
|
|||||||
|
|
||||||
input create_article_input {
|
input create_article_input {
|
||||||
id: ID
|
id: ID
|
||||||
title: String
|
|
||||||
translations: [create_article_translations_input]
|
translations: [create_article_translations_input]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -861,6 +859,130 @@ type directus_dashboards_mutated {
|
|||||||
key: ID!
|
key: ID!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type directus_deployment_projects {
|
||||||
|
date_created: Date
|
||||||
|
date_created_func: datetime_functions
|
||||||
|
deployment(filter: directus_deployments_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_deployments
|
||||||
|
external_id: String!
|
||||||
|
id: ID!
|
||||||
|
name: String!
|
||||||
|
runs(filter: directus_deployment_runs_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [directus_deployment_runs]
|
||||||
|
runs_func: count_functions
|
||||||
|
user_created(filter: directus_users_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_users
|
||||||
|
}
|
||||||
|
|
||||||
|
input directus_deployment_projects_filter {
|
||||||
|
_and: [directus_deployment_projects_filter]
|
||||||
|
_or: [directus_deployment_projects_filter]
|
||||||
|
date_created: date_filter_operators
|
||||||
|
date_created_func: datetime_function_filter_operators
|
||||||
|
deployment: directus_deployments_filter
|
||||||
|
external_id: string_filter_operators
|
||||||
|
id: id_filter_operators
|
||||||
|
name: string_filter_operators
|
||||||
|
runs: directus_deployment_runs_quantifier_filter
|
||||||
|
runs_func: count_function_filter_operators
|
||||||
|
user_created: directus_users_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
type directus_deployment_projects_mutated {
|
||||||
|
data: directus_deployment_projects
|
||||||
|
event: EventEnum
|
||||||
|
key: ID!
|
||||||
|
}
|
||||||
|
|
||||||
|
input directus_deployment_projects_quantifier_filter {
|
||||||
|
_and: [directus_deployment_projects_filter]
|
||||||
|
_none: directus_deployment_projects_filter
|
||||||
|
_or: [directus_deployment_projects_filter]
|
||||||
|
_some: directus_deployment_projects_filter
|
||||||
|
date_created: date_filter_operators
|
||||||
|
date_created_func: datetime_function_filter_operators
|
||||||
|
deployment: directus_deployments_filter
|
||||||
|
external_id: string_filter_operators
|
||||||
|
id: id_filter_operators
|
||||||
|
name: string_filter_operators
|
||||||
|
runs: directus_deployment_runs_quantifier_filter
|
||||||
|
runs_func: count_function_filter_operators
|
||||||
|
user_created: directus_users_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
type directus_deployment_runs {
|
||||||
|
date_created: Date
|
||||||
|
date_created_func: datetime_functions
|
||||||
|
external_id: String!
|
||||||
|
id: ID!
|
||||||
|
project(filter: directus_deployment_projects_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_deployment_projects
|
||||||
|
target: String!
|
||||||
|
user_created(filter: directus_users_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_users
|
||||||
|
}
|
||||||
|
|
||||||
|
input directus_deployment_runs_filter {
|
||||||
|
_and: [directus_deployment_runs_filter]
|
||||||
|
_or: [directus_deployment_runs_filter]
|
||||||
|
date_created: date_filter_operators
|
||||||
|
date_created_func: datetime_function_filter_operators
|
||||||
|
external_id: string_filter_operators
|
||||||
|
id: id_filter_operators
|
||||||
|
project: directus_deployment_projects_filter
|
||||||
|
target: string_filter_operators
|
||||||
|
user_created: directus_users_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
type directus_deployment_runs_mutated {
|
||||||
|
data: directus_deployment_runs
|
||||||
|
event: EventEnum
|
||||||
|
key: ID!
|
||||||
|
}
|
||||||
|
|
||||||
|
input directus_deployment_runs_quantifier_filter {
|
||||||
|
_and: [directus_deployment_runs_filter]
|
||||||
|
_none: directus_deployment_runs_filter
|
||||||
|
_or: [directus_deployment_runs_filter]
|
||||||
|
_some: directus_deployment_runs_filter
|
||||||
|
date_created: date_filter_operators
|
||||||
|
date_created_func: datetime_function_filter_operators
|
||||||
|
external_id: string_filter_operators
|
||||||
|
id: id_filter_operators
|
||||||
|
project: directus_deployment_projects_filter
|
||||||
|
target: string_filter_operators
|
||||||
|
user_created: directus_users_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
type directus_deployments {
|
||||||
|
credentials: String
|
||||||
|
date_created: Date
|
||||||
|
date_created_func: datetime_functions
|
||||||
|
id: ID!
|
||||||
|
options: JSON
|
||||||
|
options_func: count_functions
|
||||||
|
projects(filter: directus_deployment_projects_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [directus_deployment_projects]
|
||||||
|
projects_func: count_functions
|
||||||
|
provider: String!
|
||||||
|
user_created(filter: directus_users_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_users
|
||||||
|
}
|
||||||
|
|
||||||
|
input directus_deployments_filter {
|
||||||
|
_and: [directus_deployments_filter]
|
||||||
|
_or: [directus_deployments_filter]
|
||||||
|
credentials: string_filter_operators
|
||||||
|
date_created: date_filter_operators
|
||||||
|
date_created_func: datetime_function_filter_operators
|
||||||
|
id: id_filter_operators
|
||||||
|
options: string_filter_operators
|
||||||
|
options_func: count_function_filter_operators
|
||||||
|
projects: directus_deployment_projects_quantifier_filter
|
||||||
|
projects_func: count_function_filter_operators
|
||||||
|
provider: string_filter_operators
|
||||||
|
user_created: directus_users_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
type directus_deployments_mutated {
|
||||||
|
data: directus_deployments
|
||||||
|
event: EventEnum
|
||||||
|
key: ID!
|
||||||
|
}
|
||||||
|
|
||||||
type directus_files {
|
type directus_files {
|
||||||
charset: String
|
charset: String
|
||||||
created_on: Date
|
created_on: Date
|
||||||
@ -1387,10 +1509,30 @@ input directus_roles_quantifier_filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type directus_settings {
|
type directus_settings {
|
||||||
|
ai_anthropic_allowed_models: JSON
|
||||||
|
ai_anthropic_allowed_models_func: count_functions
|
||||||
|
ai_anthropic_api_key: String
|
||||||
|
ai_google_allowed_models: JSON
|
||||||
|
ai_google_allowed_models_func: count_functions
|
||||||
|
ai_google_api_key: String
|
||||||
|
ai_openai_allowed_models: JSON
|
||||||
|
ai_openai_allowed_models_func: count_functions
|
||||||
|
ai_openai_api_key: String
|
||||||
|
ai_openai_compatible_api_key: String
|
||||||
|
ai_openai_compatible_base_url: String
|
||||||
|
ai_openai_compatible_headers: JSON
|
||||||
|
ai_openai_compatible_headers_func: count_functions
|
||||||
|
ai_openai_compatible_models: JSON
|
||||||
|
ai_openai_compatible_models_func: count_functions
|
||||||
|
ai_openai_compatible_name: String
|
||||||
|
"""$t:fields.directus_settings.ai_system_prompt_note"""
|
||||||
|
ai_system_prompt: String
|
||||||
auth_login_attempts: Int
|
auth_login_attempts: Int
|
||||||
auth_password_policy: String
|
auth_password_policy: String
|
||||||
basemaps: JSON
|
basemaps: JSON
|
||||||
basemaps_func: count_functions
|
basemaps_func: count_functions
|
||||||
|
"""$t:fields.directus_settings.collaborative_editing_note"""
|
||||||
|
collaborative_editing_enabled: Boolean!
|
||||||
custom_aspect_ratios: JSON
|
custom_aspect_ratios: JSON
|
||||||
custom_aspect_ratios_func: count_functions
|
custom_aspect_ratios_func: count_functions
|
||||||
custom_css: String
|
custom_css: String
|
||||||
@ -1663,27 +1805,6 @@ type directus_versions_mutated {
|
|||||||
key: ID!
|
key: ID!
|
||||||
}
|
}
|
||||||
|
|
||||||
type directus_webhooks {
|
|
||||||
actions: [String]!
|
|
||||||
collections: [String]!
|
|
||||||
data: Boolean
|
|
||||||
headers: JSON
|
|
||||||
headers_func: count_functions
|
|
||||||
id: ID!
|
|
||||||
method: String
|
|
||||||
migrated_flow(filter: directus_flows_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): directus_flows
|
|
||||||
name: String!
|
|
||||||
status: String
|
|
||||||
url: String!
|
|
||||||
was_active_before_deprecation: Boolean!
|
|
||||||
}
|
|
||||||
|
|
||||||
type directus_webhooks_mutated {
|
|
||||||
data: directus_webhooks
|
|
||||||
event: EventEnum
|
|
||||||
key: ID!
|
|
||||||
}
|
|
||||||
|
|
||||||
type global {
|
type global {
|
||||||
email: String!
|
email: String!
|
||||||
github: String!
|
github: String!
|
||||||
@ -2145,7 +2266,6 @@ input update_appeal_input {
|
|||||||
|
|
||||||
input update_article_input {
|
input update_article_input {
|
||||||
id: ID
|
id: ID
|
||||||
title: String
|
|
||||||
translations: [update_article_translations_input]
|
translations: [update_article_translations_input]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2359,7 +2479,6 @@ type version_appeal {
|
|||||||
|
|
||||||
type version_article {
|
type version_article {
|
||||||
id: ID
|
id: ID
|
||||||
title: String
|
|
||||||
translations: JSON
|
translations: JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
},
|
},
|
||||||
"isSiteUnderConstruction": false,
|
"isSiteUnderConstruction": false,
|
||||||
"contacts": {
|
"contacts": {
|
||||||
"email": "email@yarkov.tech",
|
"email": "serzh.yarkov@gmail.com",
|
||||||
"telegram": "https://t.me/sergeyyarkov",
|
"telegram": "https://t.me/sergeyyarkov",
|
||||||
"github": "https://github.com/sergeyyarkov"
|
"github": "https://github.com/sergeyyarkov"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,44 +1,53 @@
|
|||||||
---
|
---
|
||||||
|
import UIString from "./UIString.astro";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
url: string;
|
url: string;
|
||||||
id: string;
|
id: string;
|
||||||
|
lang: LanguageKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { url, id } = Astro.props as Props;
|
const { url, id, lang } = Astro.props as Props;
|
||||||
---
|
---
|
||||||
|
|
||||||
<footer itemscope itemtype="http://schema.org/UserComments">
|
<footer itemscope itemtype="http://schema.org/UserComments">
|
||||||
<div id="disqus_thread"></div>
|
<h2><UIString key={"articlePost.comments"} />:</h2>
|
||||||
|
<div id="remark42"></div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script is:inline define:vars={{ url, id }}>
|
<script is:inline define:vars={{ url, id, lang }}>
|
||||||
var disqus_config = function () {
|
window.remark_config = {
|
||||||
this.page.url = url;
|
host: "https://remark.yarkov.tech",
|
||||||
this.page.identifier = id;
|
site_id: "remark",
|
||||||
|
theme: window.theme,
|
||||||
|
show_email_subscription: true,
|
||||||
|
url,
|
||||||
|
locale: lang,
|
||||||
|
no_footer: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
var e = document.getElementById("disqus_thread");
|
var e = document.getElementById("remark42");
|
||||||
if ("IntersectionObserver" in window) {
|
if ("IntersectionObserver" in window) {
|
||||||
var t = new IntersectionObserver((e) => {
|
var t = new IntersectionObserver((e) => {
|
||||||
e.forEach((e) => {
|
e.forEach((e) => {
|
||||||
e.isIntersecting &&
|
if (e.isIntersecting) {
|
||||||
((function () {
|
((e, n) => {
|
||||||
var e = document,
|
for (var o = 0; o < e.length; o++) {
|
||||||
t = e.createElement("script");
|
var r = n.createElement("script"),
|
||||||
((t.src = "https://yarkov-tech.disqus.com/embed.js"),
|
c = ".js",
|
||||||
t.setAttribute("data-timestamp", +new Date()),
|
d = n.head || n.body;
|
||||||
(e.head || e.body).appendChild(t));
|
("noModule" in r ? ((r.type = "module"), (c = ".mjs")) : (r.async = !0),
|
||||||
})(),
|
(r.defer = !0),
|
||||||
t.unobserve(e.target));
|
(r.src = remark_config.host + "/web/" + e[o] + c),
|
||||||
|
d.appendChild(r));
|
||||||
|
}
|
||||||
|
})(remark_config.components || ["embed"], document);
|
||||||
|
t.unobserve(e.target);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
t.observe(e);
|
t.observe(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener(
|
window.addEventListener("onthemetoggled", (e) => window.REMARK42.changeTheme(e.detail));
|
||||||
"onthemetoggled",
|
|
||||||
() =>
|
|
||||||
document.readyState == "complete" &&
|
|
||||||
setTimeout(() => "DISQUS" in window && DISQUS.reset({ reload: true, config: disqus_config }), 100)
|
|
||||||
);
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -28,7 +28,9 @@ const {
|
|||||||
views,
|
views,
|
||||||
article_id: articleTranslations,
|
article_id: articleTranslations,
|
||||||
} = article;
|
} = article;
|
||||||
|
|
||||||
const t = useTranslation(Astro);
|
const t = useTranslation(Astro);
|
||||||
|
// const articleCodeLangs = articleTranslations?.translations?.map((t) => t?.languages_code?.code);
|
||||||
---
|
---
|
||||||
|
|
||||||
<article itemscope itemtype="http://schema.org/BlogPosting" class="article">
|
<article itemscope itemtype="http://schema.org/BlogPosting" class="article">
|
||||||
@ -63,11 +65,7 @@ const t = useTranslation(Astro);
|
|||||||
</time>
|
</time>
|
||||||
<span itemprop="author">{`${author?.first_name} ${author?.last_name}`}</span>
|
<span itemprop="author">{`${author?.first_name} ${author?.last_name}`}</span>
|
||||||
</div>
|
</div>
|
||||||
{
|
{cover_image && <ArticleCover src={`${DIRECTUS_URL}/assets/${cover_image.filename_disk}`} alt={title} />}
|
||||||
cover_image && (
|
|
||||||
<ArticleCover src={`${DIRECTUS_URL}/assets/${cover_image.filename_disk}`} alt={title} />
|
|
||||||
)
|
|
||||||
}
|
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<p>
|
<p>
|
||||||
{description}
|
{description}
|
||||||
@ -76,9 +74,13 @@ const t = useTranslation(Astro);
|
|||||||
<AvailableOnLangs articles={articleTranslations} />
|
<AvailableOnLangs articles={articleTranslations} />
|
||||||
</header>
|
</header>
|
||||||
<slot />
|
<slot />
|
||||||
<ArticleComments url={canonicalUrl.href} id={slug} />
|
<ArticleComments lang={pageLang} url={canonicalUrl.href} id={slug} />
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<!-- <script define:vars={{ articleCodeLangs }} is:inline>
|
||||||
|
console.log(navigator.language, articleCodeLangs);
|
||||||
|
</script> -->
|
||||||
|
|
||||||
<style lang="scss" is:global>
|
<style lang="scss" is:global>
|
||||||
.article {
|
.article {
|
||||||
& header {
|
& header {
|
||||||
|
|||||||
@ -23,6 +23,7 @@ type Documents = {
|
|||||||
"\n\t\tquery Article_translations($slug: String!) {\n\t\t\tarticle_translations(filter: { slug: { _eq: $slug } }) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\ttags {\n\t\t\t\t\ttag_id {\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdescription\n\t\t\t\tslug\n\t\t\t\tcontent\n\t\t\t\tauthor {\n\t\t\t\t\tfirst_name\n\t\t\t\t\tlast_name\n\t\t\t\t}\n\t\t\t\tpub_date\n\t\t\t\tviews\n\t\t\t\tlanguages_code {\n\t\t\t\t\tcode\n\t\t\t\t\tname\n\t\t\t\t}\n\t\t\t\tcover_image {\n\t\t\t\t\ttitle\n\t\t\t\t\ttype\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t\tarticle_id {\n\t\t\t\t\ttranslations {\n\t\t\t\t\t\tslug\n\t\t\t\t\t\tlanguages_code {\n\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpub_date\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": typeof types.Article_TranslationsDocument,
|
"\n\t\tquery Article_translations($slug: String!) {\n\t\t\tarticle_translations(filter: { slug: { _eq: $slug } }) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\ttags {\n\t\t\t\t\ttag_id {\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdescription\n\t\t\t\tslug\n\t\t\t\tcontent\n\t\t\t\tauthor {\n\t\t\t\t\tfirst_name\n\t\t\t\t\tlast_name\n\t\t\t\t}\n\t\t\t\tpub_date\n\t\t\t\tviews\n\t\t\t\tlanguages_code {\n\t\t\t\t\tcode\n\t\t\t\t\tname\n\t\t\t\t}\n\t\t\t\tcover_image {\n\t\t\t\t\ttitle\n\t\t\t\t\ttype\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t\tarticle_id {\n\t\t\t\t\ttranslations {\n\t\t\t\t\t\tslug\n\t\t\t\t\t\tlanguages_code {\n\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpub_date\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": typeof types.Article_TranslationsDocument,
|
||||||
"\n\t\tmutation Update_article_translations_item($id: ID!, $views: Int!) {\n\t\t\tupdate_article_translations_item(id: $id, data: { views: $views }) {\n\t\t\t\tviews\n\t\t\t}\n\t\t}\n\t": typeof types.Update_Article_Translations_ItemDocument,
|
"\n\t\tmutation Update_article_translations_item($id: ID!, $views: Int!) {\n\t\t\tupdate_article_translations_item(id: $id, data: { views: $views }) {\n\t\t\t\tviews\n\t\t\t}\n\t\t}\n\t": typeof types.Update_Article_Translations_ItemDocument,
|
||||||
"\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t": typeof types.AboutMeQueryDocument,
|
"\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t": typeof types.AboutMeQueryDocument,
|
||||||
|
"\n\t\tquery SplashInfo($pageLang: String!) {\n\t\t\thome_page_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\theadline\n\t\t\t\tsubheadline\n\t\t\t\tdescription\n\t\t\t}\n\t\t}\n\t": typeof types.SplashInfoDocument,
|
||||||
"\n\t\tquery ContactsQuery {\n\t\t\tglobal {\n\t\t\t\temail\n\t\t\t\tgithub\n\t\t\t\ttelegram\n\t\t\t}\n\t\t}\n\t": typeof types.ContactsQueryDocument,
|
"\n\t\tquery ContactsQuery {\n\t\t\tglobal {\n\t\t\t\temail\n\t\t\t\tgithub\n\t\t\t\ttelegram\n\t\t\t}\n\t\t}\n\t": typeof types.ContactsQueryDocument,
|
||||||
"\n\t\tquery SiteSettingsQuery {\n\t\t\tglobal {\n\t\t\t\tym_counter\n\t\t\t\trecent_articles_limit\n\t\t\t\tgithub\n\t\t\t}\n\t\t}\n\t": typeof types.SiteSettingsQueryDocument,
|
"\n\t\tquery SiteSettingsQuery {\n\t\t\tglobal {\n\t\t\t\tym_counter\n\t\t\t\trecent_articles_limit\n\t\t\t\tgithub\n\t\t\t}\n\t\t}\n\t": typeof types.SiteSettingsQueryDocument,
|
||||||
"\n\t\tquery Project_translations($pageLang: String!) {\n\t\t\tproject_translations(filter: { languages_code: { code: { _contains: $pageLang } } }, sort: [\"-year\"]) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\tyear\n\t\t\t\tdescription\n\t\t\t\tsource_url\n\t\t\t\tdemo_url\n\t\t\t\tarticle_url\n\t\t\t\ticon {\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": typeof types.Project_TranslationsDocument,
|
"\n\t\tquery Project_translations($pageLang: String!) {\n\t\t\tproject_translations(filter: { languages_code: { code: { _contains: $pageLang } } }, sort: [\"-year\"]) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\tyear\n\t\t\t\tdescription\n\t\t\t\tsource_url\n\t\t\t\tdemo_url\n\t\t\t\tarticle_url\n\t\t\t\ticon {\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": typeof types.Project_TranslationsDocument,
|
||||||
@ -37,6 +38,7 @@ const documents: Documents = {
|
|||||||
"\n\t\tquery Article_translations($slug: String!) {\n\t\t\tarticle_translations(filter: { slug: { _eq: $slug } }) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\ttags {\n\t\t\t\t\ttag_id {\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdescription\n\t\t\t\tslug\n\t\t\t\tcontent\n\t\t\t\tauthor {\n\t\t\t\t\tfirst_name\n\t\t\t\t\tlast_name\n\t\t\t\t}\n\t\t\t\tpub_date\n\t\t\t\tviews\n\t\t\t\tlanguages_code {\n\t\t\t\t\tcode\n\t\t\t\t\tname\n\t\t\t\t}\n\t\t\t\tcover_image {\n\t\t\t\t\ttitle\n\t\t\t\t\ttype\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t\tarticle_id {\n\t\t\t\t\ttranslations {\n\t\t\t\t\t\tslug\n\t\t\t\t\t\tlanguages_code {\n\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpub_date\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": types.Article_TranslationsDocument,
|
"\n\t\tquery Article_translations($slug: String!) {\n\t\t\tarticle_translations(filter: { slug: { _eq: $slug } }) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\ttags {\n\t\t\t\t\ttag_id {\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdescription\n\t\t\t\tslug\n\t\t\t\tcontent\n\t\t\t\tauthor {\n\t\t\t\t\tfirst_name\n\t\t\t\t\tlast_name\n\t\t\t\t}\n\t\t\t\tpub_date\n\t\t\t\tviews\n\t\t\t\tlanguages_code {\n\t\t\t\t\tcode\n\t\t\t\t\tname\n\t\t\t\t}\n\t\t\t\tcover_image {\n\t\t\t\t\ttitle\n\t\t\t\t\ttype\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t\tarticle_id {\n\t\t\t\t\ttranslations {\n\t\t\t\t\t\tslug\n\t\t\t\t\t\tlanguages_code {\n\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpub_date\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": types.Article_TranslationsDocument,
|
||||||
"\n\t\tmutation Update_article_translations_item($id: ID!, $views: Int!) {\n\t\t\tupdate_article_translations_item(id: $id, data: { views: $views }) {\n\t\t\t\tviews\n\t\t\t}\n\t\t}\n\t": types.Update_Article_Translations_ItemDocument,
|
"\n\t\tmutation Update_article_translations_item($id: ID!, $views: Int!) {\n\t\t\tupdate_article_translations_item(id: $id, data: { views: $views }) {\n\t\t\t\tviews\n\t\t\t}\n\t\t}\n\t": types.Update_Article_Translations_ItemDocument,
|
||||||
"\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t": types.AboutMeQueryDocument,
|
"\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t": types.AboutMeQueryDocument,
|
||||||
|
"\n\t\tquery SplashInfo($pageLang: String!) {\n\t\t\thome_page_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\theadline\n\t\t\t\tsubheadline\n\t\t\t\tdescription\n\t\t\t}\n\t\t}\n\t": types.SplashInfoDocument,
|
||||||
"\n\t\tquery ContactsQuery {\n\t\t\tglobal {\n\t\t\t\temail\n\t\t\t\tgithub\n\t\t\t\ttelegram\n\t\t\t}\n\t\t}\n\t": types.ContactsQueryDocument,
|
"\n\t\tquery ContactsQuery {\n\t\t\tglobal {\n\t\t\t\temail\n\t\t\t\tgithub\n\t\t\t\ttelegram\n\t\t\t}\n\t\t}\n\t": types.ContactsQueryDocument,
|
||||||
"\n\t\tquery SiteSettingsQuery {\n\t\t\tglobal {\n\t\t\t\tym_counter\n\t\t\t\trecent_articles_limit\n\t\t\t\tgithub\n\t\t\t}\n\t\t}\n\t": types.SiteSettingsQueryDocument,
|
"\n\t\tquery SiteSettingsQuery {\n\t\t\tglobal {\n\t\t\t\tym_counter\n\t\t\t\trecent_articles_limit\n\t\t\t\tgithub\n\t\t\t}\n\t\t}\n\t": types.SiteSettingsQueryDocument,
|
||||||
"\n\t\tquery Project_translations($pageLang: String!) {\n\t\t\tproject_translations(filter: { languages_code: { code: { _contains: $pageLang } } }, sort: [\"-year\"]) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\tyear\n\t\t\t\tdescription\n\t\t\t\tsource_url\n\t\t\t\tdemo_url\n\t\t\t\tarticle_url\n\t\t\t\ticon {\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": types.Project_TranslationsDocument,
|
"\n\t\tquery Project_translations($pageLang: String!) {\n\t\t\tproject_translations(filter: { languages_code: { code: { _contains: $pageLang } } }, sort: [\"-year\"]) {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\tyear\n\t\t\t\tdescription\n\t\t\t\tsource_url\n\t\t\t\tdemo_url\n\t\t\t\tarticle_url\n\t\t\t\ticon {\n\t\t\t\t\tfilename_disk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t": types.Project_TranslationsDocument,
|
||||||
@ -75,6 +77,10 @@ export function graphql(source: "\n\t\tmutation Update_article_translations_item
|
|||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||||
*/
|
*/
|
||||||
export function graphql(source: "\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t"): typeof import('./graphql').AboutMeQueryDocument;
|
export function graphql(source: "\n\t\tquery AboutMeQuery($pageLang: String!) {\n\t\t\tglobal_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\tabout\n\t\t\t}\n\t\t}\n\t"): typeof import('./graphql').AboutMeQueryDocument;
|
||||||
|
/**
|
||||||
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||||
|
*/
|
||||||
|
export function graphql(source: "\n\t\tquery SplashInfo($pageLang: String!) {\n\t\t\thome_page_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {\n\t\t\t\theadline\n\t\t\t\tsubheadline\n\t\t\t\tdescription\n\t\t\t}\n\t\t}\n\t"): typeof import('./graphql').SplashInfoDocument;
|
||||||
/**
|
/**
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1076,6 +1076,9 @@ export type Subscription = {
|
|||||||
directus_activity_mutated?: Maybe<Directus_Activity_Mutated>;
|
directus_activity_mutated?: Maybe<Directus_Activity_Mutated>;
|
||||||
directus_comments_mutated?: Maybe<Directus_Comments_Mutated>;
|
directus_comments_mutated?: Maybe<Directus_Comments_Mutated>;
|
||||||
directus_dashboards_mutated?: Maybe<Directus_Dashboards_Mutated>;
|
directus_dashboards_mutated?: Maybe<Directus_Dashboards_Mutated>;
|
||||||
|
directus_deployment_projects_mutated?: Maybe<Directus_Deployment_Projects_Mutated>;
|
||||||
|
directus_deployment_runs_mutated?: Maybe<Directus_Deployment_Runs_Mutated>;
|
||||||
|
directus_deployments_mutated?: Maybe<Directus_Deployments_Mutated>;
|
||||||
directus_files_mutated?: Maybe<Directus_Files_Mutated>;
|
directus_files_mutated?: Maybe<Directus_Files_Mutated>;
|
||||||
directus_flows_mutated?: Maybe<Directus_Flows_Mutated>;
|
directus_flows_mutated?: Maybe<Directus_Flows_Mutated>;
|
||||||
directus_folders_mutated?: Maybe<Directus_Folders_Mutated>;
|
directus_folders_mutated?: Maybe<Directus_Folders_Mutated>;
|
||||||
@ -1092,7 +1095,6 @@ export type Subscription = {
|
|||||||
directus_translations_mutated?: Maybe<Directus_Translations_Mutated>;
|
directus_translations_mutated?: Maybe<Directus_Translations_Mutated>;
|
||||||
directus_users_mutated?: Maybe<Directus_Users_Mutated>;
|
directus_users_mutated?: Maybe<Directus_Users_Mutated>;
|
||||||
directus_versions_mutated?: Maybe<Directus_Versions_Mutated>;
|
directus_versions_mutated?: Maybe<Directus_Versions_Mutated>;
|
||||||
directus_webhooks_mutated?: Maybe<Directus_Webhooks_Mutated>;
|
|
||||||
global_mutated?: Maybe<Global_Mutated>;
|
global_mutated?: Maybe<Global_Mutated>;
|
||||||
global_translations_mutated?: Maybe<Global_Translations_Mutated>;
|
global_translations_mutated?: Maybe<Global_Translations_Mutated>;
|
||||||
home_page_mutated?: Maybe<Home_Page_Mutated>;
|
home_page_mutated?: Maybe<Home_Page_Mutated>;
|
||||||
@ -1144,6 +1146,21 @@ export type SubscriptionDirectus_Dashboards_MutatedArgs = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type SubscriptionDirectus_Deployment_Projects_MutatedArgs = {
|
||||||
|
event?: InputMaybe<EventEnum>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type SubscriptionDirectus_Deployment_Runs_MutatedArgs = {
|
||||||
|
event?: InputMaybe<EventEnum>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type SubscriptionDirectus_Deployments_MutatedArgs = {
|
||||||
|
event?: InputMaybe<EventEnum>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
export type SubscriptionDirectus_Files_MutatedArgs = {
|
export type SubscriptionDirectus_Files_MutatedArgs = {
|
||||||
event?: InputMaybe<EventEnum>;
|
event?: InputMaybe<EventEnum>;
|
||||||
};
|
};
|
||||||
@ -1224,11 +1241,6 @@ export type SubscriptionDirectus_Versions_MutatedArgs = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export type SubscriptionDirectus_Webhooks_MutatedArgs = {
|
|
||||||
event?: InputMaybe<EventEnum>;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
export type SubscriptionGlobal_MutatedArgs = {
|
export type SubscriptionGlobal_MutatedArgs = {
|
||||||
event?: InputMaybe<EventEnum>;
|
event?: InputMaybe<EventEnum>;
|
||||||
};
|
};
|
||||||
@ -1333,7 +1345,6 @@ export type Appeal_Mutated = {
|
|||||||
export type Article = {
|
export type Article = {
|
||||||
__typename?: 'article';
|
__typename?: 'article';
|
||||||
id: Scalars['ID']['output'];
|
id: Scalars['ID']['output'];
|
||||||
title?: Maybe<Scalars['String']['output']>;
|
|
||||||
translations?: Maybe<Array<Maybe<Article_Translations>>>;
|
translations?: Maybe<Array<Maybe<Article_Translations>>>;
|
||||||
translations_func?: Maybe<Count_Functions>;
|
translations_func?: Maybe<Count_Functions>;
|
||||||
};
|
};
|
||||||
@ -1365,7 +1376,6 @@ export type Article_Aggregated = {
|
|||||||
export type Article_Aggregated_Count = {
|
export type Article_Aggregated_Count = {
|
||||||
__typename?: 'article_aggregated_count';
|
__typename?: 'article_aggregated_count';
|
||||||
id?: Maybe<Scalars['Int']['output']>;
|
id?: Maybe<Scalars['Int']['output']>;
|
||||||
title?: Maybe<Scalars['Int']['output']>;
|
|
||||||
translations?: Maybe<Scalars['Int']['output']>;
|
translations?: Maybe<Scalars['Int']['output']>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1378,7 +1388,6 @@ export type Article_Filter = {
|
|||||||
_and?: InputMaybe<Array<InputMaybe<Article_Filter>>>;
|
_and?: InputMaybe<Array<InputMaybe<Article_Filter>>>;
|
||||||
_or?: InputMaybe<Array<InputMaybe<Article_Filter>>>;
|
_or?: InputMaybe<Array<InputMaybe<Article_Filter>>>;
|
||||||
id?: InputMaybe<Number_Filter_Operators>;
|
id?: InputMaybe<Number_Filter_Operators>;
|
||||||
title?: InputMaybe<String_Filter_Operators>;
|
|
||||||
translations?: InputMaybe<Article_Translations_Quantifier_Filter>;
|
translations?: InputMaybe<Article_Translations_Quantifier_Filter>;
|
||||||
translations_func?: InputMaybe<Count_Function_Filter_Operators>;
|
translations_func?: InputMaybe<Count_Function_Filter_Operators>;
|
||||||
};
|
};
|
||||||
@ -1671,7 +1680,6 @@ export type Create_Appeal_Input = {
|
|||||||
|
|
||||||
export type Create_Article_Input = {
|
export type Create_Article_Input = {
|
||||||
id?: InputMaybe<Scalars['ID']['input']>;
|
id?: InputMaybe<Scalars['ID']['input']>;
|
||||||
title?: InputMaybe<Scalars['String']['input']>;
|
|
||||||
translations?: InputMaybe<Array<InputMaybe<Create_Article_Translations_Input>>>;
|
translations?: InputMaybe<Array<InputMaybe<Create_Article_Translations_Input>>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2146,6 +2154,206 @@ export type Directus_Dashboards_Mutated = {
|
|||||||
key: Scalars['ID']['output'];
|
key: Scalars['ID']['output'];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Projects = {
|
||||||
|
__typename?: 'directus_deployment_projects';
|
||||||
|
date_created?: Maybe<Scalars['Date']['output']>;
|
||||||
|
date_created_func?: Maybe<Datetime_Functions>;
|
||||||
|
deployment?: Maybe<Directus_Deployments>;
|
||||||
|
external_id: Scalars['String']['output'];
|
||||||
|
id: Scalars['ID']['output'];
|
||||||
|
name: Scalars['String']['output'];
|
||||||
|
runs?: Maybe<Array<Maybe<Directus_Deployment_Runs>>>;
|
||||||
|
runs_func?: Maybe<Count_Functions>;
|
||||||
|
user_created?: Maybe<Directus_Users>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_Deployment_ProjectsDeploymentArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Deployments_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_Deployment_ProjectsRunsArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Deployment_Runs_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_Deployment_ProjectsUser_CreatedArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Projects_Filter = {
|
||||||
|
_and?: InputMaybe<Array<InputMaybe<Directus_Deployment_Projects_Filter>>>;
|
||||||
|
_or?: InputMaybe<Array<InputMaybe<Directus_Deployment_Projects_Filter>>>;
|
||||||
|
date_created?: InputMaybe<Date_Filter_Operators>;
|
||||||
|
date_created_func?: InputMaybe<Datetime_Function_Filter_Operators>;
|
||||||
|
deployment?: InputMaybe<Directus_Deployments_Filter>;
|
||||||
|
external_id?: InputMaybe<String_Filter_Operators>;
|
||||||
|
id?: InputMaybe<Id_Filter_Operators>;
|
||||||
|
name?: InputMaybe<String_Filter_Operators>;
|
||||||
|
runs?: InputMaybe<Directus_Deployment_Runs_Quantifier_Filter>;
|
||||||
|
runs_func?: InputMaybe<Count_Function_Filter_Operators>;
|
||||||
|
user_created?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Projects_Mutated = {
|
||||||
|
__typename?: 'directus_deployment_projects_mutated';
|
||||||
|
data?: Maybe<Directus_Deployment_Projects>;
|
||||||
|
event?: Maybe<EventEnum>;
|
||||||
|
key: Scalars['ID']['output'];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Projects_Quantifier_Filter = {
|
||||||
|
_and?: InputMaybe<Array<InputMaybe<Directus_Deployment_Projects_Filter>>>;
|
||||||
|
_none?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
_or?: InputMaybe<Array<InputMaybe<Directus_Deployment_Projects_Filter>>>;
|
||||||
|
_some?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
date_created?: InputMaybe<Date_Filter_Operators>;
|
||||||
|
date_created_func?: InputMaybe<Datetime_Function_Filter_Operators>;
|
||||||
|
deployment?: InputMaybe<Directus_Deployments_Filter>;
|
||||||
|
external_id?: InputMaybe<String_Filter_Operators>;
|
||||||
|
id?: InputMaybe<Id_Filter_Operators>;
|
||||||
|
name?: InputMaybe<String_Filter_Operators>;
|
||||||
|
runs?: InputMaybe<Directus_Deployment_Runs_Quantifier_Filter>;
|
||||||
|
runs_func?: InputMaybe<Count_Function_Filter_Operators>;
|
||||||
|
user_created?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Runs = {
|
||||||
|
__typename?: 'directus_deployment_runs';
|
||||||
|
date_created?: Maybe<Scalars['Date']['output']>;
|
||||||
|
date_created_func?: Maybe<Datetime_Functions>;
|
||||||
|
external_id: Scalars['String']['output'];
|
||||||
|
id: Scalars['ID']['output'];
|
||||||
|
project?: Maybe<Directus_Deployment_Projects>;
|
||||||
|
target: Scalars['String']['output'];
|
||||||
|
user_created?: Maybe<Directus_Users>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_Deployment_RunsProjectArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_Deployment_RunsUser_CreatedArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Runs_Filter = {
|
||||||
|
_and?: InputMaybe<Array<InputMaybe<Directus_Deployment_Runs_Filter>>>;
|
||||||
|
_or?: InputMaybe<Array<InputMaybe<Directus_Deployment_Runs_Filter>>>;
|
||||||
|
date_created?: InputMaybe<Date_Filter_Operators>;
|
||||||
|
date_created_func?: InputMaybe<Datetime_Function_Filter_Operators>;
|
||||||
|
external_id?: InputMaybe<String_Filter_Operators>;
|
||||||
|
id?: InputMaybe<Id_Filter_Operators>;
|
||||||
|
project?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
target?: InputMaybe<String_Filter_Operators>;
|
||||||
|
user_created?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Runs_Mutated = {
|
||||||
|
__typename?: 'directus_deployment_runs_mutated';
|
||||||
|
data?: Maybe<Directus_Deployment_Runs>;
|
||||||
|
event?: Maybe<EventEnum>;
|
||||||
|
key: Scalars['ID']['output'];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployment_Runs_Quantifier_Filter = {
|
||||||
|
_and?: InputMaybe<Array<InputMaybe<Directus_Deployment_Runs_Filter>>>;
|
||||||
|
_none?: InputMaybe<Directus_Deployment_Runs_Filter>;
|
||||||
|
_or?: InputMaybe<Array<InputMaybe<Directus_Deployment_Runs_Filter>>>;
|
||||||
|
_some?: InputMaybe<Directus_Deployment_Runs_Filter>;
|
||||||
|
date_created?: InputMaybe<Date_Filter_Operators>;
|
||||||
|
date_created_func?: InputMaybe<Datetime_Function_Filter_Operators>;
|
||||||
|
external_id?: InputMaybe<String_Filter_Operators>;
|
||||||
|
id?: InputMaybe<Id_Filter_Operators>;
|
||||||
|
project?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
target?: InputMaybe<String_Filter_Operators>;
|
||||||
|
user_created?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployments = {
|
||||||
|
__typename?: 'directus_deployments';
|
||||||
|
credentials?: Maybe<Scalars['String']['output']>;
|
||||||
|
date_created?: Maybe<Scalars['Date']['output']>;
|
||||||
|
date_created_func?: Maybe<Datetime_Functions>;
|
||||||
|
id: Scalars['ID']['output'];
|
||||||
|
options?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
options_func?: Maybe<Count_Functions>;
|
||||||
|
projects?: Maybe<Array<Maybe<Directus_Deployment_Projects>>>;
|
||||||
|
projects_func?: Maybe<Count_Functions>;
|
||||||
|
provider: Scalars['String']['output'];
|
||||||
|
user_created?: Maybe<Directus_Users>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_DeploymentsProjectsArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Deployment_Projects_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type Directus_DeploymentsUser_CreatedArgs = {
|
||||||
|
filter?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
page?: InputMaybe<Scalars['Int']['input']>;
|
||||||
|
search?: InputMaybe<Scalars['String']['input']>;
|
||||||
|
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployments_Filter = {
|
||||||
|
_and?: InputMaybe<Array<InputMaybe<Directus_Deployments_Filter>>>;
|
||||||
|
_or?: InputMaybe<Array<InputMaybe<Directus_Deployments_Filter>>>;
|
||||||
|
credentials?: InputMaybe<String_Filter_Operators>;
|
||||||
|
date_created?: InputMaybe<Date_Filter_Operators>;
|
||||||
|
date_created_func?: InputMaybe<Datetime_Function_Filter_Operators>;
|
||||||
|
id?: InputMaybe<Id_Filter_Operators>;
|
||||||
|
options?: InputMaybe<String_Filter_Operators>;
|
||||||
|
options_func?: InputMaybe<Count_Function_Filter_Operators>;
|
||||||
|
projects?: InputMaybe<Directus_Deployment_Projects_Quantifier_Filter>;
|
||||||
|
projects_func?: InputMaybe<Count_Function_Filter_Operators>;
|
||||||
|
provider?: InputMaybe<String_Filter_Operators>;
|
||||||
|
user_created?: InputMaybe<Directus_Users_Filter>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Directus_Deployments_Mutated = {
|
||||||
|
__typename?: 'directus_deployments_mutated';
|
||||||
|
data?: Maybe<Directus_Deployments>;
|
||||||
|
event?: Maybe<EventEnum>;
|
||||||
|
key: Scalars['ID']['output'];
|
||||||
|
};
|
||||||
|
|
||||||
export type Directus_Files = {
|
export type Directus_Files = {
|
||||||
__typename?: 'directus_files';
|
__typename?: 'directus_files';
|
||||||
charset?: Maybe<Scalars['String']['output']>;
|
charset?: Maybe<Scalars['String']['output']>;
|
||||||
@ -2975,10 +3183,30 @@ export type Directus_Roles_Quantifier_Filter = {
|
|||||||
|
|
||||||
export type Directus_Settings = {
|
export type Directus_Settings = {
|
||||||
__typename?: 'directus_settings';
|
__typename?: 'directus_settings';
|
||||||
|
ai_anthropic_allowed_models?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
ai_anthropic_allowed_models_func?: Maybe<Count_Functions>;
|
||||||
|
ai_anthropic_api_key?: Maybe<Scalars['String']['output']>;
|
||||||
|
ai_google_allowed_models?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
ai_google_allowed_models_func?: Maybe<Count_Functions>;
|
||||||
|
ai_google_api_key?: Maybe<Scalars['String']['output']>;
|
||||||
|
ai_openai_allowed_models?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
ai_openai_allowed_models_func?: Maybe<Count_Functions>;
|
||||||
|
ai_openai_api_key?: Maybe<Scalars['String']['output']>;
|
||||||
|
ai_openai_compatible_api_key?: Maybe<Scalars['String']['output']>;
|
||||||
|
ai_openai_compatible_base_url?: Maybe<Scalars['String']['output']>;
|
||||||
|
ai_openai_compatible_headers?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
ai_openai_compatible_headers_func?: Maybe<Count_Functions>;
|
||||||
|
ai_openai_compatible_models?: Maybe<Scalars['JSON']['output']>;
|
||||||
|
ai_openai_compatible_models_func?: Maybe<Count_Functions>;
|
||||||
|
ai_openai_compatible_name?: Maybe<Scalars['String']['output']>;
|
||||||
|
/** $t:fields.directus_settings.ai_system_prompt_note */
|
||||||
|
ai_system_prompt?: Maybe<Scalars['String']['output']>;
|
||||||
auth_login_attempts?: Maybe<Scalars['Int']['output']>;
|
auth_login_attempts?: Maybe<Scalars['Int']['output']>;
|
||||||
auth_password_policy?: Maybe<Scalars['String']['output']>;
|
auth_password_policy?: Maybe<Scalars['String']['output']>;
|
||||||
basemaps?: Maybe<Scalars['JSON']['output']>;
|
basemaps?: Maybe<Scalars['JSON']['output']>;
|
||||||
basemaps_func?: Maybe<Count_Functions>;
|
basemaps_func?: Maybe<Count_Functions>;
|
||||||
|
/** $t:fields.directus_settings.collaborative_editing_note */
|
||||||
|
collaborative_editing_enabled: Scalars['Boolean']['output'];
|
||||||
custom_aspect_ratios?: Maybe<Scalars['JSON']['output']>;
|
custom_aspect_ratios?: Maybe<Scalars['JSON']['output']>;
|
||||||
custom_aspect_ratios_func?: Maybe<Count_Functions>;
|
custom_aspect_ratios_func?: Maybe<Count_Functions>;
|
||||||
custom_css?: Maybe<Scalars['String']['output']>;
|
custom_css?: Maybe<Scalars['String']['output']>;
|
||||||
@ -3390,39 +3618,6 @@ export type Directus_Versions_Mutated = {
|
|||||||
key: Scalars['ID']['output'];
|
key: Scalars['ID']['output'];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Directus_Webhooks = {
|
|
||||||
__typename?: 'directus_webhooks';
|
|
||||||
actions: Array<Maybe<Scalars['String']['output']>>;
|
|
||||||
collections: Array<Maybe<Scalars['String']['output']>>;
|
|
||||||
data?: Maybe<Scalars['Boolean']['output']>;
|
|
||||||
headers?: Maybe<Scalars['JSON']['output']>;
|
|
||||||
headers_func?: Maybe<Count_Functions>;
|
|
||||||
id: Scalars['ID']['output'];
|
|
||||||
method?: Maybe<Scalars['String']['output']>;
|
|
||||||
migrated_flow?: Maybe<Directus_Flows>;
|
|
||||||
name: Scalars['String']['output'];
|
|
||||||
status?: Maybe<Scalars['String']['output']>;
|
|
||||||
url: Scalars['String']['output'];
|
|
||||||
was_active_before_deprecation: Scalars['Boolean']['output'];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
export type Directus_WebhooksMigrated_FlowArgs = {
|
|
||||||
filter?: InputMaybe<Directus_Flows_Filter>;
|
|
||||||
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
||||||
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
||||||
page?: InputMaybe<Scalars['Int']['input']>;
|
|
||||||
search?: InputMaybe<Scalars['String']['input']>;
|
|
||||||
sort?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Directus_Webhooks_Mutated = {
|
|
||||||
__typename?: 'directus_webhooks_mutated';
|
|
||||||
data?: Maybe<Directus_Webhooks>;
|
|
||||||
event?: Maybe<EventEnum>;
|
|
||||||
key: Scalars['ID']['output'];
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Global = {
|
export type Global = {
|
||||||
__typename?: 'global';
|
__typename?: 'global';
|
||||||
email: Scalars['String']['output'];
|
email: Scalars['String']['output'];
|
||||||
@ -4017,7 +4212,6 @@ export type Update_Appeal_Input = {
|
|||||||
|
|
||||||
export type Update_Article_Input = {
|
export type Update_Article_Input = {
|
||||||
id?: InputMaybe<Scalars['ID']['input']>;
|
id?: InputMaybe<Scalars['ID']['input']>;
|
||||||
title?: InputMaybe<Scalars['String']['input']>;
|
|
||||||
translations?: InputMaybe<Array<InputMaybe<Update_Article_Translations_Input>>>;
|
translations?: InputMaybe<Array<InputMaybe<Update_Article_Translations_Input>>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4233,7 +4427,6 @@ export type Version_Appeal = {
|
|||||||
export type Version_Article = {
|
export type Version_Article = {
|
||||||
__typename?: 'version_article';
|
__typename?: 'version_article';
|
||||||
id?: Maybe<Scalars['ID']['output']>;
|
id?: Maybe<Scalars['ID']['output']>;
|
||||||
title?: Maybe<Scalars['String']['output']>;
|
|
||||||
translations?: Maybe<Scalars['JSON']['output']>;
|
translations?: Maybe<Scalars['JSON']['output']>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4394,6 +4587,13 @@ export type AboutMeQueryQueryVariables = Exact<{
|
|||||||
|
|
||||||
export type AboutMeQueryQuery = { __typename?: 'Query', global_translations: Array<{ __typename?: 'global_translations', about?: string | null }> };
|
export type AboutMeQueryQuery = { __typename?: 'Query', global_translations: Array<{ __typename?: 'global_translations', about?: string | null }> };
|
||||||
|
|
||||||
|
export type SplashInfoQueryVariables = Exact<{
|
||||||
|
pageLang: Scalars['String']['input'];
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
|
export type SplashInfoQuery = { __typename?: 'Query', home_page_translations: Array<{ __typename?: 'home_page_translations', headline?: string | null, subheadline?: string | null, description?: string | null }> };
|
||||||
|
|
||||||
export type ContactsQueryQueryVariables = Exact<{ [key: string]: never; }>;
|
export type ContactsQueryQueryVariables = Exact<{ [key: string]: never; }>;
|
||||||
|
|
||||||
|
|
||||||
@ -4573,6 +4773,15 @@ export const AboutMeQueryDocument = new TypedDocumentString(`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`) as unknown as TypedDocumentString<AboutMeQueryQuery, AboutMeQueryQueryVariables>;
|
`) as unknown as TypedDocumentString<AboutMeQueryQuery, AboutMeQueryQueryVariables>;
|
||||||
|
export const SplashInfoDocument = new TypedDocumentString(`
|
||||||
|
query SplashInfo($pageLang: String!) {
|
||||||
|
home_page_translations(filter: {languages_code: {code: {_contains: $pageLang}}}) {
|
||||||
|
headline
|
||||||
|
subheadline
|
||||||
|
description
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`) as unknown as TypedDocumentString<SplashInfoQuery, SplashInfoQueryVariables>;
|
||||||
export const ContactsQueryDocument = new TypedDocumentString(`
|
export const ContactsQueryDocument = new TypedDocumentString(`
|
||||||
query ContactsQuery {
|
query ContactsQuery {
|
||||||
global {
|
global {
|
||||||
|
|||||||
@ -25,10 +25,6 @@ export default {
|
|||||||
"navigation.about": "About me",
|
"navigation.about": "About me",
|
||||||
"navigation.contacts": "Contacts",
|
"navigation.contacts": "Contacts",
|
||||||
/* Home page */
|
/* Home page */
|
||||||
"splash.headline": "Hello, I'am Sergey",
|
|
||||||
"splash.subheadline": "Fullstack web-developer & freelancer",
|
|
||||||
"splash.description":
|
|
||||||
"I develop websites and web applications of varying complexity, and also publish articles and tutorials on various IT topics.",
|
|
||||||
"splash.about": "about me",
|
"splash.about": "about me",
|
||||||
"splash.contact": "text me",
|
"splash.contact": "text me",
|
||||||
/* Recent articles */
|
/* Recent articles */
|
||||||
|
|||||||
@ -25,10 +25,6 @@ export default {
|
|||||||
"navigation.about": "Обо мне",
|
"navigation.about": "Обо мне",
|
||||||
"navigation.contacts": "Контакты",
|
"navigation.contacts": "Контакты",
|
||||||
/* Home page */
|
/* Home page */
|
||||||
"splash.headline": "Hello, I'am Sergey",
|
|
||||||
"splash.subheadline": "Fullstack web-developer & freelancer",
|
|
||||||
"splash.description":
|
|
||||||
"Я занимаюсь разработкой веб-сайтов и веб-приложений разной сложности, а также публикую статьи и туториалы на разные IT темы.",
|
|
||||||
"splash.about": "обо мне",
|
"splash.about": "обо мне",
|
||||||
"splash.contact": "написать мне",
|
"splash.contact": "написать мне",
|
||||||
/* Recent articles */
|
/* Recent articles */
|
||||||
|
|||||||
@ -17,6 +17,24 @@ export async function getAboutMe(pageLang: string) {
|
|||||||
return result.data.global_translations[0];
|
return result.data.global_translations[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getSplashInfo(pageLang: string) {
|
||||||
|
const SplashInfoQuery = graphql(`
|
||||||
|
query SplashInfo($pageLang: String!) {
|
||||||
|
home_page_translations(filter: { languages_code: { code: { _contains: $pageLang } } }) {
|
||||||
|
headline
|
||||||
|
subheadline
|
||||||
|
description
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
|
||||||
|
const result = await execute(SplashInfoQuery, { pageLang });
|
||||||
|
|
||||||
|
if (!result.data || result.data.home_page_translations.length === 0) return null;
|
||||||
|
|
||||||
|
return result.data.home_page_translations[0];
|
||||||
|
}
|
||||||
|
|
||||||
export async function getContacts() {
|
export async function getContacts() {
|
||||||
const ContactsQuery = graphql(`
|
const ContactsQuery = graphql(`
|
||||||
query ContactsQuery {
|
query ContactsQuery {
|
||||||
|
|||||||
@ -151,6 +151,6 @@ button {
|
|||||||
border: 1px solid var(--border-color-hover);
|
border: 1px solid var(--border-color-hover);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#disqus_thread svg {
|
#remark42 svg {
|
||||||
filter: none;
|
filter: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,11 +140,4 @@
|
|||||||
--icon-filter: invert(100%);
|
--icon-filter: invert(100%);
|
||||||
|
|
||||||
--image-filter: grayscale(50%);
|
--image-filter: grayscale(50%);
|
||||||
|
|
||||||
/*
|
|
||||||
https://sergeyski.com/css-color-scheme-and-iframes-lessons-learned-from-disqus-background-bug/
|
|
||||||
*/
|
|
||||||
iframe[src*="disqus.com"] {
|
|
||||||
color-scheme: light;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,8 +7,10 @@ import SplashLink from "@components/Splash/SplashLink.astro";
|
|||||||
import RecentArticles from "@components/RecentArticles.astro";
|
import RecentArticles from "@components/RecentArticles.astro";
|
||||||
import UIString from "@components/UIString.astro";
|
import UIString from "@components/UIString.astro";
|
||||||
import { getLanguageFromURL, useTranslation } from "@root/i18n/utils";
|
import { getLanguageFromURL, useTranslation } from "@root/i18n/utils";
|
||||||
|
import { getSplashInfo } from "../queries";
|
||||||
|
|
||||||
const pageLang = getLanguageFromURL(Astro.url.pathname);
|
const pageLang = getLanguageFromURL(Astro.url.pathname);
|
||||||
|
const data = await getSplashInfo(pageLang);
|
||||||
const t = useTranslation(Astro);
|
const t = useTranslation(Astro);
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -16,10 +18,10 @@ const t = useTranslation(Astro);
|
|||||||
<Splash>
|
<Splash>
|
||||||
<SplashHeading>
|
<SplashHeading>
|
||||||
<hgroup>
|
<hgroup>
|
||||||
<h1><UIString key={"splash.headline"} /></h1>
|
<h1>{data?.headline}</h1>
|
||||||
<h2>Fullstack <b>web-developer</b> & <b>freelancer</b></h2>
|
<h2>{data?.subheadline}</h2>
|
||||||
</hgroup>
|
</hgroup>
|
||||||
<p><UIString key={"splash.description"} /></p>
|
<p>{data?.description}</p>
|
||||||
</SplashHeading>
|
</SplashHeading>
|
||||||
<SplashLinks>
|
<SplashLinks>
|
||||||
<SplashLink icon="information" href="/about/"><UIString key={"splash.about"} /></SplashLink>
|
<SplashLink icon="information" href="/about/"><UIString key={"splash.about"} /></SplashLink>
|
||||||
|
|||||||
2
src/types/main.d.ts
vendored
@ -10,6 +10,8 @@ declare global {
|
|||||||
type: K,
|
type: K,
|
||||||
listener: (this: Window, ev: CustomEventMap[K]) => void
|
listener: (this: Window, ev: CustomEventMap[K]) => void
|
||||||
): void;
|
): void;
|
||||||
|
REMARK42: any;
|
||||||
|
remark_config: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CustomEventMap {
|
interface CustomEventMap {
|
||||||
|
|||||||