2263 Commits
Author SHA1 Message Date
tmshv 976170c391 Merge branch 'master' of github.com:tmshv/hudozka
Build Frontend and Deploy / Build Image (push) Failing after 12s
2026-09-25 16:08:01 +03:00
tmshv 45a6d7513b vitest 5
Build Frontend and Deploy / Build Image (push) Failing after 4m17s
2026-09-25 16:07:12 +03:00
tmshv a9c811969a biome 2.5 2026-09-25 16:05:00 +03:00
dependabot[bot] 978674a0d6 Bump postcss and next (#314)
Bumps [postcss](https://github.com/postcss/postcss) to 8.5.23 and updates ancestor dependency [next](https://github.com/vercel/next.js). These dependencies need to be updated together.


Updates `postcss` from 8.5.15 to 8.5.23
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.15...8.5.23)

Updates `next` from 16.2.6 to 16.3.0
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/compare/v16.2.6...v16.3.0)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.23
  dependency-type: indirect
- dependency-name: next
  dependency-version: 16.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-05 13:07:43 +03:00
dependabot[bot] cbebbef60a Bump vite from 8.0.10 to 8.0.16 (#302)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.10 to 8.0.16.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.16/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.0.16
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 13:21:07 +03:00
tmshv 87c413863c pb039 (#300) 2026-05-29 16:49:31 +03:00
dependabot[bot] 5ca6132903 Bump next from 16.2.4 to 16.2.6 (#299)
Bumps [next](https://github.com/vercel/next.js) from 16.2.4 to 16.2.6.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.2.4...v16.2.6)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-13 14:14:55 +03:00
tmshv 7b33d7d0a9 tags title layout improved 2026-04-26 01:18:47 +03:00
tmshv d9cf3a1536 Merge branch 'master' of github.com:tmshv/hudozka 2026-04-26 01:18:09 +03:00
tmshv 285527f43c Tags page (#298)
* Add spec for tag pages and tags index

* button no underscore

* Add implementation plan for tag pages and tags index

* Add TagListing type

* Extract createTag factory

* Add createTagPageCards factory

* Add getAllTagSlugs API

* Add getPagesByTag API

* Add getAllTagsWithCounts API

* Parallelize tag and page fetches in getAllTagsWithCounts

* Add Pagination component

* Use cx for Pagination class composition

* Add TagsIndex component

* Add /tags/[slug] route

* Parallelize params/searchParams awaits in /tags/[slug]

* Add /tags index route

* Activate tag buttons

* Add tag URLs to sitemap

* Mark PageGrid and Overlay as client components

* Filter zero-count tags from getAllTagSlugs

* Fix tag filter operator and draft filter for nullable field
2026-04-25 17:16:46 +03:00
tmshv 55e887aeec Add implementation plan for tag pages and tags index 2026-04-25 04:13:03 +03:00
tmshv 2a485fb0c2 button no underscore 2026-04-25 04:04:57 +03:00
tmshv 99885038fd Add spec for tag pages and tags index 2026-04-25 04:03:47 +03:00
tmshv 467a218d00 move to biome (#297)
* switch to biome

* writer format

* migrate format

* packages format

* hudozka format

* writer fix

* biome config updated

* migrate fix

* packages fix

* hudozka fix

* claude updated
2026-04-25 03:25:15 +03:00
tmshv 98dcaaa237 Breadcrumbs (#296)
* add breadcrumbs

* rm space

* move breadcrumbs to ui
2026-04-25 03:15:25 +03:00
dependabot[bot] ad9695127a Bump postcss from 8.5.8 to 8.5.10 in /apps/hudozka-writer (#295)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 02:04:26 +03:00
tmshv 29dfdc4d7c fix dockerfile 2026-04-25 01:55:02 +03:00
tmshv 7a6005461b fix card hover 2026-04-25 01:49:51 +03:00
tmshv 35e1d762ad Merge branch 'master' of github.com:tmshv/hudozka 2026-04-25 01:34:14 +03:00
tmshv f874b58dd9 Migrate to npm-workspaces monorepo (#294)
* spec update

* update md files

* add plan: monorepo

* feat: add empty apps and packages directories

* Add shared tsconfig.base.json

* feat add workspaces

* feat: move hudozka-writer into apps/

* feat: move migrate-to-pocketbase into apps/

* feat: split package.json for apps/hudozka workspace

* feat: extend tsconfig.base.json in apps/hudozka

* add dockerfile path

* feat: verify Phase 3 monorepo migration of Next app

* feat: scaffold @hudozka/utils package

* feat: add utils barrel export

* feat: extract utilities into hudozka-utils package

* feat: extract hooks into hudozka-hooks package

* Extract Box/Button/Panel/Title/Overlay into @hudozka/ui

* Scope Next ESLint rules to apps/hudozka in root flat config

* Update README and CLAUDE.md for monorepo layout

* disable image optimisation
2026-04-25 01:33:06 +03:00
tmshv 168d782a26 update md files 2026-04-24 21:41:05 +03:00
tmshv 8d1c212a00 spec update 2026-04-24 21:24:46 +03:00
tmshv 0665fa7ae7 rm strapi 2026-04-24 20:55:10 +03:00
tmshv 41fbb72216 rm sync 2026-04-24 20:54:41 +03:00
tmshv 53a822f503 next-env chage 2026-04-24 20:36:15 +03:00
tmshv 8bd52cabd6 move app to src 2026-04-24 20:36:06 +03:00
tmshv ef80f5366c move contacts to const 2026-04-24 20:31:34 +03:00
tmshv 1348eab71f rm hudozka-api 2026-04-24 20:26:30 +03:00
tmshv bc4e11d538 rm .vercelignore 2026-04-24 20:25:34 +03:00
tmshv 607f19bca4 update packages 2026-04-24 20:20:45 +03:00
tmshv 481676922f bump pb 2026-04-24 19:48:33 +03:00
dependabot[bot] 78b2c734fc Bump lxml from 4.9.1 to 6.1.0 in /modules/sync (#293)
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.1 to 6.1.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.1...lxml-6.1.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 6.1.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 13:38:31 +03:00
tmshv 54b142d531 rm cources from menu 2026-04-18 14:46:29 +03:00
dependabot[bot] 82be0c1234 Bump vite from 6.4.1 to 7.3.2 (#288)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.4.1 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 22:20:22 +03:00
dependabot[bot] f651c8dff2 Bump minimatch (#273)
Bumps  and [minimatch](https://github.com/isaacs/minimatch). These dependencies needed to be updated together.

Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.5 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 22:19:50 +03:00
dependabot[bot] e1c2be30ce Bump pillow from 12.1.1 to 12.2.0 in /modules/sync (#290)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 12.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 22:19:24 +03:00
dependabot[bot] 3f5099844e Bump happy-dom from 20.5.0 to 20.9.0 (#292)
Bumps [happy-dom](https://github.com/capricorn86/happy-dom) from 20.5.0 to 20.9.0.
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](https://github.com/capricorn86/happy-dom/compare/v20.5.0...v20.9.0)

---
updated-dependencies:
- dependency-name: happy-dom
  dependency-version: 20.9.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 22:19:00 +03:00
dependabot[bot] c338aed553 Bump lodash from 4.17.23 to 4.18.1 in /modules/hudozka-api (#285)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 21:31:36 +03:00
dependabot[bot] 412dc38526 Bump follow-redirects in /modules/hudozka-strapi-api (#291)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.6 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.6...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 18:47:09 +03:00
tmshv 3172e9c91e menu moved to const 2026-04-13 02:14:31 +03:00
dependabot[bot] ccca4237ac Bump path-to-regexp from 0.1.12 to 0.1.13 in /modules/hudozka-api (#283)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 01:52:32 +03:00
tmshv c7fb1a7fbe change image doamin 2026-04-12 23:14:16 +03:00
tmshv f3a7eddcd8 fix page migration 2026-04-12 23:14:16 +03:00
dependabot[bot] e98cf3ad11 Bump brace-expansion in /modules/hudozka-strapi-api (#286)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 22:40:34 +03:00
dependabot[bot] 213f37b3b9 Bump lodash-es from 4.17.23 to 4.18.1 in /modules/hudozka-strapi-api (#284)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 22:40:12 +03:00
dependabot[bot] b5f73ae875 Bump ajv from 6.12.6 to 6.14.0 in /modules/hudozka-strapi-api (#271)
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.6 to 6.14.0.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.6...v6.14.0)

---
updated-dependencies:
- dependency-name: ajv
  dependency-version: 6.14.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 22:39:47 +03:00
dependabot[bot] db605c3160 Bump pbkdf2 from 3.1.1 to 3.1.5 in /modules/hudozka-strapi-api (#269)
Bumps [pbkdf2](https://github.com/browserify/pbkdf2) from 3.1.1 to 3.1.5.
- [Changelog](https://github.com/browserify/pbkdf2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/browserify/pbkdf2/compare/v3.1.1...v3.1.5)

---
updated-dependencies:
- dependency-name: pbkdf2
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 22:39:23 +03:00
dependabot[bot] 0b4f34d5c1 Bump picomatch from 2.2.2 to 2.3.2 in /modules/hudozka-strapi-api (#281)
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.2.2 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.2.2...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 19:43:11 +03:00
dependabot[bot] 456f98eee0 Bump next from 16.1.7 to 16.2.3 (#289)
Bumps [next](https://github.com/vercel/next.js) from 16.1.7 to 16.2.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.7...v16.2.3)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 19:42:24 +03:00
tmshv 5397615322 move pocketbase to dir 2026-04-12 19:13:24 +03:00
tmshv ed3f93de53 PB + Writer (#287)
* add pb models

* api rules has updated to view public

* pb setup is completed

* add migrate script

* add pb migrations

* ignore storage

* add pocketbase SDK dependency

* change Tag.id and PageCardDto.id to string for PocketBase

* add DocV1 content block types

* add PB client singleton and PB record types

* rewrite factory for PocketBase record types

* rewrite api.ts for PocketBase SDK

* remove unused Strapi files, add PB to config

* mark Task 7 complete in plan

* feat: verify build, tests, and lint pass with PocketBase API layer

* move completed plan: 2026-04-06-pocketbase-api-layer.md

* scaffold hudozka-writer with Vite 8, React 19, TS 5.9, Tiptap

* add PocketBase client and DocV1 types to writer

* add Login component for PocketBase superuser auth

* add App shell with auth gate and page loader

* add DocV1 <-> Tiptap serialization layer

* mark Task 5 complete in writer redesign plan

* add custom Tiptap nodes for DocV1 block types

* add Tiptap editor with toolbar and save to PocketBase

* add image picker with browse and upload

* feat: verify writer build and complete integration task

* move completed plan: 2026-04-06-hudozka-writer-redesign.md

* add local env

* rm textblock from writer

* add writer editor improvements design spec

* add writer editor improvements implementation plan

* feat: use @tiptap/markdown for text block serialization

* feat: add global markdown/rendered toggle

* feat: add BlockMenu component for block type selection

* feat: add hover + button for block insertion

* feat: add slash commands for block insertion

* feat: add interactive file block editor with FilePicker

* feat: show resolved page titles in card grid block

* move completed plan: 2026-04-07-writer-editor-improvements.md

* writer ui improved

* pages migration

* spec: draft/publish workflow for hudozka-writer

* spec: rename draft_doc to draft in spec

* plan: writer draft/publish implementation

* plan has moved

* gitignores

* plans upd

* feat(writer): update PbPage type for draft/publish workflow

* feat(writer): add save/publish/discard handlers with dirty tracking

* feat(writer): add DraftBanner component

* feat(writer): add Publish button and update toolbar layout

* feat(writer): add published toggle and update duplicate for new schema

* docs: mark manual verification steps as skipped in writer draft/publish plan

* move completed plan: 20260407-writer-draft-publish.md

* feat(writer): add BlockActions component for inline block menus

* feat(writer): add draggable NodeViews for text blocks

* feat(writer): use BlockActions in custom block NodeViews

* feat(writer): replace floating BlockInsert with inline BlockActions

* fix(writer): ensure all block wrappers have position: relative for BlockActions

* chore: mark manual verification tasks as skipped in writer block actions plan

* move completed plan: 20260408-writer-block-actions.md

* writer update

* refactor(writer): simplify BlockActions to always-visible delete + drag handle

* feat(writer): add BlockInsert component for inserting blocks between nodes

* feat(writer): redesign block sidebar with always-visible actions and insert button

* move completed plan: 20260408-writer-block-actions-redesign.md

* add spec: textblock container redesign for writer editor

* feat(writer): add TextBlock container node definition

* feat(writer): replace DraggableXxx wrappers with TextBlock container

* feat(writer): update Editor extensions for TextBlock container

* feat(writer): add split button to BlockActions for text blocks

* feat(writer): update serialization for TextBlock container

* feat(writer): update BlockMenu and SlashCommands for TextBlock

* fix(writer): use Fragment.from() for replaceWith calls in BlockActions and SlashCommands

* move completed plan: 20260408-textblock-container.md

* add air
2026-04-12 19:02:03 +03:00
dependabot[bot] 907298779c Bump minimatch from 3.1.2 to 3.1.5 in /modules/hudozka-strapi-api (#272)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-06 18:53:27 +03:00
dependabot[bot] c9f9e15160 Bump markdown from 2.6.6 to 3.8.1 in /modules/sync (#276)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 2.6.6 to 3.8.1.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/commits/3.8.1)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.8.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-06 18:52:51 +03:00
dependabot[bot] 5381e18b96 Bump picomatch (#279)
Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-06 18:52:17 +03:00
tmshv dddc8fc0d0 hide instagram 2026-04-05 15:33:07 +03:00
dependabot[bot] fa0040efab Bump requests from 2.32.4 to 2.33.0 in /modules/sync (#280)
Bumps [requests](https://github.com/psf/requests) from 2.32.4 to 2.33.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.4...v2.33.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.33.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-26 20:58:01 +03:00
dependabot[bot] 0403dcd62d Bump flatted from 3.3.3 to 3.4.2 (#278)
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 12:44:00 +03:00
dependabot[bot] 620d23cf81 Bump next from 16.1.6 to 16.1.7 (#277)
Bumps [next](https://github.com/vercel/next.js) from 16.1.6 to 16.1.7.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.6...v16.1.7)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.1.7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 01:15:15 +03:00
dependabot[bot] 357f723482 Bump underscore from 1.13.1 to 1.13.8 in /modules/hudozka-api (#275)
Bumps [underscore](https://github.com/jashkenas/underscore) from 1.13.1 to 1.13.8.
- [Commits](https://github.com/jashkenas/underscore/compare/1.13.1...1.13.8)

---
updated-dependencies:
- dependency-name: underscore
  dependency-version: 1.13.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 15:56:27 +07:00
dependabot[bot] 92791180f2 Bump rollup from 4.57.1 to 4.59.0 (#274)
Bumps [rollup](https://github.com/rollup/rollup) from 4.57.1 to 4.59.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.57.1...v4.59.0)

---
updated-dependencies:
- dependency-name: rollup
  dependency-version: 4.59.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-06 13:06:32 +07:00
dependabot[bot] 9a5e888e06 Bump markdown-it from 14.1.0 to 14.1.1 (#267)
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 14.1.0 to 14.1.1.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.1.0...14.1.1)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-version: 14.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-06 13:05:52 +07:00
dependabot[bot] 287a19ade7 Bump qs and express in /modules/hudozka-api (#268)
Bumps [qs](https://github.com/ljharb/qs) to 6.14.2 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.13.0 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.13.0...v6.14.2)

Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-25 01:35:16 +07:00
dependabot[bot] eac1fc2591 Bump bn.js in /modules/hudozka-strapi-api (#270)
Bumps  and [bn.js](https://github.com/indutny/bn.js). These dependencies needed to be updated together.

Updates `bn.js` from 5.2.1 to 5.2.3
- [Release notes](https://github.com/indutny/bn.js/releases)
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/indutny/bn.js/compare/v5.2.1...v5.2.3)

Updates `bn.js` from 4.11.9 to 4.12.3
- [Release notes](https://github.com/indutny/bn.js/releases)
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/indutny/bn.js/compare/v5.2.1...v5.2.3)

---
updated-dependencies:
- dependency-name: bn.js
  dependency-version: 5.2.3
  dependency-type: indirect
- dependency-name: bn.js
  dependency-version: 4.12.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-25 00:32:52 +07:00
dependabot[bot] a613532c89 Bump pillow from 10.3.0 to 12.1.1 in /modules/sync (#266)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.3.0 to 12.1.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.3.0...12.1.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 12.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 22:08:12 +07:00
tmshv 5df43844f5 use es2020 2026-02-10 00:37:21 +07:00
tmshv a1e51e78f0 Pages -> App (#265)
* pages -> app

* add meta test

* fix gosuslugi
2026-02-09 00:25:06 +07:00
tmshv 0c8d74b21d node 24 2026-02-08 23:46:31 +07:00
tmshv 699c4f9c69 Update outdated dependencies (#264)
* update packages

* update next-seo to 7.1
2026-02-08 23:43:58 +07:00
tmshv 3df47621a2 next 16; react 19; node 24 (#263)
* next 16; react 19

* fix build errors

* add typecheck to workflow

* use node 24

* claude update
2026-02-08 23:07:25 +07:00
tmshv 60fb98ddeb git upd next conf (#262) 2026-02-08 22:27:10 +07:00
tmshv 05f7d4d13d Migrate sitemap to Next.js native app/sitemap.ts (#258)
* sitemap migration to next

* robots.txt migration

* rss refactoring

* claude upd

* add test
2026-02-08 21:46:57 +07:00
tmshv 0fd75a3b9a App refactoring (#257)
* add cache

* update Panel

* next app refacoring

* app style refactoring

* years refactroing
2026-02-08 16:34:08 +07:00
tmshv 9ee9bce197 Normalize interface naming — remove I prefix convention (#255)
* update pr workflow

* interface to types

* use consistent import

* import type syntax

* test plan note
2026-02-08 15:57:11 +07:00
tmshv 7ab9147183 fix any (#254) 2026-02-08 15:22:49 +07:00
tmshv 9f5f721bd0 update (#253) 2026-02-08 15:13:03 +07:00
tmshv dd9058b798 rm two packages for hooks (#251)
* rm two packages for hooks

* fix navigation
2026-02-08 13:31:58 +07:00
tmshv f4c5132d7c Move clamp function to lib directory (#250)
* clamp refactoring

* pr template
2026-02-08 12:34:25 +07:00
tmshv 562b4f6408 solve any problem (#248) 2026-02-08 12:22:52 +07:00
tmshv 6da5a7a07b fix docker build 2026-02-08 04:34:58 +07:00
tmshv 7eab9326e5 Remove unnecessary @types packages (#247)
* update dep in claude file

* update classnames and sharp to version that has own types
2026-02-08 04:11:01 +07:00
tmshv 820c1b3a29 Standalone setup (#208)
* init docker integration

* fix rights

* add github workflows
2026-02-08 03:51:33 +07:00
tmshv 79ab798f12 UI Tests (#246)
* adds components test setup

* add some ui tests
2026-02-08 03:49:06 +07:00
dependabot[bot] 7cce0bedb7 Bump lodash from 4.17.21 to 4.17.23 in /modules/hudozka-api (#219)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 03:29:59 +07:00
tmshv 8c57976663 Ymetrika update (#245)
* update claude with message about components

* yandex metrika to ts

* rm env

* add .env example

* use account from env

* add tests
2026-02-08 03:29:28 +07:00
dependabot[bot] 013578b518 Bump url-parse from 1.4.7 to 1.5.10 in /modules/hudozka-strapi-api (#221)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.10.
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.10)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-version: 1.5.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 02:59:14 +07:00
tmshv df50dfa02f date-fns 4 (#243) 2026-02-08 02:53:27 +07:00
dependabot[bot] 3bf29793c2 Bump lodash-es from 4.17.21 to 4.17.23 in /modules/hudozka-strapi-api (#218)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 02:37:17 +07:00
tmshv e4b7998a72 update README.md 2026-02-08 02:35:55 +07:00
tmshv 08a9a4b2d2 add claude file 2026-02-08 02:33:40 +07:00
tmshvandClaude Opus 4.6 f5a95f57c8 Add Vitest and unit tests for src/lib/ (#242)
* Add Vitest and unit tests for src/lib/ utilities

Closes #241

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update node types

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 02:32:06 +07:00
tmshv a5bd82eb3c Upgrade TypeScript 4.9 → 5.9 (#240)
* update ts

* upd ts to 5.9; upd gitignore; other
2026-02-08 02:05:51 +07:00
dependabot[bot] cdea55dfdf Bump tar-fs from 2.1.3 to 2.1.4 in /modules/hudozka-strapi-api (#214)
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.3 to 2.1.4.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 01:31:01 +07:00
dependabot[bot] 171631f091 Bump jws in /modules/hudozka-strapi-api (#215)
Bumps  and [jws](https://github.com/brianloveswords/node-jws). These dependencies needed to be updated together.

Updates `jws` from 3.2.2 to 3.2.3
- [Release notes](https://github.com/brianloveswords/node-jws/releases)
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianloveswords/node-jws/compare/v3.2.2...v3.2.3)

Updates `jws` from 4.0.0 to 4.0.1
- [Release notes](https://github.com/brianloveswords/node-jws/releases)
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianloveswords/node-jws/compare/v3.2.2...v3.2.3)

---
updated-dependencies:
- dependency-name: jws
  dependency-version: 3.2.3
  dependency-type: indirect
- dependency-name: jws
  dependency-version: 4.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 01:30:17 +07:00
tmshv a4b3068850 Migrate to ESLint 9 flat config (#239)
* eslint 9

* fix lint errors

* update package-lock.json
2026-02-08 01:29:39 +07:00
tmshv d9d8bbebe1 fix npm run build command 2026-02-08 01:23:20 +07:00
tmshv d645cec124 lock file updated 2026-02-08 01:14:38 +07:00
tmshv 0562bd559f Merge branch 'master' of github.com:tmshv/hudozka 2026-02-08 01:14:06 +07:00
tmshv a48577140a npm audit fix 2026-02-08 01:13:39 +07:00
dependabot[bot] 5dfe654c0e Bump js-yaml from 4.1.0 to 4.1.1 (#213)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 04:30:14 +07:00
tmshv 894d688fa6 Merge pull request #199 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/sha.js-2.4.12
Bump sha.js from 2.4.11 to 2.4.12 in /modules/hudozka-strapi-api
2025-10-24 19:15:38 +03:00
tmshv ece908bd39 Merge pull request #209 from tmshv/dependabot/npm_and_yarn/multi-c30bf1d5d2
Bump tar-fs
2025-10-24 19:15:06 +03:00
tmshv b55da97848 Merge pull request #210 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/lodash-es-4.17.21
Bump lodash-es from 4.17.20 to 4.17.21 in /modules/hudozka-strapi-api
2025-10-24 19:14:32 +03:00
tmshv cf625f3e25 Merge pull request #198 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/cipher-base-1.0.6
Bump cipher-base from 1.0.4 to 1.0.6 in /modules/hudozka-strapi-api
2025-10-24 19:14:07 +03:00
tmshv 0dad1a472c Merge pull request #197 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/multi-96c788614a
Bump on-headers and compression in /modules/hudozka-strapi-api
2025-10-24 19:13:37 +03:00
tmshv e7688f22d8 Merge pull request #196 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/brace-expansion-1.1.12
Bump brace-expansion from 1.1.11 to 1.1.12 in /modules/hudozka-strapi-api
2025-10-24 19:13:05 +03:00
dependabot[bot] 864acc5f80 Bump tar-fs
Bumps  and [tar-fs](https://github.com/mafintosh/tar-fs). These dependencies needed to be updated together.

Updates `tar-fs` from 2.1.1 to 2.1.4
- [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.1...v2.1.4)

Updates `tar-fs` from 3.0.4 to 3.1.1
- [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.1...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
- dependency-name: tar-fs
  dependency-version: 3.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 16:11:42 +00:00
tmshv a56f2078c5 Merge pull request #192 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/tar-fs-2.1.3
Bump tar-fs from 2.1.1 to 2.1.3 in /modules/hudozka-strapi-api
2025-10-24 19:10:21 +03:00
tmshv 95b8fbfa11 Merge pull request #212 from tmshv/issue-211
Issue 211
2025-10-24 14:54:13 +03:00
tmshv 6503405c85 fix html 2 2025-10-24 14:52:36 +03:00
tmshv 0dbf3547f1 fix html 2025-10-24 14:49:23 +03:00
tmshv f1cafcd7d7 rm qr files 2025-10-24 14:49:09 +03:00
tmshv 7c0cc6b35b rm qr files 2025-10-24 14:45:53 +03:00
tmshv d5a80377a4 qr -> link; add one more link 2025-10-24 14:44:45 +03:00
tmshv 0d68d9a6e6 Merge pull request #190 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/koa-2.16.1
Bump koa from 2.13.1 to 2.16.1 in /modules/hudozka-strapi-api
2025-10-24 14:42:16 +03:00
dependabot[bot] 9ed616290a Bump lodash-es from 4.17.20 to 4.17.21 in /modules/hudozka-strapi-api
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.17.21
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 04:00:28 +00:00
tmshv 2ad849ca0e Merge pull request #193 from tmshv/dependabot/pip/modules/sync/requests-2.32.4
Bump requests from 2.32.0 to 2.32.4 in /modules/sync
2025-09-15 00:21:25 +03:00
dependabot[bot] cb0e560133 Bump sha.js from 2.4.11 to 2.4.12 in /modules/hudozka-strapi-api
Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
- [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12)

---
updated-dependencies:
- dependency-name: sha.js
  dependency-version: 2.4.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 23:46:01 +00:00
tmshv 5bf69fc449 color text hsl to oklch 2025-08-26 02:17:01 +03:00
tmshv e4aa681400 format 2025-08-26 02:16:50 +03:00
tmshv 89716a05c6 Merge pull request #188 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/babel/runtime-7.26.10
Bump @babel/runtime from 7.15.3 to 7.26.10 in /modules/hudozka-strapi-api
2025-08-26 02:01:16 +03:00
tmshv ff6515d010 Merge pull request #186 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/babel/helpers-7.26.10
Bump @babel/helpers from 7.15.3 to 7.26.10 in /modules/hudozka-strapi-api
2025-08-26 02:00:52 +03:00
tmshv fcc12c1630 Merge pull request #205 from tmshv/issue-204
logo native dark style
2025-08-26 02:00:27 +03:00
tmshv 37e2fc9ea5 rewrit HudozkaLogo to use dark style natively 2025-08-26 01:52:03 +03:00
tmshv 73c02d34c4 format 2025-08-26 01:47:22 +03:00
tmshv 9dee686cfd Merge pull request #185 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/elliptic-6.6.1
Bump elliptic from 6.6.0 to 6.6.1 in /modules/hudozka-strapi-api
2025-08-26 00:09:42 +03:00
tmshv 9ed81634da Merge pull request #181 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/multi-6bc014718a
Bump path-to-regexp and express in /modules/hudozka-api
2025-08-26 00:09:03 +03:00
tmshv 52045044de Merge pull request #180 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/multi-e981fcb12d
Bump path-to-regexp and express in /modules/hudozka-strapi-api
2025-08-26 00:08:41 +03:00
tmshv 15bf1c195e Merge pull request #203 from tmshv/issue-202
Split Config and Menu
2025-08-26 00:08:16 +03:00
tmshv 9c50460296 rm unused imports 2025-08-25 23:59:58 +03:00
tmshv 2b09d224d1 404 fix 2025-08-25 23:57:47 +03:00
tmshv 945947aa22 rename config context to menu context; move config to state 2025-08-25 23:56:35 +03:00
tmshv 20c59affd7 add type module to package json 2025-08-25 23:53:28 +03:00
tmshv 516a4617c4 add wrap option to fix layout on mobile 2025-08-25 23:09:20 +03:00
tmshv c28e3f74ae Merge pull request #201 from tmshv/issue-200
Accessibility Panel
2025-08-25 22:04:05 +03:00
tmshv 08b87afb12 semi 2025-08-25 21:59:39 +03:00
tmshv e5023e7709 add play all button 2025-08-25 21:57:31 +03:00
tmshv e0a6ddcafc update accessibility panel 2025-08-25 21:14:00 +03:00
tmshv 85c0d8c4ab add initial accessibility panel 2025-08-25 19:05:44 +03:00
dependabot[bot] b31dffa4c5 Bump cipher-base from 1.0.4 to 1.0.6 in /modules/hudozka-strapi-api
Bumps [cipher-base](https://github.com/crypto-browserify/cipher-base) from 1.0.4 to 1.0.6.
- [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6)

---
updated-dependencies:
- dependency-name: cipher-base
  dependency-version: 1.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 15:15:30 +00:00
tmshv 605ff872e8 move from next lint to eslint 2025-08-20 18:38:40 +03:00
tmshv 5414821f56 use node 22 2025-08-20 18:31:42 +03:00
tmshv ab6bce9a73 use next 15.5 2025-08-20 18:28:03 +03:00
tmshv d70d8a8a7a rm google analytics tracker 2025-08-20 18:27:51 +03:00
dependabot[bot] 3dc5393841 Bump on-headers and compression in /modules/hudozka-strapi-api
Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together.

Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases)
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md)
- [Commits](https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0)

Updates `compression` from 1.7.4 to 1.8.1
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/compression/compare/1.7.4...v1.8.1)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-17 21:20:11 +00:00
dependabot[bot] 8f7f2f0110 Bump brace-expansion in /modules/hudozka-strapi-api
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-03 22:00:04 +00:00
tmshv a47142944b Merge pull request #195 from tmshv/dependabot/npm_and_yarn/next-15.3.4
Bump next from 15.3.1 to 15.3.4
2025-07-04 00:59:01 +03:00
dependabot[bot] df905c193e Bump next from 15.3.1 to 15.3.4
Bumps [next](https://github.com/vercel/next.js) from 15.3.1 to 15.3.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.1...v15.3.4)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.3.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-03 21:05:00 +00:00
dependabot[bot] 27534f251c Bump requests from 2.32.0 to 2.32.4 in /modules/sync
Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.0...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 08:26:46 +00:00
dependabot[bot] df55e834b3 Bump tar-fs from 2.1.1 to 2.1.3 in /modules/hudozka-strapi-api
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.1 to 2.1.3.
- [Commits](https://github.com/mafintosh/tar-fs/commits)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 06:16:39 +00:00
tmshv 9cf61de335 Merge pull request #191 from tmshv/dependabot/npm_and_yarn/babel/runtime-7.27.0
Bump @babel/runtime from 7.23.1 to 7.27.0
2025-04-26 23:15:54 +03:00
tmshv 6449845fd6 duplicate blind button in header 2025-04-26 16:17:39 +03:00
tmshv 343a364d9b next 15.3 2025-04-26 16:17:13 +03:00
dependabot[bot] f5f3bf4e01 Bump @babel/runtime from 7.23.1 to 7.27.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.1 to 7.27.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-24 17:56:05 +00:00
dependabot[bot] 45faccf27d Bump koa from 2.13.1 to 2.16.1 in /modules/hudozka-strapi-api
Bumps [koa](https://github.com/koajs/koa) from 2.13.1 to 2.16.1.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/compare/2.13.1...v2.16.1)

---
updated-dependencies:
- dependency-name: koa
  dependency-version: 2.16.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 13:29:26 +00:00
dependabot[bot] 3740e79d65 Bump @babel/runtime in /modules/hudozka-strapi-api
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.15.3 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 07:02:44 +00:00
dependabot[bot] acf5e451e5 Bump @babel/helpers in /modules/hudozka-strapi-api
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.15.3 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 19:46:41 +00:00
tmshv 4e3e8775f7 Merge branch 'master' of github.com:tmshv/hudozka 2025-02-21 18:09:37 +03:00
tmshv c95a9b88b5 update next file 2025-02-21 18:09:21 +03:00
tmshv 5f287ffc9c adds two qr codes at footer 2025-02-21 18:09:02 +03:00
tmshv ef9938eac8 rm empty line 2025-02-21 18:08:36 +03:00
dependabot[bot] 0874fa4336 Bump elliptic from 6.6.0 to 6.6.1 in /modules/hudozka-strapi-api
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.6.0 to 6.6.1.
- [Commits](https://github.com/indutny/elliptic/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-12 21:03:09 +00:00
tmshv 453a43e908 Merge pull request #182 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/nanoid-3.3.8
Bump nanoid from 3.3.4 to 3.3.8 in /modules/hudozka-strapi-api
2025-01-30 15:15:46 +03:00
dependabot[bot] d34279920f Bump nanoid from 3.3.4 to 3.3.8 in /modules/hudozka-strapi-api
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.4 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.4...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-11 01:08:52 +00:00
dependabot[bot] e02c2d2f23 Bump path-to-regexp and express in /modules/hudozka-api
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) to 0.1.12 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `path-to-regexp` from 0.1.10 to 0.1.12
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.10...v0.1.12)

Updates `express` from 4.21.0 to 4.21.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.2)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-06 02:51:21 +00:00
dependabot[bot] 8f1d82cb44 Bump path-to-regexp and express in /modules/hudozka-strapi-api
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `path-to-regexp` from 0.1.10 to 1.9.0
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.10...v1.9.0)

Updates `express` from 4.21.0 to 4.21.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.2)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-05 23:00:19 +00:00
tmshv 5a320d5751 Merge branch 'master' of github.com:tmshv/hudozka 2024-11-29 23:17:55 +03:00
tmshv 26685b66bb Merge pull request #179 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/multi-98a2c25ce6
Bump cross-spawn in /modules/hudozka-strapi-api
2024-11-29 23:16:29 +03:00
tmshv db6bb50ecb Merge pull request #178 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/elliptic-6.6.0
Bump elliptic from 6.5.4 to 6.6.0 in /modules/hudozka-strapi-api
2024-11-29 23:16:09 +03:00
tmshv 274b6c42f7 Merge pull request #168 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /modules/hudozka-strapi-api
2024-11-29 23:15:50 +03:00
tmshv 0be3d900fc Merge pull request #159 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/follow-redirects-1.15.6
Bump follow-redirects from 1.14.9 to 1.15.6 in /modules/hudozka-strapi-api
2024-11-29 23:15:27 +03:00
tmshv c8b6ba2828 Merge pull request #167 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/ws-6.2.3
Bump ws from 6.2.1 to 6.2.3 in /modules/hudozka-strapi-api
2024-11-29 23:15:02 +03:00
tmshv 03907d3b92 Merge pull request #153 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/babel/traverse-7.23.2
Bump @babel/traverse from 7.15.0 to 7.23.2 in /modules/hudozka-strapi-api
2024-11-29 23:14:36 +03:00
tmshv 938ec5e973 Merge branch 'master' of github.com:tmshv/hudozka 2024-11-29 23:13:55 +03:00
tmshv d1605cd160 Merge pull request #174 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/multi-d66d039ac5
Bump serve-static and express in /modules/hudozka-api
2024-11-29 23:12:56 +03:00
tmshv 20567d5234 Merge pull request #175 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/multi-cf87d80143
Bump send and express in /modules/hudozka-api
2024-11-29 23:12:23 +03:00
tmshv aeeef07bb1 Merge pull request #173 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/multi-9423f4c335
Bump body-parser and express in /modules/hudozka-api
2024-11-29 23:11:58 +03:00
tmshv 34279bb6f4 Merge pull request #172 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/multi-1d234c620e
Bump path-to-regexp and express in /modules/hudozka-api
2024-11-29 23:11:21 +03:00
tmshv c866ecdb1d Merge pull request #166 from tmshv/dependabot/npm_and_yarn/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3
2024-11-29 23:09:21 +03:00
tmshv d7fe111d09 adds gititnore for old strapi 2024-11-29 23:07:44 +03:00
tmshv 8ee120a42d Merge pull request #165 from tmshv/dependabot/pip/modules/sync/requests-2.32.0
Bump requests from 2.31.0 to 2.32.0 in /modules/sync
2024-11-29 23:04:01 +03:00
tmshv 4ce495a1cd update to next 15: use turbo, ts next config 2024-11-29 22:58:42 +03:00
tmshv 845cd2b327 fix img warnings 2024-11-29 22:52:31 +03:00
tmshv 7ea10f3f25 update next eslint package to same version as next itself 2024-11-29 22:52:15 +03:00
tmshv f13c7fc2bb adds mise 2024-11-29 22:43:59 +03:00
tmshv bb0d7a5b5e updated to react 18.3 2024-11-26 18:56:44 +03:00
tmshv 855959b19f updated to next 14 2024-11-26 18:56:05 +03:00
tmshv 21047227b8 apiGet stability improved 2024-11-26 18:54:32 +03:00
dependabot[bot] 10fa1e63c2 Bump cross-spawn in /modules/hudozka-strapi-api
Bumps  and [cross-spawn](https://github.com/moxystudio/node-cross-spawn). These dependencies needed to be updated together.

Updates `cross-spawn` from 7.0.3 to 7.0.6
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

Updates `cross-spawn` from 6.0.5 to 7.0.6
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 04:18:33 +00:00
dependabot[bot] 8c43ea84e3 Bump elliptic from 6.5.4 to 6.6.0 in /modules/hudozka-strapi-api
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.4 to 6.6.0.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.4...v6.6.0)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-30 05:49:06 +00:00
dependabot[bot] 45eb5751f8 Bump send and express in /modules/hudozka-api
Bumps [send](https://github.com/pillarjs/send) to 0.19.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `send` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 12:50:17 +00:00
dependabot[bot] 570434d2f4 Bump serve-static and express in /modules/hudozka-api
Bumps [serve-static](https://github.com/expressjs/serve-static) to 1.16.2 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `serve-static` from 1.15.0 to 1.16.2
- [Release notes](https://github.com/expressjs/serve-static/releases)
- [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md)
- [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: serve-static
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 12:50:08 +00:00
dependabot[bot] 654b804bc3 Bump body-parser and express in /modules/hudozka-api
Bumps [body-parser](https://github.com/expressjs/body-parser) to 1.20.3 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `body-parser` from 1.20.1 to 1.20.3
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.1...1.20.3)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 12:50:04 +00:00
dependabot[bot] 0762d87156 Bump path-to-regexp and express in /modules/hudozka-api
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) to 0.1.10 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `path-to-regexp` from 0.1.7 to 0.1.10
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.7...v0.1.10)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 12:50:04 +00:00
tmshv 460e8fc3cc Merge pull request #169 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/multi-d1b64f7343
Bump path-to-regexp and express in /modules/hudozka-strapi-api
2024-09-13 15:49:22 +03:00
dependabot[bot] 7bf3ec1d0c Bump path-to-regexp and express in /modules/hudozka-strapi-api
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `path-to-regexp` from 1.8.0 to 1.9.0
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v1.8.0...v1.9.0)

Updates `express` from 4.18.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.21.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 00:38:22 +00:00
tmshv cf075048b6 Merge pull request #158 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/ip-1.1.9
Bump ip from 1.1.5 to 1.1.9 in /modules/hudozka-strapi-api
2024-07-04 17:01:01 +03:00
dependabot[bot] 82b6304c8e Bump glob-parent from 5.1.1 to 5.1.2 in /modules/hudozka-strapi-api
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-28 05:15:02 +00:00
dependabot[bot] 46fb58cccf Bump ws from 6.2.1 to 6.2.3 in /modules/hudozka-strapi-api
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.1...6.2.3)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 08:28:27 +00:00
dependabot[bot] eb869b5140 Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-16 10:39:21 +00:00
dependabot[bot] 040ed731ba ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:30:23 +00:00
tmshv 41c7bd10fd Merge pull request #163 from tmshv/dependabot/pip/modules/sync/pymongo-4.6.3
Bump pymongo from 3.3.0 to 4.6.3 in /modules/sync
2024-05-03 20:16:23 +03:00
dependabot[bot] 5652cd09d7 Bump pymongo from 3.3.0 to 4.6.3 in /modules/sync
Bumps [pymongo](https://github.com/mongodb/mongo-python-driver) from 3.3.0 to 4.6.3.
- [Release notes](https://github.com/mongodb/mongo-python-driver/releases)
- [Changelog](https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst)
- [Commits](https://github.com/mongodb/mongo-python-driver/compare/3.3.0...4.6.3)

---
updated-dependencies:
- dependency-name: pymongo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-08 16:06:54 +00:00
tmshv 3fc64bc18f Merge pull request #162 from tmshv/dependabot/pip/modules/sync/pillow-10.3.0
Bump pillow from 10.2.0 to 10.3.0 in /modules/sync
2024-04-04 17:30:01 +03:00
dependabot[bot] 211439cbd0 Bump pillow from 10.2.0 to 10.3.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 16:21:25 +00:00
dependabot[bot] f7231cf49b Bump follow-redirects in /modules/hudozka-strapi-api
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.9 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.9...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-15 17:17:25 +00:00
dependabot[bot] a53108bb93 Bump ip from 1.1.5 to 1.1.9 in /modules/hudozka-strapi-api
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-21 20:02:05 +00:00
tmshv 6565c6ab95 Merge pull request #157 from tmshv/dependabot/pip/modules/sync/pillow-10.2.0
Bump pillow from 10.0.1 to 10.2.0 in /modules/sync
2024-01-23 12:26:15 +03:00
dependabot[bot] 59e40aa892 Bump pillow from 10.0.1 to 10.2.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.0.1 to 10.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.0.1...10.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 21:59:16 +00:00
tmshv 0b4d87b166 Merge pull request #149 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/debug-and-koa-ip-4.3.4
Bump debug and koa-ip in /modules/hudozka-strapi-api
2024-01-21 00:20:11 +03:00
tmshv ebbdb51f37 Merge pull request #155 from tmshv/dependabot/npm_and_yarn/sharp-0.32.6
Bump sharp from 0.31.0 to 0.32.6
2023-11-16 23:45:32 +03:00
dependabot[bot] cef0f2ba0a Bump sharp from 0.31.0 to 0.32.6
Bumps [sharp](https://github.com/lovell/sharp) from 0.31.0 to 0.32.6.
- [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.0...v0.32.6)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-16 19:01:27 +00:00
tmshv b9784c248e Merge pull request #154 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/browserify-sign-4.2.2
Bump browserify-sign from 4.2.1 to 4.2.2 in /modules/hudozka-strapi-api
2023-10-29 14:06:55 +03:00
dependabot[bot] 4d231ef090 Bump browserify-sign from 4.2.1 to 4.2.2 in /modules/hudozka-strapi-api
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 23:29:49 +00:00
dependabot[bot] 81d56eaab1 Bump @babel/traverse in /modules/hudozka-strapi-api
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.15.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 07:06:11 +00:00
tmshv e90e07337f Merge branch 'master' of github.com:tmshv/hudozka 2023-10-05 05:54:48 +03:00
tmshv 2e4328d55f add apple-mobile-web-app-capable 2023-10-05 05:54:33 +03:00
tmshv bd28c39f2a Merge pull request #150 from tmshv/dependabot/pip/modules/sync/pillow-10.0.1
Bump pillow from 9.3.0 to 10.0.1 in /modules/sync
2023-10-04 14:25:25 +03:00
dependabot[bot] 9005bdeb60 Bump pillow from 9.3.0 to 10.0.1 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.3.0 to 10.0.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.3.0...10.0.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 00:53:04 +00:00
dependabot[bot] dd93a3fa19 Bump debug and koa-ip in /modules/hudozka-strapi-api
Bumps [debug](https://github.com/debug-js/debug) and [koa-ip](https://github.com/nswbmw/koa-ip). These dependencies needed to be updated together.

Updates `debug` from 4.1.1 to 4.3.4
- [Release notes](https://github.com/debug-js/debug/releases)
- [Commits](https://github.com/debug-js/debug/compare/4.1.1...4.3.4)

Updates `koa-ip` from 2.1.0 to 2.1.3
- [Changelog](https://github.com/nswbmw/koa-ip/blob/master/History.md)
- [Commits](https://github.com/nswbmw/koa-ip/commits)

---
updated-dependencies:
- dependency-name: debug
  dependency-type: indirect
- dependency-name: koa-ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 05:03:24 +00:00
tmshv 0e2796453c sexy card hover 2023-09-25 18:44:38 +03:00
tmshv ac5a656f41 fix grid on mobile 2023-09-25 18:37:30 +03:00
tmshv f9d813c57b card grid wip fix 2023-09-25 18:06:32 +03:00
tmshv d7e3bad283 next file updated 2023-09-25 18:06:08 +03:00
tmshv f0fe786dc5 card update 2023-09-25 17:43:19 +03:00
tmshv 0b48f5ac92 next 13.5 2023-09-25 15:17:58 +03:00
tmshv 320768b6db add repeat for gosuslugi 2023-08-16 20:09:08 +03:00
tmshv ac3bbb825d fix gosuslugi 2023-08-16 17:23:15 +03:00
tmshv 69b1e5a9f7 Merge pull request #148 from tmshv/dependabot/npm_and_yarn/word-wrap-1.2.4
Bump word-wrap from 1.2.3 to 1.2.4
2023-07-19 13:26:11 +03:00
dependabot[bot] 2e6aea0ee4 Bump word-wrap from 1.2.3 to 1.2.4
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 22:18:21 +00:00
tmshv ee56a66aaf Merge pull request #147 from tmshv/dependabot/npm_and_yarn/semver-6.3.1
Bump semver from 6.3.0 to 6.3.1
2023-07-13 15:46:07 +03:00
dependabot[bot] 6cddf00716 Bump semver from 6.3.0 to 6.3.1
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-13 12:05:14 +00:00
tmshv 57b9b6260e Merge pull request #146 from tmshv/dependabot/pip/modules/sync/pypdf2-1.27.9
Bump pypdf2 from 1.27.5 to 1.27.9 in /modules/sync
2023-07-04 16:02:13 +03:00
dependabot[bot] c3011b8e95 Bump pypdf2 from 1.27.5 to 1.27.9 in /modules/sync
Bumps [pypdf2](https://github.com/py-pdf/PyPDF2) from 1.27.5 to 1.27.9.
- [Release notes](https://github.com/py-pdf/PyPDF2/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/1.27.9/CHANGELOG)
- [Commits](https://github.com/py-pdf/PyPDF2/compare/1.27.5...1.27.9)

---
updated-dependencies:
- dependency-name: pypdf2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 22:26:09 +00:00
tmshv 1502ac4238 Merge pull request #145 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/semver-and-mongodb--removed
Bump semver and mongodb in /modules/hudozka-api
2023-06-27 23:30:49 +03:00
dependabot[bot] f9d72c57e7 Bump semver and mongodb in /modules/hudozka-api
Removes [semver](https://github.com/npm/node-semver). It's no longer used after updating ancestor dependency [mongodb](https://github.com/mongodb/node-mongodb-native). These dependencies need to be updated together.


Removes `semver`

Updates `mongodb` from 3.5.3 to 3.7.4
- [Release notes](https://github.com/mongodb/node-mongodb-native/releases)
- [Changelog](https://github.com/mongodb/node-mongodb-native/blob/main/HISTORY.md)
- [Commits](https://github.com/mongodb/node-mongodb-native/compare/v3.5.3...v3.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
- dependency-name: mongodb
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 20:24:04 +00:00
tmshv 42c5dd2fb3 Merge branch 'master' of github.com:tmshv/hudozka 2023-06-07 16:25:12 +03:00
tmshv 239eceb653 eslint 8.42 2023-06-07 16:25:01 +03:00
tmshv cbc39c8db6 next update 2023-06-02 20:24:10 +04:00
tmshv 02354b31b4 Merge pull request #144 from tmshv/dependabot/pip/modules/sync/requests-2.31.0
Bump requests from 2.20.0 to 2.31.0 in /modules/sync
2023-05-23 12:39:59 +03:00
dependabot[bot] c1810f9ee3 Bump requests from 2.20.0 to 2.31.0 in /modules/sync
Bumps [requests](https://github.com/psf/requests) from 2.20.0 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.20.0...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 21:38:51 +00:00
tmshv d5466d2db7 Merge pull request #143 from tmshv/upd/next134
next 13.4
2023-05-05 03:48:04 +05:30
tmshv a1f7f16003 next 13.4 2023-05-05 03:09:56 +05:30
tmshv af85ed60b3 Merge pull request #142 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/sqlite3-5.1.5
Bump sqlite3 from 5.0.8 to 5.1.5 in /modules/hudozka-strapi-api
2023-04-10 11:53:34 +05:30
tmshv 2010f0c59f next 13.2 2023-03-14 17:31:21 +05:30
tmshv 032e7b3186 Merge branch 'master' of github.com:tmshv/hudozka 2023-03-14 17:27:13 +05:30
tmshv 526ec3f2cf update eslint to latest 2023-03-14 17:25:48 +05:30
dependabot[bot] b4987e4b70 Bump sqlite3 from 5.0.8 to 5.1.5 in /modules/hudozka-strapi-api
Bumps [sqlite3](https://github.com/TryGhost/node-sqlite3) from 5.0.8 to 5.1.5.
- [Release notes](https://github.com/TryGhost/node-sqlite3/releases)
- [Commits](https://github.com/TryGhost/node-sqlite3/compare/v5.0.8...v5.1.5)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 21:46:04 +00:00
tmshv b5aab63b07 Merge pull request #141 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/sequelize-and-strapi-plugin-users-permissions--removed
Bump sequelize and strapi-plugin-users-permissions in /modules/hudozka-strapi-api
2023-02-23 08:48:44 +05:30
dependabot[bot] cea30bf4f7 Bump sequelize and strapi-plugin-users-permissions
Removes [sequelize](https://github.com/sequelize/sequelize). It's no longer used after updating ancestor dependency [strapi-plugin-users-permissions](https://github.com/strapi/strapi). These dependencies need to be updated together.


Removes `sequelize`

Updates `strapi-plugin-users-permissions` from 3.6.8 to 3.6.11
- [Release notes](https://github.com/strapi/strapi/releases)
- [Commits](https://github.com/strapi/strapi/compare/v3.6.8...v3.6.11)

---
updated-dependencies:
- dependency-name: sequelize
  dependency-type: indirect
- dependency-name: strapi-plugin-users-permissions
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 02:50:36 +00:00
tmshv b9f8fcd14e Merge pull request #140 from tmshv/upd/next-image-updates
next/image updates
2023-02-09 20:38:05 +05:00
tmshv c1d33cf681 fix typo in FileCard component 2023-02-09 20:28:08 +05:00
tmshv c8ccda9433 rm unused image 2023-02-09 20:25:07 +05:00
tmshv 45b100ec15 move object fit out of image props 2023-02-09 20:24:57 +05:00
tmshv 5ef4e38d79 picture image style: add width/height for responsive 2023-02-09 20:18:09 +05:00
tmshv 208f75f350 rm layout from ui/Picture 2023-02-09 20:11:54 +05:00
tmshv abfe2e7d61 use image component api from next 13 2023-02-09 20:08:52 +05:00
tmshv 2e358fc609 card grid component props refactor 2023-02-09 20:08:35 +05:00
tmshv 7c8fd851b1 merge next-lib to remote/api 2023-02-09 19:55:09 +05:00
tmshv 780e9ac0e8 introduce remote/api 2023-02-09 19:49:34 +05:00
tmshv 727c0592ce use native tail and remove lodash 2023-02-09 19:32:30 +05:00
tmshv 1c0a28b25f add format command 2023-02-09 19:31:44 +05:00
tmshv c571e37cc2 tag list double quotes 2023-02-09 19:27:06 +05:00
tmshv e796e2fe84 Merge pull request #139 from tmshv/upd/maintenance-004
maintenance 4
2023-02-09 16:25:37 +05:00
tmshv 706c310458 rm a inside Link 2023-02-09 16:22:01 +05:00
tmshv 656c5884c8 add proculture tracker 2023-02-09 15:43:22 +05:00
tmshv 94f2634e56 next config js -> mjs 2023-02-09 15:33:39 +05:00
tmshv 03a388136d node types update 2023-02-09 15:28:04 +05:00
tmshv 3b9807a1de rm should 2023-02-09 15:27:06 +05:00
tmshv f14317dc0c eslint 8.33 2023-02-09 15:26:28 +05:00
tmshv 955d0cbe62 next-seo 5.15 2023-02-09 15:25:40 +05:00
tmshv d3368a4c5e bump typescript to 4.9 2023-02-09 15:24:51 +05:00
tmshv d643fb4b8a bump next to 13.1 2023-02-09 15:21:37 +05:00
tmshv 692671fba5 ingnore node modules at all levels 2023-02-09 15:01:45 +05:00
tmshv 9932ae621e move .next to dotfolders 2023-02-09 15:01:25 +05:00
tmshv a4542c57ba Merge pull request #126 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/passport-and-strapi-admin-0.6.0
Bump passport and strapi-admin in /modules/hudozka-strapi-api
2023-02-09 14:47:57 +05:00
tmshv 849bc74dd1 Merge pull request #135 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/ua-parser-js-0.7.33
Bump ua-parser-js from 0.7.23 to 0.7.33 in /modules/hudozka-strapi-api
2023-02-09 14:47:32 +05:00
tmshv 108b5dff10 Merge pull request #129 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/decode-uri-component-0.2.2
Bump decode-uri-component from 0.2.0 to 0.2.2 in /modules/hudozka-strapi-api
2023-02-09 14:47:10 +05:00
tmshv 1a7bec2fa4 Merge pull request #134 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/knex-2.4.0
Bump knex from 0.21.18 to 2.4.0 in /modules/hudozka-strapi-api
2023-02-09 14:46:48 +05:00
tmshv 15c26ccbce Merge pull request #137 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/http-cache-semantics-4.1.1
Bump http-cache-semantics from 4.1.0 to 4.1.1 in /modules/hudozka-strapi-api
2023-02-09 14:16:59 +05:00
dependabot[bot] ccc879ea9b Bump http-cache-semantics in /modules/hudozka-strapi-api
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 12:55:38 +00:00
tmshv 2cf6e1b9b8 Merge pull request #136 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/mongoose-5.13.15
Bump mongoose from 5.11.13 to 5.13.15 in /modules/hudozka-strapi-api
2023-02-01 15:49:10 +06:00
dependabot[bot] 521e399ec3 Bump mongoose from 5.11.13 to 5.13.15 in /modules/hudozka-strapi-api
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.11.13 to 5.13.15.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.11.13...5.13.15)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 03:48:06 +00:00
dependabot[bot] c4517b438f Bump ua-parser-js from 0.7.23 to 0.7.33 in /modules/hudozka-strapi-api
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.23 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.23...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 03:21:43 +00:00
dependabot[bot] 61e53bb5eb Bump knex from 0.21.18 to 2.4.0 in /modules/hudozka-strapi-api
Bumps [knex](https://github.com/knex/knex) from 0.21.18 to 2.4.0.
- [Release notes](https://github.com/knex/knex/releases)
- [Changelog](https://github.com/knex/knex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/knex/knex/commits/2.4.0)

---
updated-dependencies:
- dependency-name: knex
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 03:24:27 +00:00
tmshv 12ddde1d6d Merge pull request #133 from tmshv/dependabot/npm_and_yarn/json5-1.0.2
Bump json5 from 1.0.1 to 1.0.2
2023-01-08 13:54:49 +06:00
dependabot[bot] 1656d32d27 Bump json5 from 1.0.1 to 1.0.2
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 06:48:39 +00:00
tmshv 84f7d1db1f Merge pull request #130 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/qs-6.5.3
Bump qs from 6.5.2 to 6.5.3 in /modules/hudozka-strapi-api
2023-01-01 18:16:56 +06:00
dependabot[bot] 059c6776d7 Bump qs from 6.5.2 to 6.5.3 in /modules/hudozka-strapi-api
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 11:54:25 +00:00
tmshv d488f4d558 Merge pull request #132 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/express-4.18.2
Bump express from 4.17.1 to 4.18.2 in /modules/hudozka-strapi-api
2022-12-30 17:53:02 +06:00
dependabot[bot] 2b292f2e03 Bump express from 4.17.1 to 4.18.2 in /modules/hudozka-strapi-api
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.18.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:42:04 +00:00
tmshv f16c0abbef Merge pull request #131 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/qs-and-express-6.11.0
Bump qs and express in /modules/hudozka-api
2022-12-09 13:41:29 +06:00
dependabot[bot] dca4a3f01d Bump qs and express in /modules/hudozka-api
Bumps [qs](https://github.com/ljharb/qs) to 6.11.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.7.0 to 6.11.0
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.7.0...v6.11.0)

Updates `express` from 4.17.1 to 4.18.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-07 08:41:20 +00:00
dependabot[bot] 41daead65e Bump decode-uri-component in /modules/hudozka-strapi-api
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-03 14:30:42 +00:00
tmshv 4f4bdad604 Merge pull request #128 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/sharp-and-strapi-plugin-upload-0.31.1
Bump sharp and strapi-plugin-upload in /modules/hudozka-strapi-api
2022-12-03 20:30:13 +06:00
dependabot[bot] 61366a0078 Bump passport and strapi-admin in /modules/hudozka-strapi-api
Bumps [passport](https://github.com/jaredhanson/passport) to 0.6.0 and updates ancestor dependency [strapi-admin](https://github.com/strapi/strapi). These dependencies need to be updated together.


Updates `passport` from 0.4.1 to 0.6.0
- [Release notes](https://github.com/jaredhanson/passport/releases)
- [Changelog](https://github.com/jaredhanson/passport/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jaredhanson/passport/compare/v0.4.1...v0.6.0)

Updates `strapi-admin` from 3.6.8 to 3.6.11
- [Release notes](https://github.com/strapi/strapi/releases)
- [Commits](https://github.com/strapi/strapi/compare/v3.6.8...v3.6.11)

---
updated-dependencies:
- dependency-name: passport
  dependency-type: indirect
- dependency-name: strapi-admin
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-23 16:12:38 +00:00
dependabot[bot] ab56af7d13 Bump sharp and strapi-plugin-upload in /modules/hudozka-strapi-api
Bumps [sharp](https://github.com/lovell/sharp) to 0.31.1 and updates ancestor dependency [strapi-plugin-upload](https://github.com/strapi/strapi/tree/HEAD/packages/strapi-plugin-upload). These dependencies need to be updated together.


Updates `sharp` from 0.28.1 to 0.31.1
- [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.28.1...v0.31.1)

Updates `strapi-plugin-upload` from 3.6.8 to 3.6.11
- [Release notes](https://github.com/strapi/strapi/releases)
- [Commits](https://github.com/strapi/strapi/commits/v3.6.11/packages/strapi-plugin-upload)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: indirect
- dependency-name: strapi-plugin-upload
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-23 16:11:18 +00:00
tmshv 2ac6a2831f Merge pull request #127 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/parse-path-and-strapi-7.0.0
Bump parse-path and strapi in /modules/hudozka-strapi-api
2022-11-23 22:09:35 +06:00
dependabot[bot] 5ee90a4329 Bump parse-path and strapi in /modules/hudozka-strapi-api
Bumps [parse-path](https://github.com/IonicaBizau/parse-path) to 7.0.0 and updates ancestor dependency [strapi](https://github.com/strapi/strapi). These dependencies need to be updated together.


Updates `parse-path` from 4.0.4 to 7.0.0
- [Release notes](https://github.com/IonicaBizau/parse-path/releases)
- [Commits](https://github.com/IonicaBizau/parse-path/compare/4.0.4...7.0.0)

Updates `strapi` from 3.6.10 to 3.6.11
- [Release notes](https://github.com/strapi/strapi/releases)
- [Commits](https://github.com/strapi/strapi/compare/v3.6.10...v3.6.11)

---
updated-dependencies:
- dependency-name: parse-path
  dependency-type: indirect
- dependency-name: strapi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-23 11:35:10 +00:00
tmshv 004eaf9803 Merge pull request #124 from tmshv/dependabot/pip/modules/sync/pillow-9.3.0
Bump pillow from 9.0.1 to 9.3.0 in /modules/sync
2022-11-23 17:34:22 +06:00
dependabot[bot] 44ee60c9c3 Bump pillow from 9.0.1 to 9.3.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.1 to 9.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.1...9.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-22 10:30:54 +00:00
tmshv f610ed1385 Merge pull request #123 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/minimatch-3.1.2
Bump minimatch from 3.0.4 to 3.1.2 in /modules/hudozka-strapi-api
2022-11-15 12:19:30 +06:00
dependabot[bot] f92a9bf7c8 Bump minimatch from 3.0.4 to 3.1.2 in /modules/hudozka-strapi-api
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-13 07:15:39 +00:00
tmshv d0e926eb9c add ThemeColor component 2022-10-13 15:37:47 +06:00
tmshv 77650947fe Merge pull request #122 from tmshv/upd/maintenance-003
Maintenance 003
2022-10-13 15:21:40 +06:00
tmshv 2ea4fd8560 PageGrid blur stability improved 2022-10-13 15:17:44 +06:00
tmshv b9d6105d79 split navigation to two separate components for desktop and mobile 2022-10-13 15:17:31 +06:00
tmshv fdf6ee302f change icon set 2022-10-13 15:08:58 +06:00
tmshv 671bc94562 fix eye button 2022-10-13 14:55:31 +06:00
tmshv d66cefa75d import Signature dynamic 2022-10-13 14:53:49 +06:00
tmshv 6d4d495daf use radix-ui tooltip instead of rc-tooltip 2022-10-13 14:51:33 +06:00
tmshv 496d26481e add link to / for logo 2022-10-13 14:24:09 +06:00
tmshv 2353003a3b add important keyword 2022-10-13 14:19:08 +06:00
tmshv e75697819b add logo and other layout changes 2022-10-13 13:48:29 +06:00
tmshv 78e33e456c add HudozkaLogo component 2022-10-13 13:47:45 +06:00
tmshv da488654d6 bump date-fns to 2.29 2022-10-13 12:53:44 +06:00
tmshv e3714f8caa bumb eslint to 8.25 2022-10-13 12:52:20 +06:00
tmshv 0d23eefbb7 fix contrast theme on mobile 2022-10-13 12:50:15 +06:00
tmshv 792161b40d Merge pull request #121 from tmshv/upd/contrast
Add contrast theme
2022-10-12 16:48:05 +06:00
tmshv 1ef5b8553e store current theme in local storage 2022-10-12 16:36:33 +06:00
tmshv cb91aa22be contrast fonts fize bigger 2022-10-12 16:31:36 +06:00
tmshv 09628c8b96 add closed eye 2022-10-12 16:27:58 +06:00
tmshv 1e80a02a26 gosuslugi back + dynamic 2022-10-12 16:27:46 +06:00
tmshv 8d67524526 author comopnent fix 2022-10-12 16:27:27 +06:00
tmshv 041193034e title style update 2022-10-12 16:22:07 +06:00
tmshv 73566d3aca update 2022-10-12 15:52:27 +06:00
tmshv f899f75780 google font tag updated 2022-10-12 13:43:24 +06:00
tmshv dd2dc744a2 fix theme context initial value 2022-10-12 13:32:10 +06:00
tmshv 3fa99b28de add initial contrast theme 2022-10-12 13:30:39 +06:00
tmshv c4e13e8e1b next 12.3 2022-09-26 20:36:32 +03:00
tmshv 1f2cd2c83d Picture component improvements 2022-09-06 22:10:40 +03:00
tmshv f81bda7f46 move Picture to ui 2022-09-06 21:58:51 +03:00
tmshv 2512467bd1 hide mobile menu on navigate 2022-09-06 21:51:35 +03:00
tmshv f5a3bedfff disable overlay duraction (buggy on safari) 2022-09-06 21:51:10 +03:00
tmshv 6b348debdd Merge pull request #120 from tmshv/upd/maintenance-002
Maintenance 002
2022-09-06 21:20:23 +03:00
tmshv 458c3c35b3 404 use Box 2022-09-06 21:11:57 +03:00
tmshv aeb5a50d35 wrapper min-height moved to content part 2022-09-06 21:09:11 +03:00
tmshv 671f737d25 use Box instead of Block 2022-09-06 21:08:55 +03:00
tmshv c0694b0953 Box align 2022-09-06 21:03:42 +03:00
tmshv cced734dc4 remove unused Pager 2022-09-06 20:56:07 +03:00
tmshv 84a2d8551f Navigation component update 2022-09-06 20:54:37 +03:00
tmshv 733260f663 MenuToggle improved 2022-09-06 20:53:55 +03:00
tmshv c2146e82bb add ui Box 2022-09-06 20:53:29 +03:00
tmshv 1d1e41adea ui components updates 2022-09-06 20:37:24 +03:00
tmshv 160c66a0af Button css file rename 2022-09-06 20:03:09 +03:00
tmshv e2acd4f238 Picture placeholder fix 2022-09-06 19:05:51 +03:00
tmshv b1c37b7321 card style format 2022-09-06 19:05:38 +03:00
tmshv 94138a51ed card link fix 2022-09-06 19:05:30 +03:00
tmshv 12ed6775e8 rm items from config menu 2022-09-06 19:00:23 +03:00
tmshv c9628678d8 menu rewritten with radix-ui 2022-09-06 18:59:29 +03:00
tmshv e8a4ba054b Overlay components -> ui 2022-09-06 16:29:49 +03:00
tmshv 6c71a78fe6 Button component -> ui 2022-09-06 16:27:34 +03:00
tmshv ac8a54895f TagList eslint fix 2022-09-06 16:26:33 +03:00
tmshv 585d3ae75c Button update 2022-09-06 16:23:42 +03:00
tmshv 8ba8b0d05b eslint rules updated 2022-09-06 16:16:32 +03:00
tmshv 30c496f249 react 18 2022-09-06 16:16:14 +03:00
tmshv aa2522ba0f overlay and navigation changes 2022-09-06 16:00:28 +03:00
tmshv 5ce5f9b751 Merge pull request #119 from tmshv/upd/next-seo
next-seo
2022-09-06 15:24:02 +03:00
tmshv 1f11b40bd0 rm Meta component 2022-09-06 15:21:41 +03:00
tmshv 7581e23366 use next-seo on index page 2022-09-06 15:21:28 +03:00
tmshv d44db287de use next seo on slug page 2022-09-06 15:21:04 +03:00
tmshv a4ea8230e4 add next-seo package 2022-09-06 15:20:46 +03:00
tmshv 8470432568 _error -> 404 2022-09-06 15:09:03 +03:00
tmshv 5ca2213e02 Merge pull request #118 from tmshv/upd/maintenance-001
Maintenance 001
2022-09-06 14:56:40 +03:00
tmshv c9f9cbba48 double quotes switch to warn 2022-09-06 14:54:28 +03:00
tmshv 85bc8c4af5 double qutes eslint rule 2022-09-06 14:52:56 +03:00
tmshv 2e517cc7f7 fix eslint warnings 2022-09-06 14:46:16 +03:00
tmshv 501ce4d3d0 add eol-last rule 2022-09-06 14:42:16 +03:00
tmshv 0fec2fdbab move custom font to _document 2022-09-06 14:38:17 +03:00
tmshv 86a02a945b fix eslint errors 2022-09-06 14:34:50 +03:00
tmshv a732ec0640 rm unused createApiUrl 2022-09-06 14:28:08 +03:00
tmshv 6702eb22de now -> vercel 2022-09-06 14:23:52 +03:00
tmshv 0658fd4e9e add old eslint rules with some changes 2022-09-06 14:23:36 +03:00
tmshv ad96a7add2 Contacts update 2022-09-06 14:10:35 +03:00
tmshv d89917dcfd FileCard uses Link 2022-09-06 14:10:23 +03:00
tmshv 53bdc44065 File component use Link 2022-09-06 14:10:15 +03:00
tmshv 69904cd2dd use next/link in NotFound 2022-09-06 14:04:59 +03:00
tmshv 49e06abc79 config lint 2022-09-06 14:02:53 +03:00
tmshv 3138022619 NotFound component no jsx 2022-09-06 14:01:28 +03:00
tmshv c6786d197e fix missing displayName 2022-09-06 13:58:52 +03:00
tmshv 8064507eaf add lint script 2022-09-06 13:56:30 +03:00
tmshv b0d6cc80d9 eslint 8 2022-09-06 13:56:19 +03:00
tmshv b0a55191c7 use next lint 2022-09-06 13:55:50 +03:00
tmshv f692f74553 improve stability of encodeImageToBlurhash 2022-09-06 13:51:41 +03:00
tmshv 13c84f7520 encodeImageToBlurhash minor 2022-09-06 13:51:32 +03:00
tmshv 3794a926b5 rm requestGet 2022-09-06 13:46:56 +03:00
tmshv ecb81f756a meta to undefined in json 2022-09-06 13:46:42 +03:00
tmshv 8c3411905c sharp package updated 2022-09-06 13:40:26 +03:00
tmshv 0af4fd9ad3 use strict typescript finally 2022-09-06 13:37:18 +03:00
tmshv bc11fb8ed9 rm axios 2022-09-06 13:36:56 +03:00
tmshv 77ec77b3e1 meta typing fix 2022-09-06 13:29:44 +03:00
tmshv c3b809cc72 lib image typing fix 2022-09-06 13:29:33 +03:00
tmshv bec9bb2f03 markdown-it update 2022-09-06 13:26:52 +03:00
tmshv e973ef3969 lib/file typing fix 2022-09-06 13:08:26 +03:00
tmshv 1d31293b87 typescript 4.8 2022-09-06 13:08:00 +03:00
tmshv ccd34ec7f8 extract InsertBetweenFunction type 2022-09-06 13:06:24 +03:00
tmshv 73a9635129 rm unsed splibBy function 2022-09-06 13:06:04 +03:00
tmshv 15cdfc940f fix insertBetween typings 2022-09-06 13:05:02 +03:00
tmshv b6775d8bab Transition component typing fix 2022-09-06 12:57:53 +03:00
tmshv 89d0aa9926 MenuItem component typing fix 2022-09-06 12:54:15 +03:00
tmshv bfaeb00ae1 tsconfig format 2022-09-06 12:53:10 +03:00
tmshv 64b82db5dc next-env udpated 2022-09-06 12:51:27 +03:00
tmshv da737c56c5 next 12.2 2022-09-06 12:51:20 +03:00
tmshv 83dbf99e1d Merge pull request #117 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/moment-timezone-0.5.37
Bump moment-timezone from 0.5.32 to 0.5.37 in /modules/hudozka-strapi-api
2022-08-31 16:24:13 +03:00
dependabot[bot] 17c8d8ce34 Bump moment-timezone in /modules/hudozka-strapi-api
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.32 to 0.5.37.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.32...0.5.37)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-31 06:40:00 +00:00
tmshv 15fe48521f Merge pull request #104 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/urijs-1.19.11
Bump urijs from 1.19.5 to 1.19.11 in /modules/hudozka-strapi-api
2022-08-26 02:05:22 +03:00
tmshv 1b3e083344 Merge pull request #116 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/nanoid-3.3.4
Bump nanoid from 3.1.25 to 3.3.4 in /modules/hudozka-strapi-api
2022-08-23 17:50:08 +03:00
dependabot[bot] b254669a9e Bump urijs from 1.19.5 to 1.19.11 in /modules/hudozka-strapi-api
Bumps [urijs](https://github.com/medialize/URI.js) from 1.19.5 to 1.19.11.
- [Release notes](https://github.com/medialize/URI.js/releases)
- [Changelog](https://github.com/medialize/URI.js/blob/gh-pages/CHANGELOG.md)
- [Commits](https://github.com/medialize/URI.js/compare/v1.19.5...v1.19.11)

---
updated-dependencies:
- dependency-name: urijs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 14:47:06 +00:00
dependabot[bot] ca2da86da3 Bump nanoid from 3.1.25 to 3.3.4 in /modules/hudozka-strapi-api
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.25 to 3.3.4.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.25...3.3.4)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 14:46:27 +00:00
tmshv f0197a2552 Merge pull request #107 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/strapi-3.6.10
Bump strapi from 3.6.8 to 3.6.10 in /modules/hudozka-strapi-api
2022-08-23 17:45:13 +03:00
tmshv f4d4228f47 Merge pull request #103 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/async-2.6.4
Bump async from 2.6.3 to 2.6.4 in /modules/hudozka-strapi-api
2022-08-21 12:28:38 +03:00
tmshv 1a77d63039 Merge pull request #100 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6 in /modules/hudozka-strapi-api
2022-08-21 00:12:58 +03:00
tmshv 839f7a557d Merge pull request #101 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/axios-0.21.4
Bump axios from 0.21.1 to 0.21.4 in /modules/hudozka-strapi-api
2022-08-15 21:57:56 +03:00
tmshv 9ab8af3125 Merge pull request #113 from tmshv/dependabot/pip/modules/sync/lxml-4.9.1
Bump lxml from 4.6.5 to 4.9.1 in /modules/sync
2022-08-15 20:30:29 +03:00
tmshv 2da6286878 Merge pull request #114 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/moment-2.29.4
Bump moment from 2.29.1 to 2.29.4 in /modules/hudozka-strapi-api
2022-08-01 21:17:23 +03:00
tmshv 2bf26aac56 Merge pull request #115 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/terser-4.8.1
Bump terser from 4.8.0 to 4.8.1 in /modules/hudozka-strapi-api
2022-08-01 15:37:55 +03:00
dependabot[bot] 616d5e0bac Bump terser from 4.8.0 to 4.8.1 in /modules/hudozka-strapi-api
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-22 00:59:51 +00:00
dependabot[bot] ac5043485a Bump moment from 2.29.1 to 2.29.4 in /modules/hudozka-strapi-api
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-10 13:21:09 +00:00
tmshv ef32d4d9d5 Merge pull request #108 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/eventsource-1.1.1
Bump eventsource from 1.0.7 to 1.1.1 in /modules/hudozka-strapi-api
2022-07-10 16:19:46 +03:00
dependabot[bot] 9185170cd3 Bump lxml from 4.6.5 to 4.9.1 in /modules/sync
Bumps [lxml](https://github.com/lxml/lxml) from 4.6.5 to 4.9.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.5...lxml-4.9.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 20:28:47 +00:00
dependabot[bot] 6f1cca7945 Bump strapi from 3.6.8 to 3.6.10 in /modules/hudozka-strapi-api
Bumps [strapi](https://github.com/strapi/strapi) from 3.6.8 to 3.6.10.
- [Release notes](https://github.com/strapi/strapi/releases)
- [Commits](https://github.com/strapi/strapi/compare/v3.6.8...v3.6.10)

---
updated-dependencies:
- dependency-name: strapi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 09:54:07 +00:00
tmshv 21226cf2a8 Merge pull request #112 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/parse-url-6.0.2
Bump parse-url from 6.0.0 to 6.0.2 in /modules/hudozka-strapi-api
2022-07-06 12:52:02 +03:00
dependabot[bot] b64925e00f Bump parse-url from 6.0.0 to 6.0.2 in /modules/hudozka-strapi-api
Bumps [parse-url](https://github.com/IonicaBizau/parse-url) from 6.0.0 to 6.0.2.
- [Release notes](https://github.com/IonicaBizau/parse-url/releases)
- [Commits](https://github.com/IonicaBizau/parse-url/commits)

---
updated-dependencies:
- dependency-name: parse-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 02:25:49 +00:00
dependabot[bot] 1885e3d58c Bump minimist from 1.2.5 to 1.2.6 in /modules/hudozka-strapi-api
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-09 19:33:40 +00:00
tmshv 1196365f45 Merge pull request #111 from tmshv/gosuslugi-works
Gosuslugi fix
2022-06-09 22:32:56 +03:00
tmshv 7ea9d2d08a Merge pull request #106 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/sqlite3-5.0.8
Bump sqlite3 from 5.0.2 to 5.0.8 in /modules/hudozka-strapi-api
2022-06-09 22:31:06 +03:00
tmshv bb1815900a Merge pull request #92 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/simple-get-3.1.1
Bump simple-get from 3.1.0 to 3.1.1 in /modules/hudozka-strapi-api
2022-06-09 22:30:45 +03:00
tmshv 7a124ff0a3 Merge pull request #109 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/cross-fetch-3.1.5
Bump cross-fetch from 3.0.6 to 3.1.5 in /modules/hudozka-strapi-api
2022-06-09 22:30:19 +03:00
tmshv 9096b21fc4 fix gosuslugi 2022-06-09 22:29:24 +03:00
tmshv 815cd1defe Merge pull request #110 from tmshv/gosuslugi
Gosuslugi
2022-06-06 17:19:05 +03:00
tmshv e6c2b6ddfe add gosuslugi component 2022-06-06 17:07:54 +03:00
tmshv 20d747eea3 ansi-regex upd 2022-06-01 18:49:51 +03:00
tmshv 2bac7ec9f5 Merge pull request #90 from tmshv/dependabot/npm_and_yarn/markdown-it-12.3.2
Bump markdown-it from 10.0.0 to 12.3.2
2022-06-01 18:49:12 +03:00
tmshv b1ffc4d723 Merge pull request #95 from tmshv/dependabot/npm_and_yarn/follow-redirects-1.14.8
Bump follow-redirects from 1.14.4 to 1.14.8
2022-06-01 18:48:44 +03:00
dependabot[bot] edeff216c5 Bump cross-fetch from 3.0.6 to 3.1.5 in /modules/hudozka-strapi-api
Bumps [cross-fetch](https://github.com/lquixada/cross-fetch) from 3.0.6 to 3.1.5.
- [Release notes](https://github.com/lquixada/cross-fetch/releases)
- [Commits](https://github.com/lquixada/cross-fetch/compare/v3.0.6...v3.1.5)

---
updated-dependencies:
- dependency-name: cross-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 15:47:58 +00:00
dependabot[bot] 43131e4377 Bump eventsource from 1.0.7 to 1.1.1 in /modules/hudozka-strapi-api
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 15:47:54 +00:00
tmshv a291ec5796 Merge pull request #98 from tmshv/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-06-01 18:47:36 +03:00
dependabot[bot] 9e2ad9072d Bump markdown-it from 10.0.0 to 12.3.2
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 10.0.0 to 12.3.2.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/10.0.0...12.3.2)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 15:47:15 +00:00
tmshv 9ec055cfb9 Merge pull request #94 from tmshv/dependabot/npm_and_yarn/ajv-6.12.6
Bump ajv from 6.12.2 to 6.12.6
2022-06-01 18:47:05 +03:00
dependabot[bot] f36604a810 Bump sqlite3 from 5.0.2 to 5.0.8 in /modules/hudozka-strapi-api
Bumps [sqlite3](https://github.com/TryGhost/node-sqlite3) from 5.0.2 to 5.0.8.
- [Release notes](https://github.com/TryGhost/node-sqlite3/releases)
- [Changelog](https://github.com/TryGhost/node-sqlite3/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TryGhost/node-sqlite3/compare/v5.0.2...v5.0.8)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 15:47:03 +00:00
tmshv f9383f3530 Merge pull request #105 from tmshv/upd/2022-01
UPD 2022-01
2022-06-01 18:46:01 +03:00
tmshv e119925a9b rm page document/slug 2022-06-01 18:43:15 +03:00
tmshv 8a31ac1567 next 12 2022-06-01 18:17:56 +03:00
tmshv ce1073ef25 update sharp to work under m1 2022-06-01 18:13:41 +03:00
tmshv 350bb1f09e Merge pull request #97 from tmshv/dependabot/pip/modules/sync/pillow-9.0.1
Bump pillow from 9.0.0 to 9.0.1 in /modules/sync
2022-04-24 14:25:27 +03:00
dependabot[bot] 5df8c46248 Bump pillow from 9.0.0 to 9.0.1 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.0...9.0.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 14:59:33 +00:00
dependabot[bot] e721a77efa Bump async from 2.6.3 to 2.6.4 in /modules/hudozka-strapi-api
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 14:59:29 +00:00
dependabot[bot] 8199bfd8af Bump axios from 0.21.1 to 0.21.4 in /modules/hudozka-strapi-api
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 14:59:28 +00:00
tmshv 8aafa24a8a Merge pull request #99 from tmshv/dependabot/pip/modules/sync/pypdf2-1.27.5
Bump pypdf2 from 1.26.0 to 1.27.5 in /modules/sync
2022-04-23 17:58:45 +03:00
dependabot[bot] d02eb6ed0d Bump pypdf2 from 1.26.0 to 1.27.5 in /modules/sync
Bumps [pypdf2](https://github.com/py-pdf/PyPDF2) from 1.26.0 to 1.27.5.
- [Release notes](https://github.com/py-pdf/PyPDF2/releases)
- [Changelog](https://github.com/py-pdf/PyPDF2/blob/main/CHANGELOG)
- [Commits](https://github.com/py-pdf/PyPDF2/compare/1.26.0...1.27.5)

---
updated-dependencies:
- dependency-name: pypdf2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-22 22:06:14 +00:00
dependabot[bot] 01c17ffc1e Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 04:29:11 +00:00
dependabot[bot] 6c80e0875f Bump follow-redirects from 1.14.4 to 1.14.8
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.4 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.4...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 06:11:44 +00:00
dependabot[bot] dcc8213b1d Bump ajv from 6.12.2 to 6.12.6
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.2 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.2...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 01:27:16 +00:00
dependabot[bot] 9830883661 Bump simple-get from 3.1.0 to 3.1.1 in /modules/hudozka-strapi-api
Bumps [simple-get](https://github.com/feross/simple-get) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/feross/simple-get/releases)
- [Commits](https://github.com/feross/simple-get/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: simple-get
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-09 12:49:05 +00:00
tmshv 6752524589 Merge pull request #88 from tmshv/dependabot/npm_and_yarn/next-11.1.3
Bump next from 11.1.1 to 11.1.3
2022-02-09 15:48:24 +03:00
tmshv 2e70ff3521 Merge pull request #89 from tmshv/dependabot/pip/modules/sync/lxml-4.6.5
Bump lxml from 4.6.3 to 4.6.5 in /modules/sync
2022-01-16 21:36:43 +03:00
dependabot[bot] 5fcf3762de Bump lxml from 4.6.3 to 4.6.5 in /modules/sync
Bumps [lxml](https://github.com/lxml/lxml) from 4.6.3 to 4.6.5.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.3...lxml-4.6.5)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 09:56:36 +00:00
tmshv bfeb3f8145 Merge pull request #91 from tmshv/dependabot/pip/modules/sync/pillow-9.0.0
Bump pillow from 8.3.2 to 9.0.0 in /modules/sync
2022-01-14 12:55:28 +03:00
dependabot[bot] 4bbd0043b3 Bump pillow from 8.3.2 to 9.0.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.3.2...9.0.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 02:15:06 +00:00
dependabot[bot] 87d94a7fe4 Bump next from 11.1.1 to 11.1.3
Bumps [next](https://github.com/vercel/next.js) from 11.1.1 to 11.1.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v11.1.1...v11.1.3)

---
updated-dependencies:
- dependency-name: next
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-09 01:24:55 +00:00
tmshv 875d41f802 enable Picture alt 2021-09-26 21:35:10 +03:00
tmshv 726fa1dd33 custom font definiton moved to src style 2021-09-26 21:34:49 +03:00
tmshv 9992c9dbb7 rc-tooltip style import moved to FileCard 2021-09-26 21:17:32 +03:00
tmshv 8b03741fb3 file card mobile layout 2021-09-22 17:04:02 +03:00
tmshv 2be00d53a4 content wide rm 2021-09-22 16:05:46 +03:00
tmshv b25f8eb0e9 Footer update 2021-09-22 15:56:40 +03:00
tmshv b6dc49beda article li line-height 2021-09-22 15:46:47 +03:00
tmshv e609422715 Wrapper fix footer floating; style to module css 2021-09-22 15:46:33 +03:00
tmshv 7559db5460 slug page fix ts errors 2021-09-22 15:30:06 +03:00
tmshv 39a1f4bb87 Merge pull request #86 from tmshv/dependabot/npm_and_yarn/axios-0.21.2
Bump axios from 0.21.1 to 0.21.2
2021-09-22 15:21:10 +03:00
tmshv b778f61e92 Merge pull request #87 from tmshv/upd/card-blur
card images blur
2021-09-22 15:20:42 +03:00
tmshv e68a55c73d factory fix 2021-09-22 15:14:48 +03:00
tmshv 3f49183997 document page menu fix 2021-09-22 15:12:57 +03:00
tmshv 794281c02c apiGet update 2021-09-22 14:05:45 +03:00
tmshv 42fdf429e2 card images blur 2021-09-22 13:33:29 +03:00
tmshv 6f3632fa15 fix factory undefined 2021-09-22 00:29:46 +03:00
tmshv 8c8a0e60f4 factory typing fix 2021-09-22 00:23:06 +03:00
dependabot[bot] 41cc5ffb68 Bump axios from 0.21.1 to 0.21.2
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 21:21:57 +00:00
tmshv 8260e3cf34 blur placeholder on article images 2021-09-22 00:21:19 +03:00
tmshv df229b5e8c text component updates + performance improved 2021-09-21 21:22:15 +03:00
tmshv 968da68929 next ts upd 2021-09-21 21:20:41 +03:00
tmshv 25f36ad9d1 rm displaying picture w/h 2021-09-21 21:18:56 +03:00
tmshv 0249c5873b wide picture support back 2021-09-21 16:23:24 +03:00
tmshv a55d474336 add Picture component for displaying images in articles with h/v/s layout support 2021-09-21 16:07:30 +03:00
tmshv 1bd80aa0b2 index page revalidate 30 2021-09-20 14:33:58 +03:00
tmshv 1d5b3cf80a index page typing 2021-09-20 14:33:47 +03:00
tmshv 5fc6712fda document page fix 2021-09-18 17:37:22 +03:00
tmshv 2446b23423 Merge branch 'master' of github.com:tmshv/hudozka 2021-09-18 17:32:52 +03:00
tmshv bc2f1f78fd menu from api 2021-09-18 17:31:54 +03:00
tmshv 7e856bce18 cover stability 2021-09-18 17:31:06 +03:00
tmshv a169ff7b58 Merge pull request #84 from tmshv/dependabot/npm_and_yarn/next-11.1.1
Bump next from 11.1.0 to 11.1.1
2021-09-08 14:49:10 +03:00
tmshv 2de225396c Merge pull request #85 from tmshv/dependabot/pip/modules/sync/pillow-8.3.2
Bump pillow from 8.2.0 to 8.3.2 in /modules/sync
2021-09-08 14:45:21 +03:00
dependabot[bot] e1ef01c284 Bump pillow from 8.2.0 to 8.3.2 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.2.0 to 8.3.2.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.2.0...8.3.2)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-08 01:42:45 +00:00
dependabot[bot] 450af84b2d Bump next from 11.1.0 to 11.1.1
Bumps [next](https://github.com/vercel/next.js) from 11.1.0 to 11.1.1.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v11.1.0...v11.1.1)

---
updated-dependencies:
- dependency-name: next
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 18:43:17 +00:00
tmshv 51938fb276 strapi menu model 2021-08-30 18:22:27 +03:00
tmshv 8d9751866c strapi 3.6.8 2021-08-30 18:13:23 +03:00
tmshv 6dceff6c85 api fixes 2021-08-30 17:05:30 +03:00
tmshv 70094eab73 FileCard updatd 2021-08-30 16:43:51 +03:00
tmshv 8331af7aaa npm audit fix 2021-08-29 20:02:22 +03:00
tmshv 9fd3e13824 rm console.log 2021-08-29 20:00:05 +03:00
tmshv 4923d80545 ts 4.4 2021-08-29 19:59:53 +03:00
tmshv c37e5551ad next 11.1 2021-08-29 19:58:25 +03:00
tmshv 4ea54bc692 dev script changed to next dev 2021-08-29 19:17:57 +03:00
tmshv 1dcb565c71 Merge pull request #78 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/underscore-1.13.1
Bump underscore from 1.9.2 to 1.13.1 in /modules/hudozka-api
2021-07-06 18:46:06 +03:00
tmshv 13c617e4d5 Merge pull request #81 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21 in /modules/hudozka-api
2021-07-05 18:09:12 +03:00
dependabot[bot] 4a6fae4153 Bump lodash from 4.17.19 to 4.17.21 in /modules/hudozka-api
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-02 13:47:58 +00:00
tmshv 3c736c4955 Merge pull request #80 from tmshv/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21
2021-07-02 16:47:10 +03:00
tmshv cce4e15d74 Merge pull request #79 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/bson-1.1.6
Bump bson from 1.1.3 to 1.1.6 in /modules/hudozka-api
2021-06-20 12:31:45 +03:00
tmshv 85279d33ca Merge pull request #82 from tmshv/dependabot/pip/modules/sync/pillow-8.2.0
Bump pillow from 8.1.1 to 8.2.0 in /modules/sync
2021-06-09 13:35:58 +03:00
dependabot[bot] 40d90d46ad Bump pillow from 8.1.1 to 8.2.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.1.1 to 8.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.1.1...8.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 20:58:46 +00:00
dependabot[bot] 507ece2fe1 Bump lodash from 4.17.19 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 03:19:54 +00:00
dependabot[bot] 2ff9a4fb20 Bump bson from 1.1.3 to 1.1.6 in /modules/hudozka-api
Bumps [bson](https://github.com/mongodb/js-bson) from 1.1.3 to 1.1.6.
- [Release notes](https://github.com/mongodb/js-bson/releases)
- [Changelog](https://github.com/mongodb/js-bson/blob/v1.1.6/HISTORY.md)
- [Commits](https://github.com/mongodb/js-bson/compare/v1.1.3...v1.1.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-09 07:16:39 +00:00
dependabot[bot] 8bdd6fe409 Bump underscore from 1.9.2 to 1.13.1 in /modules/hudozka-api
Bumps [underscore](https://github.com/jashkenas/underscore) from 1.9.2 to 1.13.1.
- [Release notes](https://github.com/jashkenas/underscore/releases)
- [Commits](https://github.com/jashkenas/underscore/compare/1.9.2...1.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 02:56:40 +00:00
tmshv 34ce05b060 move sign to static props 2021-04-05 23:33:17 +03:00
tmshv 8a88b59f70 base page getStaticProps typing improved 2021-04-05 23:33:04 +03:00
tmshv cd2800c79d Merge pull request #77 from tmshv/upd/file-sign
File signature
2021-04-05 20:25:46 +03:00
tmshv 97f484dbcd Signature on hover and click 2021-04-05 20:19:52 +03:00
tmshv eb01275b2e Sign.key -> Sign.signature 2021-04-05 20:19:41 +03:00
tmshv 3a1b4354db add file sign and some refactoring 2021-04-05 20:12:45 +03:00
tmshv 58bcd8b857 Merge pull request #76 from tmshv/upd/next-101
next 10.1
2021-04-05 17:15:30 +03:00
tmshv a3bfa59725 enable webpack 5 2021-04-05 17:09:20 +03:00
tmshv badc92d0e0 temporary disable sitemap/feed generation 2021-04-05 17:09:04 +03:00
tmshv 63ffaf6b20 next env refactoring 2021-04-05 17:08:45 +03:00
tmshv 40ecd8b39e next 10.1 2021-04-05 17:01:41 +03:00
tmshv 3e0c4304b1 package-lock v2 2021-04-05 17:00:28 +03:00
tmshv 32ce81a51d Merge pull request #75 from tmshv/dependabot/pip/modules/sync/lxml-4.6.3
Bump lxml from 4.6.2 to 4.6.3 in /modules/sync
2021-03-26 20:31:04 +03:00
dependabot[bot] bf82ece69e Bump lxml from 4.6.2 to 4.6.3 in /modules/sync
Bumps [lxml](https://github.com/lxml/lxml) from 4.6.2 to 4.6.3.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.2...lxml-4.6.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-26 17:17:05 +00:00
tmshv d4516441ad Merge pull request #74 from tmshv/dependabot/pip/modules/sync/pyyaml-5.4
Bump pyyaml from 5.1 to 5.4 in /modules/sync
2021-03-26 20:16:38 +03:00
dependabot[bot] 000b4f4b30 Bump pyyaml from 5.1 to 5.4 in /modules/sync
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.1 to 5.4.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/5.1...5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-25 23:27:43 +00:00
tmshv c14dc862e0 Merge pull request #73 from tmshv/dependabot/pip/modules/sync/pillow-8.1.1
Bump pillow from 7.1.0 to 8.1.1 in /modules/sync
2021-03-22 12:43:27 +03:00
dependabot[bot] dc3206894c Bump pillow from 7.1.0 to 8.1.1 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 7.1.0 to 8.1.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/7.1.0...8.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-19 11:10:49 +00:00
tmshv df6a1de7db some size and headers style changed 2021-02-23 14:18:16 +03:00
tmshv 05cb9c4cef PageGrid.Date uses css modules 2021-02-23 14:17:30 +03:00
tmshv c98064e6de Merge pull request #72 from tmshv/upd/strapi-350
strapi 3.5.0
2021-02-20 14:07:47 +03:00
tmshv e62bbe4f15 Merge pull request #71 from tmshv/upd/strapi-breadcrumbs-to-parent
breadcrumbs relation -> parent
2021-02-18 16:54:44 +03:00
tmshv 7ccb334375 strapi updated to 3.5.0
package-lock v2
2021-02-18 16:54:14 +03:00
tmshv 9dcfd28525 breadcrumbs relation -> parent 2021-02-18 16:51:10 +03:00
tmshv 399935a979 Merge pull request #70 from tmshv/upd/rm-data-folders
rm old data folders
2021-02-18 16:31:11 +03:00
tmshv 15cf1f09c8 rm obsolette folders from .nowignore 2021-02-18 15:05:39 +03:00
tmshv e11392c6a7 rm forestry and data folders 2021-02-18 14:53:47 +03:00
tmshv 290702dc15 Merge pull request #69 from tmshv/upd/next-fallback-revalidate
fallback/revalidate
2021-02-18 13:22:28 +03:00
tmshv 7d10ea27f0 fallback true; revalidate 30; show simple loader 2021-02-18 13:13:25 +03:00
tmshv bc07643b11 7.0.0 2021-02-17 19:53:29 +03:00
tmshv 8ef299f876 some layout updates 2021-02-17 19:52:01 +03:00
tmshv aa21c21dfb Merge pull request #67 from tmshv/upd/strapi-integration
Strapi integration
2021-02-17 19:49:00 +03:00
tmshv 1aba284498 rm share from page 2021-02-17 19:10:32 +03:00
tmshv fb4217020f dark theme text colors contrast increased 2021-02-17 19:10:21 +03:00
tmshv eb8d8b37a5 rm ImageSize and couple of functions from image lib 2021-02-17 19:10:01 +03:00
tmshv bf4377d614 page card cover alt 2021-02-17 19:09:29 +03:00
tmshv 5087b47343 rm likely and instagram scripts 2021-02-17 18:09:27 +03:00
tmshv a35cd38bd9 updated title and other layout changes 2021-02-17 17:46:22 +03:00
tmshv 9d31f30199 tokens is not optional
drop join tokens
2021-02-17 17:45:48 +03:00
tmshv b945faded0 home page no wide 2021-02-17 17:34:48 +03:00
tmshv d11981e2cc kazimir image style changed 2021-02-17 17:12:17 +03:00
tmshv f4f2487220 rm hr at the end of page 2021-02-17 16:58:08 +03:00
tmshv 0a4002dd44 secont text color contrast increased 2021-02-17 16:57:50 +03:00
tmshv c5d1780b35 page content width 75% 2021-02-17 16:57:38 +03:00
tmshv aec42b4fc5 Image improved 2021-02-17 16:57:25 +03:00
tmshv a2a0932d33 fix factory 2021-02-17 15:20:28 +03:00
tmshv a890b1bb75 no trailing slash 2021-02-17 15:17:46 +03:00
tmshv 52378d3929 ts target is es6 2021-02-17 15:17:20 +03:00
tmshv 7c47e4b0d6 card grid factory stability improved 2021-02-17 15:17:05 +03:00
tmshv b39edfc072 PageGrid margin changed 2021-02-17 15:16:47 +03:00
tmshv 7e72e41f00 CardGrid style changed a bit 2021-02-17 15:16:32 +03:00
tmshv cb237f66e4 remove PageCardData type 2021-02-17 14:11:59 +03:00
tmshv 88bb059094 strapi card grid support 2021-02-17 14:10:49 +03:00
tmshv bd70a480ed Merge pull request #68 from tmshv/upd/strapi-grid-component
Strapi CardGrid
2021-02-17 13:42:13 +03:00
tmshv 67ddf36897 strapi add CardGrid 2021-02-17 13:27:50 +03:00
tmshv 10c27f0ad5 factory imports optimisation 2021-02-17 11:25:44 +03:00
tmshv a87e2deab8 handle youtube embeds 2021-02-17 11:23:22 +03:00
tmshv 00d3f4c989 vk embed 2021-02-17 10:47:34 +03:00
tmshv 4f5f3bb9d7 tags from strapi 2021-02-17 10:41:42 +03:00
tmshv 546c4ffa0e rm debug token 2021-02-16 22:30:25 +03:00
tmshv b3c9b51ffe slug page format 2021-02-16 22:28:32 +03:00
tmshv 39a0a0e1de add missing increment 2021-02-16 22:28:23 +03:00
tmshv b6bc96e47f slug page get all pages 2021-02-16 22:17:12 +03:00
tmshv deed1b2e8d update gitignore 2021-02-16 22:00:26 +03:00
tmshv fb670391f5 rm .babelrc 2021-02-16 22:00:14 +03:00
tmshv 3961d4ae90 slug page missing key prop 2021-02-16 21:44:14 +03:00
tmshv 30e7706f79 rm collective page (will be strapi based) 2021-02-16 21:00:45 +03:00
tmshv a8a3fb1718 npm scripts updates 2021-02-16 20:53:52 +03:00
tmshv 82c9b88f77 slug page improvements 2021-02-16 20:53:28 +03:00
tmshv 5ccec9e2ba get all urls strapi integration 2021-02-16 20:07:31 +03:00
tmshv 87f4f6a1b8 home page strapi integration 2021-02-16 20:04:32 +03:00
tmshv 91982b8c99 piece of strapi integration 2021-02-13 19:01:34 +03:00
tmshv 00197d4f9a add image config to next config 2021-02-13 14:33:21 +03:00
tmshv fc9ff7f1b2 Youtube moved to component 2021-02-04 05:34:28 +03:00
tmshv 1b303d79f4 next 10.0.6 2021-02-04 05:27:58 +03:00
tmshv a774cbe57b react 17.0.1 2021-02-04 05:26:02 +03:00
tmshv a809da989e strapi change admin logo 2021-01-31 22:24:49 +03:00
tmshv 2afc6ea4c0 strapi hudozka.tag component 2021-01-31 22:23:54 +03:00
tmshv 06506e1d8a strapi page settings changes 2021-01-31 22:09:06 +03:00
tmshv 3a78ae4e07 strapi some settings changes 2021-01-31 21:35:05 +03:00
tmshv 253a24ffee add more fields to pages 2021-01-31 21:34:49 +03:00
tmshv c7b329f4df strapi tag update 2021-01-31 04:02:17 +03:00
tmshv c5a54e487c strapi hudozka.image caption field 2021-01-31 04:01:56 +03:00
tmshv d446e549a6 hudozka api file/image dto added filepath 2021-01-31 01:03:34 +03:00
tmshv dfeed175e9 rm yarn.lock 2021-01-27 03:19:36 +03:00
tmshv ebb9eb2c12 add slug to Page 2021-01-27 03:19:13 +03:00
tmshv 1af1c4e0bf Merge pull request #63 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/immer-8.0.1
Bump immer from 7.0.15 to 8.0.1 in /modules/hudozka-strapi-api
2021-01-27 03:08:15 +03:00
tmshv 34ddab073c Merge pull request #64 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/highlight.js-10.5.0
Bump highlight.js from 10.4.0 to 10.5.0 in /modules/hudozka-strapi-api
2021-01-27 03:07:50 +03:00
tmshv 739f33c34a Merge pull request #66 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/ini-1.3.8
Bump ini from 1.3.5 to 1.3.8 in /modules/hudozka-strapi-api
2021-01-27 03:07:22 +03:00
tmshv 6a0e68477f Merge pull request #65 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/axios-0.21.1
Bump axios from 0.20.0 to 0.21.1 in /modules/hudozka-strapi-api
2021-01-27 03:06:56 +03:00
tmshv 3689beba7d Merge pull request #62 from tmshv/dependabot/npm_and_yarn/modules/hudozka-strapi-api/urijs-1.19.5
Bump urijs from 1.19.2 to 1.19.5 in /modules/hudozka-strapi-api
2021-01-27 03:06:28 +03:00
tmshv 82dbe83ca5 strapi node version 12+ 2021-01-27 01:29:23 +03:00
dependabot[bot] 4732c9f37f Bump ini from 1.3.5 to 1.3.8 in /modules/hudozka-strapi-api
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 22:17:58 +00:00
dependabot[bot] 9bb0c1f085 Bump axios from 0.20.0 to 0.21.1 in /modules/hudozka-strapi-api
Bumps [axios](https://github.com/axios/axios) from 0.20.0 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.20.0...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 22:17:31 +00:00
dependabot[bot] dcb01845a9 Bump highlight.js from 10.4.0 to 10.5.0 in /modules/hudozka-strapi-api
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.4.0 to 10.5.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.4.0...10.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 22:17:29 +00:00
dependabot[bot] da28571522 Bump immer from 7.0.15 to 8.0.1 in /modules/hudozka-strapi-api
Bumps [immer](https://github.com/immerjs/immer) from 7.0.15 to 8.0.1.
- [Release notes](https://github.com/immerjs/immer/releases)
- [Commits](https://github.com/immerjs/immer/compare/v7.0.15...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 22:17:23 +00:00
dependabot[bot] dfb33b3ed2 Bump urijs from 1.19.2 to 1.19.5 in /modules/hudozka-strapi-api
Bumps [urijs](https://github.com/medialize/URI.js) from 1.19.2 to 1.19.5.
- [Release notes](https://github.com/medialize/URI.js/releases)
- [Changelog](https://github.com/medialize/URI.js/blob/gh-pages/CHANGELOG.md)
- [Commits](https://github.com/medialize/URI.js/compare/v1.19.2...v1.19.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 22:14:34 +00:00
tmshv d0a277d100 Merge pull request #61 from tmshv/upd/strapi
Strapi Integration
2021-01-27 01:09:55 +03:00
tmshv 6c122be1c7 add home page 2021-01-27 01:03:02 +03:00
tmshv 6f7648e15d add hudozka related apis and components 2021-01-27 00:30:56 +03:00
tmshv f8ff53355e readme update 2021-01-27 00:30:14 +03:00
tmshv 4844a319df fix wrong strapi-plugin-content-manager version 2021-01-27 00:29:52 +03:00
tmshv 744b7a8b27 strapi env example changes 2021-01-27 00:21:29 +03:00
tmshv 8745af028b strapi docker conf 2021-01-26 22:04:17 +03:00
tmshv c9a1505168 setup DO uploader for media files 2021-01-26 20:59:15 +03:00
tmshv 6ba4052ecb strapi 3.4.5 2021-01-26 17:54:43 +03:00
tmshv abc6f41d0a strapi node version changed to 14 2021-01-26 17:50:18 +03:00
tmshv 557996c4c9 update strapi to 3.4.4 2021-01-26 00:26:11 +03:00
tmshv bc6fc693c0 add initial hudozka-strapi-api 2021-01-25 23:53:05 +03:00
tmshv c1083b3ab8 Merge pull request #58 from tmshv/upd/next-954
next 9.5.4
2021-01-25 23:18:56 +03:00
tmshv c1a96894e8 Merge pull request #59 from tmshv/dependabot/npm_and_yarn/axios-0.21.1
Bump axios from 0.19.2 to 0.21.1
2021-01-25 23:18:21 +03:00
tmshv 0f40f052f7 Merge pull request #57 from tmshv/dependabot/pip/modules/sync/pillow-7.1.0
Bump pillow from 6.2.0 to 7.1.0 in /modules/sync
2021-01-25 23:17:50 +03:00
tmshv ffd27d3221 Merge pull request #60 from tmshv/dependabot/pip/modules/sync/lxml-4.6.2
Bump lxml from 3.6.1 to 4.6.2 in /modules/sync
2021-01-25 23:17:13 +03:00
dependabot[bot] 45abaeff48 Bump lxml from 3.6.1 to 4.6.2 in /modules/sync
Bumps [lxml](https://github.com/lxml/lxml) from 3.6.1 to 4.6.2.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-3.6.1...lxml-4.6.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-07 23:24:29 +00:00
dependabot[bot] 1afd0d9589 Bump axios from 0.19.2 to 0.21.1
Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 20:48:42 +00:00
tmshv e1b206d8fb next 9.5.4 2020-11-19 20:10:22 +03:00
dependabot[bot] 88032bdbf6 Bump pillow from 6.2.0 to 7.1.0 in /modules/sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 6.2.0 to 7.1.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/6.2.0...7.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-19 16:36:21 +00:00
tmshv 4d28f4fa7d Merge pull request #56 from tmshv/upd/rm-opa
rm opa
2020-11-19 19:35:45 +03:00
tmshv 1ea216d63b rm khramov 2020-11-19 18:50:38 +03:00
tmshv 5d2a97d995 rm opa 2020-11-19 18:42:05 +03:00
tmshv 73aa95b6d3 tsconfig absolute import improved 2020-09-07 00:09:46 +03:00
tmshv 26a6eb3642 trailing slash option renamed 2020-09-07 00:09:01 +03:00
tmshv 5f28fa5859 next 9.5 2020-09-06 21:34:01 +03:00
tmshv f17cf945b7 typescript 4 2020-09-06 21:29:05 +03:00
tmshv 783dcc355e typescript 3.9 2020-09-06 21:17:35 +03:00
tmshv eb8512ca66 Merge pull request #54 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/bl-2.2.1
Bump bl from 2.2.0 to 2.2.1 in /modules/hudozka-api
2020-09-06 21:15:00 +03:00
dependabot[bot] 3d85f0067e Bump bl from 2.2.0 to 2.2.1 in /modules/hudozka-api
Bumps [bl](https://github.com/rvagg/bl) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v2.2.0...v2.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-03 19:03:23 +00:00
tmshv 81e19054a3 Merge pull request #53 from tmshv/dependabot/npm_and_yarn/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3
2020-08-03 14:33:59 +03:00
dependabot[bot] dc4b778bb3 Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 13:41:27 +00:00
tmshv be377f0e0f Merge pull request #51 from tmshv/dependabot/npm_and_yarn/modules/hudozka-api/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19 in /modules/hudozka-api
2020-07-20 22:12:28 +03:00
tmshv 3d27a74afa Merge pull request #52 from tmshv/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-07-20 22:11:59 +03:00
dependabot[bot] b45f24858b Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-19 14:25:26 +00:00
dependabot[bot] eb292af4d6 Bump lodash from 4.17.15 to 4.17.19 in /modules/hudozka-api
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-19 14:22:10 +00:00
tmshv cfc286b706 Merge pull request #50 from tmshv/refactoring/google-fonts
google fonts import changed
2020-05-29 00:59:49 +03:00
tmshv cd9351396a upd shadow font 2020-05-29 00:34:00 +03:00
tmshv 9d72dd3bb8 shadow font preload 2020-05-29 00:07:24 +03:00
tmshv a659f32ff2 rm google link preconnect 2020-05-28 23:59:07 +03:00
tmshv a9215ac1fe google fonts import changed 2020-05-28 23:53:17 +03:00
tmshv 9d2e305eeb next 944 2020-05-28 16:16:43 +03:00
tmshv f09d1b025f use Roboto font family 2020-05-28 03:17:10 +03:00
tmshv 8cad7f2b26 online edu menu item 2020-05-28 03:16:50 +03:00
tmshv 8068d97b7e add eslint 2020-05-27 20:21:50 +03:00
tmshv 4d29225bc5 typograf updated 2020-05-27 18:53:55 +03:00
tmshv 7340843574 Merge pull request #49 from tmshv/next94
next updated to 9.4
2020-05-27 18:52:31 +03:00
tmshv bf7db5b226 fallback false 2020-05-27 18:43:11 +03:00
tmshv 6808117b9f next updated to 9.4 2020-05-27 18:35:34 +03:00
tmshv e2828affef npm update 2020-04-08 18:06:06 +03:00
tmshv 3db191bd79 v6.13 2020-03-29 02:17:27 +03:00
tmshv d1c0410d5e kke 2020-03-29 02:15:49 +03:00
tmshv 69f3144573 Page props typing improved 2020-03-29 02:15:25 +03:00
tmshv 3ddd883f39 rm test 2020-03-29 02:06:32 +03:00
tmshv 9abf6f1ca4 Merge pull request #48 from tmshv/fix/css-modules
CSS modules
2020-03-29 02:03:55 +03:00
tmshv 1d5cea146c Menu style fix 2020-03-29 01:59:53 +03:00
tmshv 83ffaa361c use builtin next css support 2020-03-29 01:42:14 +03:00
tmshv d65aba19a0 components uses css modules; other refactoring 2020-03-29 01:41:10 +03:00
tmshv 0cd61e0ed9 sync simplified 2020-03-29 01:39:06 +03:00
tmshv 207233125d sync wrong document fix 2020-03-29 01:38:35 +03:00
tmshv 8cbe9a695c next version updated to 9.3.2 2020-03-29 01:38:04 +03:00
tmshv 061f9cac67 kek error message changed 2020-03-29 01:37:43 +03:00
tmshv da7a84d7cc File component update 2020-03-28 00:19:52 +03:00
tmshv 1756d89cb4 file component and lib updated 2020-03-27 19:28:41 +03:00
tmshv b50b4b3ab3 sync file title update 2020-03-27 19:28:22 +03:00
tmshv 0ec86175b2 new persons 2020-03-25 19:56:01 +03:00
tmshv 028704b3b9 add new collective image 2020-03-25 18:24:46 +03:00
tmshv 3658e6a2b8 config link added 2020-03-21 20:51:32 +03:00
tmshv efbc29431e menu info href changed 2020-03-21 20:31:09 +03:00
tmshv 7500f9e32e shadows improved 2020-03-21 20:30:52 +03:00
tmshv f7cdd85ae7 Merge pull request #47 from tmshv/fix/render-tokens
Render tokens
2020-03-21 20:17:41 +03:00
tmshv b2ca735024 add token types 2020-03-21 20:11:04 +03:00
tmshv be836c42be youtube, intagram, html tokens support 2020-03-21 20:03:56 +03:00
tmshv a13b642979 pages Page to Index 2020-03-21 20:03:31 +03:00
tmshv c1a3af3a3e sync simplification
- drop token compilation to html
- drop artlebedev typograph
- drop other small things
2020-03-21 20:02:59 +03:00
tmshv 5f51a6e00d style.css moved to style folder 2020-03-21 18:31:54 +03:00
tmshv b78d78710c Markdown component refactoring: move core to lib/text 2020-03-19 23:12:22 +03:00
tmshv bb393becc4 render page content based on tokens; ignore rendered content field 2020-03-19 22:34:28 +03:00
tmshv 32d304b26f Merge pull request #46 from tmshv/fix/drop-sass
drop SASS
2020-03-19 15:10:30 +03:00
tmshv dbac5de6c8 drop sass 2020-03-19 15:04:30 +03:00
tmshv 50d87f218c rm style.scss 2020-03-19 15:03:22 +03:00
tmshv 4f1ac79c5f document-row refactoring 2020-03-19 15:03:06 +03:00
tmshv 1a006f5b3f document scss moved to file css 2020-03-19 15:02:38 +03:00
tmshv f7ce8ad9a7 Merge pull request #45 from tmshv/fix/npm-update
npm update
2020-03-19 14:52:44 +03:00
tmshv 9b99f6e360 Merge pull request #44 from tmshv/fix/sync-document-update
Sync document update
2020-03-19 14:49:23 +03:00
tmshv 4cac10499e npm update 2020-03-19 14:45:05 +03:00
tmshv bc56f8484d npm audit fix 2020-03-19 14:43:52 +03:00
tmshv 52fe61da05 react packages updated to 16.13.0; rm mocha, eslint 2020-03-19 14:42:11 +03:00
tmshv e2f41c8dc4 sync document updated: store raw data in document token; format on compile 2020-03-19 14:33:19 +03:00
tmshv 18645a7c94 fix sync image optimize 2020-03-11 15:39:57 +03:00
tmshv b61f1102c8 sync settings cleanup 2020-03-11 15:39:44 +03:00
tmshv 14e959ad75 error page upd 2020-03-11 14:05:16 +03:00
tmshv 93ee4ed9ca Merge pull request #43 from tmshv/fix/api-image-simplify
API image simplify
2020-03-11 13:44:16 +03:00
tmshv cc0987f7fa rm unused ImageArtifact type 2020-03-11 13:39:31 +03:00
tmshv b7f3bbbcef use cover instead of preview of coverSrc 2020-03-11 13:38:50 +03:00
tmshv a4d245007e sync image artifact generation simplified: upload only original image 2020-03-11 13:37:44 +03:00
tmshv 877c63a874 api image refactoring
- standart image definition for old preview and new cover
2020-03-11 13:36:15 +03:00
tmshv a3ffb00ed7 v6.11.0 2020-03-10 20:14:16 +03:00
tmshv 6074e201b5 sync image token fix 2020-03-10 20:13:36 +03:00
tmshv c3ed1a5b34 Merge pull request #42 from tmshv/fix/next-930
updated to next 9.3.0
2020-03-10 20:12:48 +03:00
tmshv 1e36025035 document page fallback 2020-03-10 19:19:37 +03:00
tmshv 1e22a5f437 document page update 2020-03-10 19:16:39 +03:00
tmshv 01acda1e04 updated to next 9.3.0 2020-03-10 19:13:11 +03:00
tmshv 6c6c9f91ca Merge pull request #41 from tmshv/fix/sync-update
Sync update
2020-03-10 18:34:01 +03:00
tmshv ffd8396fa0 sync building image update: compile image via proxy 2020-03-10 18:32:51 +03:00
tmshv f52641b739 sync Page manifest refactoring 2020-03-10 17:51:21 +03:00
tmshv 955dcfb0ad sync delete fix 2020-03-10 17:41:16 +03:00
tmshv 112496fd1e sync utils io module to front_matter 2020-03-10 17:24:11 +03:00
tmshv 6a5dffe567 sync Page refactoring 2020-03-10 17:14:33 +03:00
tmshv 7bf49680cf Sync refactoring: split model to model + controller 2020-03-09 23:37:32 +03:00
tmshv 96040267bb v6.10.0 2020-03-05 20:48:35 +03:00
tmshv ad3eccfd7c dark theme 2020-03-05 20:47:57 +03:00
tmshv 58739a6b32 css variables cleanup 2020-03-05 19:40:53 +03:00
tmshv 1e3ceb5017 document shadow refactoring 2020-03-05 19:35:05 +03:00
tmshv f72e45bc46 color variables refactoring 2020-03-05 19:32:29 +03:00
tmshv b22d3fd19f fix missing color back var 2020-03-05 19:30:39 +03:00
tmshv 04d76d5961 style color variables refactoring and fixes 2020-03-05 17:56:53 +03:00
tmshv 7c939b5334 kazimir radius changed to 10px 2020-03-05 01:21:15 +03:00
tmshv ba1700d8ab v6.9.0 2020-03-05 00:27:51 +03:00
tmshv bc1a38043a Merge pull request #40 from tmshv/fix/article-layout-update
Article layout update
2020-03-05 00:26:43 +03:00
tmshv a4999dad9e css variables refactoring 2020-03-04 22:49:24 +03:00
tmshv 19f2535a24 styles updated; unused removed 2020-03-04 21:30:58 +03:00
tmshv 830a193333 article update 2020-03-04 15:41:28 +03:00
tmshv bf007b583c page layout upd 2020-03-04 15:41:01 +03:00
tmshv fa8b77252d initial article update: scss to css; minor refactoring 2020-03-04 15:25:13 +03:00
tmshv 21798f6821 marker table moved to css 2020-03-04 13:45:31 +03:00
tmshv 0d76cc156e v6.8.0 2020-03-04 01:09:38 +03:00
tmshv 8741986bb2 Merge pull request #39 from tmshv/fix/page-update
Page update
2020-03-04 01:08:32 +03:00
tmshv 1767b65856 PageMeta and TagList mobile layout fix 2020-03-03 21:56:56 +03:00
tmshv faf9ee0f7c Image load state styles disabled 2020-03-03 21:24:25 +03:00
tmshv b0b3f98233 PageGrid chunks; Image lazy removed (unstable in Safari) 2020-03-03 21:12:29 +03:00
tmshv 23b4b35395 src/utils removed 2020-03-03 19:07:27 +03:00
tmshv 729e09d061 src/lib cleanup 2020-03-03 19:07:12 +03:00
tmshv 6e110e3dd7 page grid image fixes 2020-03-03 08:08:55 +03:00
tmshv e800de1f92 page grid update: load less data 2020-03-03 07:53:16 +03:00
tmshv 1318328fe7 api page coverSrc support; filter tags response by field 2020-03-03 07:43:30 +03:00
tmshv 11ff066e6c Image component lazy behavior 2020-03-03 06:49:18 +03:00
tmshv 8f54454d32 PageGrid refactoring 2020-03-03 06:04:25 +03:00
tmshv a14db0e8da collective page images refactoring 2020-03-03 05:58:35 +03:00
tmshv 087a4b6172 index page update; rest module 2020-03-03 05:26:02 +03:00
tmshv 5e8ee6eec9 showAuthor defaults 2020-03-03 05:25:15 +03:00
tmshv a15f030956 sync rm unused get_id function 2020-03-03 05:24:53 +03:00
tmshv 09b41182ce PageMeta update text 2020-03-03 04:01:11 +03:00
tmshv 9fb6eaab66 dateFormat fix 2020-03-03 04:00:59 +03:00
tmshv 0b230a26b4 feed generator updated to tags 2020-03-03 03:05:34 +03:00
tmshv 79a127636c drop articles from sitemap 2020-03-03 03:05:18 +03:00
tmshv 44973faea3 PageMeta stability improve 2020-03-03 03:05:05 +03:00
tmshv 23835c27c9 moment -> date-fns 2020-03-03 02:51:14 +03:00
tmshv 6760f36177 page fix 2020-03-03 02:38:22 +03:00
tmshv 970bdce53d index page updated; ArticleGrid -> PageGrid 2020-03-03 02:31:42 +03:00
tmshv 85d2f7cc45 drop articles pages 2020-03-03 02:31:07 +03:00
tmshv 9a105ba45e page update 2020-03-03 02:25:37 +03:00
tmshv ee5cba3634 drop Article component 2020-03-03 02:24:24 +03:00
tmshv b680cba50c drop article page 2020-03-03 02:24:10 +03:00
tmshv 5610e50863 sync drop dead code 2020-03-03 02:22:33 +03:00
tmshv 92b64808ea sync Page logger warning add 2020-03-03 02:01:17 +03:00
tmshv 6b6eca5f8d sync drop Article model 2020-03-03 02:00:53 +03:00
tmshv 9eb087bf6d api tags controller simplified: rm tags/slug route 2020-03-03 01:35:36 +03:00
tmshv 06745b45f4 api drop unused code 2020-03-03 01:33:17 +03:00
tmshv d859fdb302 api pages by tags sorting key 2020-03-02 05:08:09 +03:00
tmshv 348c3baba8 api Page updated: refactor to make it looks like article 2020-03-02 04:40:01 +03:00
tmshv 68b7f4225d api Page update 2020-03-02 00:36:22 +03:00
tmshv af7f32b1c0 rm documents-container style 2020-02-29 02:03:25 +03:00
tmshv 286d5c4383 Merge pull request #38 from tmshv/fix/drop-schedules
drop schedule from app
2020-02-29 02:02:35 +03:00
tmshv 3fa1763913 drop schedule from app 2020-02-29 01:57:43 +03:00
tmshv 46009ef8f4 v6.7.0 2020-02-29 01:26:46 +03:00
tmshv 42857974e1 Merge pull request #37 from tmshv/fix/drop-documents-page
Drop documents page
2020-02-29 01:25:39 +03:00
tmshv de20ed726f sync cleanup 2020-02-29 01:19:04 +03:00
tmshv 263f18a1df drop documents page (now it is a regular page) 2020-02-29 01:04:28 +03:00
tmshv 55f44fab8c include tokens in result data 2020-02-29 01:03:42 +03:00
tmshv 1b5fc82e59 Token compile refactored 2020-02-29 01:03:18 +03:00
tmshv ec3e09b509 fix Page imports 2020-02-29 01:02:20 +03:00
tmshv 092fa4578b move create_post_from_image_list to Article (usage only there) 2020-02-29 01:02:04 +03:00
tmshv a2a73034da Document model pdf title stability improved (drop 0 byte from title value) 2020-02-29 00:58:58 +03:00
tmshv abbb977b8e rm unused from sync io lib 2020-02-29 00:58:24 +03:00
tmshv dcea20b046 rm SyncDocuments (now it in the page only) 2020-02-29 00:58:12 +03:00
tmshv 71f4ca8a2c rm unused functions from Marker 2020-02-29 00:57:08 +03:00
tmshv 95925cffe5 rm DocumentUrlToken and MarkerRun 2020-02-29 00:56:33 +03:00
tmshv 5d56d308b5 remove kazimir code moved to marker in the past 2020-02-29 00:56:09 +03:00
tmshv 58c317cc61 artlebedev typograph fallback for big pages 2020-02-29 00:53:43 +03:00
tmshv b9277795cf Merge pull request #36 from tmshv/fix/card-and-article-updates
Card and article updates
2020-02-28 11:33:41 +03:00
tmshv 2ae7572e7e drop fotorama dependencies 2020-02-28 11:29:24 +03:00
tmshv 7b83b03b09 sync settings update 2020-02-28 11:29:04 +03:00
tmshv 2774e05bc7 sync Image token is not joinable (drop fotorama support for a while) 2020-02-28 11:28:53 +03:00
tmshv 1544fae988 api article featured field 2020-02-28 11:28:25 +03:00
tmshv d5390fa99a ArticleGrid default image size changed 2020-02-27 21:10:54 +03:00
tmshv 0a470e2441 Merge pull request #35 from tmshv/fix/sync-cleanup
Sync cleanup
2020-02-27 21:06:09 +03:00
tmshv 33dffa099e sync readme usage section edited 2020-02-27 21:02:17 +03:00
tmshv d1fc26fcf3 rm schedule, settings and other from sync 2020-02-27 17:51:21 +03:00
tmshv 14a5804991 add collective image to app server 2020-02-27 17:42:44 +03:00
tmshv 61e3b615a8 Merge pull request #34 from tmshv/fix/default-page-image
Default page image
2020-02-27 17:40:05 +03:00
tmshv a16c05968a APP_CARD_DEFAULT_IMAGE changed 2020-02-27 17:31:50 +03:00
tmshv 9975754aa7 api page factory fixed 2020-02-27 17:29:06 +03:00
tmshv 3b532f1f50 api page factory improved 2020-02-27 17:24:59 +03:00
tmshv f08d577e11 ArticleGrid img 2020-02-27 17:12:15 +03:00
tmshv b96e06068e Merge branch 'master' into fix/default-page-image 2020-02-27 16:25:12 +03:00
tmshv 28ca79a19a rm unused ImageArtifactType 2020-02-27 16:24:52 +03:00
tmshv 58b5eac61e document page cleaned from debug 2020-02-27 16:24:35 +03:00
tmshv 1e44a22c0c ArticleList removed: use ArticleGrid instead 2020-02-27 16:24:06 +03:00
tmshv a01888f155 comments removed 2020-02-27 16:23:49 +03:00
tmshv 97fec50d48 hudozka main image moved to static: now it will be served from app server 2020-02-27 16:22:39 +03:00
tmshv c8fd2907ca ArticleGrid no preview fallback (wip) 2020-02-27 16:21:42 +03:00
tmshv f540f5be06 api article factory fixed 2020-02-27 16:13:10 +03:00
tmshv 96328a1236 api doesnt work with default page image 2020-02-27 15:57:14 +03:00
tmshv 193e8e3ca2 v6.6.0 2020-02-27 12:30:14 +03:00
tmshv 38f6d5b62f Merge pull request #33 from tmshv/fix/drop-albums
Drop albums
2020-02-27 11:29:44 +03:00
tmshv cc2580aedb drop album support from api 2020-02-27 11:25:17 +03:00
tmshv 8b810d7817 drop album support from sync 2020-02-27 11:24:54 +03:00
tmshv f993b4e5b5 drop album support from app 2020-02-27 11:24:19 +03:00
tmshv a738ef0f6b v6.5.0 2020-02-25 18:31:49 +03:00
tmshv d7d582fe5b add modules to ts exclude 2020-02-25 18:30:49 +03:00
tmshv c943ffc814 articles pages size changed to 24 2020-02-25 18:30:31 +03:00
tmshv 9bdfe8faec rm unused assets 2020-02-25 18:30:05 +03:00
tmshv 3d59757c28 Merge pull request #32 from tmshv/fix/drop-person-entity
Drop person entity
2020-02-25 04:51:44 +03:00
tmshv b9211e1ea3 rm schedule from menu 2020-02-25 04:39:03 +03:00
tmshv 893b5b9ccd rm teachers from sitemap (now they in pages) 2020-02-25 04:36:19 +03:00
tmshv fdac9d9ff8 api cleaned up from person/teacher model at all 2020-02-25 04:35:05 +03:00
tmshv ebd6290ccf remove Person model from sync as it never exist 2020-02-25 04:11:23 +03:00
tmshv 4c0e968e5e rm person page cause now its common page 2020-02-25 03:54:24 +03:00
tmshv 9cf7de825a collective page: display common page cards instead of person card 2020-02-25 03:53:58 +03:00
tmshv a3644c721b Merge pull request #31 from tmshv/fix/api-image-file
api image by file fixed
2020-02-25 03:52:43 +03:00
tmshv 1d9495f5f4 api image by file fixed 2020-02-25 03:52:21 +03:00
tmshv 6ba74ca911 Merge pull request #30 from tmshv/fix/api-page-and-article-updated
api updates
2020-02-25 02:37:32 +03:00
tmshv 0b3194a281 api updates 2020-02-25 02:37:05 +03:00
tmshv ad2c0367d0 Merge pull request #29 from tmshv/fix/opengraph-update
OpenGraph update
2020-02-25 02:32:02 +03:00
tmshv b62a0588ae wildcard page meta stability improved 2020-02-25 02:28:31 +03:00
tmshv 488ea6ec06 article related pages meta update and other improvements 2020-02-25 02:01:57 +03:00
tmshv 9e5ec860e8 article cleanup + small changes 2020-02-25 01:19:36 +03:00
tmshv 21a89c7d66 article page input data refactoring 2020-02-25 00:14:00 +03:00
tmshv 66b26bc778 Page type updated 2020-02-24 23:41:43 +03:00
tmshv f8e2e9fc32 meta imports optimisation 2020-02-24 23:41:28 +03:00
tmshv 6aaeb7e048 wildcard page description default to null 2020-02-24 23:40:50 +03:00
tmshv e7de465e2c wildcard page meta updated 2020-02-24 20:09:56 +03:00
tmshv 76e7a7e9bb collective page card style changed; pass common card data to grid 2020-02-24 02:29:15 +03:00
tmshv cdeece2b0b person page cleanup 2020-02-24 02:27:52 +03:00
tmshv b8d0c7aa91 added person and image related types 2020-02-24 02:27:28 +03:00
tmshv dbf09f608a meta builder; person page refactoring 2020-02-24 00:30:58 +03:00
tmshv 3f8941b613 person page rm debugging code 2020-02-24 00:28:52 +03:00
tmshv 88d5a56fec teacher page uses meta builder 2020-02-23 22:55:06 +03:00
tmshv 0fc762c418 meta lib refactoring: to ts; add meta builder 2020-02-23 22:54:43 +03:00
tmshv 8c57c69583 Meta component changes in definition 2020-02-23 22:54:15 +03:00
tmshv c4bf06f10a Merge pull request #28 from tmshv/fix/move-sync-to-modules
Move sync to modules
2020-02-23 21:43:59 +03:00
tmshv 13b761a81e sync moved to modules 2020-02-23 21:25:17 +03:00
tmshv 1dda6ce8cc v6.4.0 2020-02-23 21:21:13 +03:00
tmshv 2eaeb57241 Merge pull request #27 from tmshv/fix/font-optimisation
Font optimisation
2020-02-23 21:20:08 +03:00
tmshv 6c052d897b google fonts moved to css import; unused font removed 2020-02-23 20:21:09 +03:00
tmshv 20c81874fd Merge branch 'master' of github.com:tmshv/hudozka 2020-02-23 08:00:25 +03:00
tmshv 5375165d9b Merge pull request #24 from tmshv/fix/menu-refactoring
New menu
2020-02-23 07:59:56 +03:00
tmshv 123eb9e2d9 Breadcrumbs delimiters alignment improved 2020-02-23 07:51:02 +03:00
tmshv 53a3e04913 hover menu icons removed 2020-02-23 07:43:58 +03:00
tmshv 79658002d5 menu with toggle updated; even icons changed 2020-02-23 07:43:26 +03:00
tmshv 1181bd61fd menu layout style fixed; margin bottom moved to outer component 2020-02-23 06:07:36 +03:00
tmshv 37bb74ac51 content size on mobile changed 2020-02-23 05:50:46 +03:00
tmshv 3bdb69c972 App imports cleanup 2020-02-23 05:50:22 +03:00
tmshv 6825751c08 App layout update 2020-02-23 05:50:15 +03:00
tmshv 471d8f4714 useScreenType replaced with useMobile; hide breadcrumbs on mobile 2020-02-23 05:49:52 +03:00
tmshv 822f1a0535 MenuIterm selected but clicable mode added 2020-02-23 05:10:01 +03:00
tmshv 74f785134f breadcrumb container layout got some beauties 2020-02-23 04:40:52 +03:00
tmshv aefa0ae2d4 fetch breadcrumbs from api; button disabled support; component fix 2020-02-23 04:29:26 +03:00
tmshv cd0ef0d316 api dockerignore updated 2020-02-23 03:51:29 +03:00
tmshv b2493a6ab2 Merge pull request #26 from tmshv/fix/api-pages-breadcrumbs
API pages breadcrumbs
2020-02-23 03:50:56 +03:00
tmshv f35f628aed get breadcrumbs moved to separate controller 2020-02-23 03:50:22 +03:00
tmshv 95caa3bac5 get breadcrumbs implemented 2020-02-23 03:48:45 +03:00
tmshv ebaebec835 initial breadcrumb builder 2020-02-23 03:43:46 +03:00
tmshv 113fb9db77 add express typings 2020-02-23 03:22:38 +03:00
tmshv 4c6d089b78 Merge pull request #25 from tmshv/fix/api-tags
Tags API
2020-02-23 03:14:26 +03:00
tmshv df7169a6d2 api port type is string 2020-02-23 03:13:09 +03:00
tmshv ec2609e900 initial tags api 2020-02-23 03:12:06 +03:00
tmshv 26c03dfbbf button EOL 2020-02-23 03:10:26 +03:00
tmshv db485056e0 added optional breadcrumbs; page layout refactoring; other chages 2020-02-23 02:31:05 +03:00
tmshv 1dbbe04d59 menu moved to config and context 2020-02-22 04:53:22 +03:00
tmshv e8fb2e817b menu style update 2020-02-22 04:37:33 +03:00
tmshv 57b6e249ea menu style cleanup 2020-02-22 04:22:26 +03:00
tmshv b07def3eee menu refactoring 2020-02-22 04:22:19 +03:00
tmshv 8a41a895fb text colors changed 2020-02-22 03:40:22 +03:00
tmshv be9f07bdb7 Menu component updated 2020-02-22 03:40:14 +03:00
tmshv 11d628fd50 article grid missing home page fix 2020-02-22 03:28:04 +03:00
tmshv 2fa0083fd1 v6.3.0 2020-02-22 03:15:16 +03:00
tmshv e09574586a Merge pull request #23 from tmshv/fix/new-cards
New cards
2020-02-22 03:13:51 +03:00
tmshv 70e8bd6460 content layout updated to improve mobile 2020-02-22 02:54:50 +03:00
tmshv 86c7c63c6c article grid featured simplified 2020-02-22 02:43:02 +03:00
tmshv 692f50ede4 CardGrid auto flow improved 2020-02-22 02:09:22 +03:00
tmshv 4ed68b235a article layout fix 2020-02-22 01:36:17 +03:00
tmshv 5c7ab73e68 article style cleanup 2020-02-22 01:36:06 +03:00
tmshv e66dfddeb9 card grid style cleanup 2020-02-22 01:35:55 +03:00
tmshv 89203b2b12 article grid updated 2020-02-22 01:35:43 +03:00
tmshv 5730505fca article, person cards removed; use common component 2020-02-22 00:42:55 +03:00
tmshv 13c7d473b1 add Card component 2020-02-22 00:08:31 +03:00
tmshv 0ce8486d99 Merge pull request #22 from tmshv/fix/content-simplify
Content simplify
2020-02-21 22:39:36 +03:00
tmshv 8f01c6e9d2 documents page rest fix 2020-02-21 22:26:26 +03:00
tmshv a28f7ccd84 fix api requests 2020-02-21 22:23:09 +03:00
tmshv 114bb8d9d4 footer-links scss rm 2020-02-21 22:11:58 +03:00
tmshv 97b6a4f192 album scss rm 2020-02-21 22:11:49 +03:00
tmshv eeccb97440 pages content layout fix 2020-02-21 22:10:37 +03:00
tmshv 85af28ac50 content moved to css 2020-02-21 21:56:50 +03:00
tmshv 400a08d1af content style update; style refactoring 2020-02-21 21:55:15 +03:00
tmshv 1bdea85b1b content style update: rm thin; rm menu padding 2020-02-21 21:33:49 +03:00
tmshv f2b548aee8 publicated 2020-02-21 20:32:13 +03:00
tmshv bed0548909 article style update 2020-02-21 20:16:23 +03:00
tmshv 7656f44b0b Merge pull request #21 from tmshv/fix/article-component-update
Article component update
2020-02-21 04:47:21 +03:00
tmshv 28483190e2 IArticle type fix 2020-02-21 04:34:11 +03:00
tmshv 0e482ad73c fix Article import 2020-02-21 04:30:38 +03:00
tmshv 65507c5d80 article tags refactoring 2020-02-21 04:26:48 +03:00
tmshv e7f3b0d7ce move to ts 2020-02-21 04:10:14 +03:00
tmshv 150404ca0b Merge pull request #20 from tmshv/fix/kazimir-style-update
Kazimir style update
2020-02-21 01:56:33 +03:00
tmshv f01ba79977 kazimir mobile style updated 2020-02-20 19:42:21 +03:00
tmshv d787789391 kazimir video update 2020-02-20 19:40:00 +03:00
tmshv 10cf899fe5 kazimir image style update 2020-02-20 19:39:49 +03:00
tmshv cc693228c6 article line height changed 2020-02-20 19:39:38 +03:00
tmshv a1a1ec20cc text css vars updated 2020-02-20 19:24:34 +03:00
tmshv 023ef5a348 article p margin removed 2020-02-20 19:24:16 +03:00
tmshv 25d49ed5b7 kazimir style updated 2020-02-20 19:24:08 +03:00
tmshv d144eb9cb5 kazimir styles -> to css 2020-02-20 19:07:23 +03:00
tmshv 3dbc1e6098 upd to v6.2.0 2020-02-20 17:31:24 +03:00
tmshv 19aa1f415e nextjs versiton updated to 6.2.2 stable 2020-02-20 17:30:02 +03:00
tmshv 59bd11acdc Merge pull request #19 from tmshv/fix/page-collective-update
Collective page update
2020-02-20 17:25:28 +03:00
tmshv 1ead6c44a0 person card style clean 2020-02-20 17:19:45 +03:00
tmshv 4d0fb7a8f6 collective page update: border radius, css refactoring 2020-02-20 17:17:22 +03:00
tmshv 3a425c25fe CardList removed 2020-02-20 17:16:04 +03:00
tmshv c317d6631f collective page uses card grid 2020-02-20 17:15:50 +03:00
tmshv 9b8b3d73c5 Contacts fix 2020-02-19 00:01:14 +03:00
tmshv 07cb773c6f collective page fix 2020-02-19 00:01:06 +03:00
tmshv 29c2a53c54 Merge pull request #18 from tmshv/fix/pager-update
New Pager
2020-02-18 23:59:23 +03:00
tmshv 5cf2dbf8f7 article cards updated 2020-02-18 23:49:24 +03:00
tmshv 168ebb81ce article page size is 12 2020-02-18 23:48:28 +03:00
tmshv 93d9021ac0 article card uses next link 2020-02-18 20:35:16 +03:00
tmshv 0b47b12d27 article card style updated 2020-02-18 20:33:30 +03:00
tmshv b46bc1234c effect css vars changed 2020-02-18 20:33:13 +03:00
tmshv 3631216be4 article card list updated 2020-02-18 20:31:07 +03:00
tmshv 55b4ce14d3 Pager updated 2020-02-18 19:49:46 +03:00
tmshv 41467aa447 add Button component; pager updated 2020-02-18 17:43:37 +03:00
tmshv 843ade58ad disable visited link 2020-02-18 17:42:55 +03:00
tmshv 4bf3b55557 pager styles jsx to css 2020-02-18 17:12:22 +03:00
tmshv 0ba0d74ea7 pager uses next link 2020-02-18 17:10:53 +03:00
tmshv 406c660f41 pager update 2020-02-18 17:09:21 +03:00
tmshv 5a3fc93c4f Merge pull request #17 from tmshv/fix/footer-refactoring
Footer refactoring
2020-02-18 16:25:09 +03:00
tmshv 88226e0038 not found component style update 2020-02-18 16:22:21 +03:00
tmshv 4881ca1aae style size variables 2020-02-18 16:22:13 +03:00
tmshv 8ea5e74232 opposite link fix 2020-02-18 16:14:39 +03:00
tmshv a668a8e602 theme refactoring; footer style refactoring 2020-02-18 16:13:39 +03:00
tmshv 8ed1e65055 block style refactoring 2020-02-18 15:49:12 +03:00
tmshv 2856afd263 footer style moved to css 2020-02-18 15:37:03 +03:00
tmshv 48f7e971c9 footer / block / contacts refactoring 2020-02-18 15:36:20 +03:00
tmshv d0a11deae8 Spacer typings improved; moved to separate component 2020-02-18 14:57:17 +03:00
tmshv 01eaffaf14 add Block component; copyright refactoring 2020-02-18 14:53:36 +03:00
tmshv 19b54c56e4 footer-info selector removed 2020-02-18 14:34:43 +03:00
tmshv add6b15265 Author component extraction 2020-02-18 14:32:50 +03:00
tmshv 5b19a6a359 Copyright component extraction 2020-02-18 14:31:27 +03:00
tmshv c0dd5cf6ae move footer props to config 2020-02-18 14:26:09 +03:00
tmshv 4f0d61735f Merge pull request #16 from tmshv/fix/clean-old-styles
Remove old styles
2020-02-18 13:01:17 +03:00
tmshv de63b5e778 App.Header refactoring 2020-02-18 12:29:21 +03:00
tmshv 5cc0aa1c0b Merge branch 'master' into fix/clean-old-styles 2020-02-18 12:23:29 +03:00
tmshv 2511f431c4 navigation style cleanup 2020-02-18 12:19:59 +03:00
tmshv 71738eab2a rm breadcrumbs style 2020-02-18 12:16:19 +03:00
tmshv 2287e59b71 rm ScheduleList component 2020-02-18 12:15:28 +03:00
tmshv e1778ba083 rm schedule-mobile style 2020-02-18 12:15:03 +03:00
tmshv 9829ccd4be Merge pull request #15 from tmshv/fix/merge-app-document
Merge _document with _app
2020-02-18 12:09:34 +03:00
tmshv 7b6fd8e892 clean style scss 2020-02-18 12:07:55 +03:00
tmshv 877e33c004 rm album.scss 2020-02-18 12:07:45 +03:00
tmshv dce6933904 rm main-image 2020-02-18 12:05:57 +03:00
tmshv 13781b3bbb disable importing tape-viewer 2020-02-18 12:02:00 +03:00
tmshv e146c5e0a4 rm timeline style 2020-02-18 12:01:43 +03:00
tmshv 71585c1d75 rm page-animation style 2020-02-18 12:01:31 +03:00
tmshv 8f2f30af77 rm parallax style 2020-02-18 12:01:20 +03:00
tmshv e05c06589f rm style from error page 2020-02-18 12:00:34 +03:00
tmshv 851d888f89 rm style from App component 2020-02-18 12:00:24 +03:00
tmshv 3856c80021 merge app with document 2020-02-18 12:00:12 +03:00
tmshv 678715cabb Merge pull request #14 from tmshv/fix/page-error-styles
Extract NotFound component with isolated style
2020-02-18 11:52:14 +03:00
tmshv f8373765fd extract NotFound component with isolated style 2020-02-18 11:46:33 +03:00
tmshv 6dfacb56c9 Merge pull request #11 from tmshv/fix/body-wrapper
body wrapper refactoring
2020-02-17 20:03:43 +03:00
tmshv 491ac743b5 Merge pull request #12 from tmshv/fix/rm-conf
rm old configs
2020-02-17 20:03:29 +03:00
tmshv 8d8232a866 rm nginx conf (we use now) 2020-02-17 19:58:13 +03:00
tmshv 91e9ff8a8d rm drone conf (we use now) 2020-02-17 19:58:05 +03:00
tmshv 2f23c65b9e rm app docker file (we use now) 2020-02-17 19:57:54 +03:00
tmshv 018b1fa8ba body wrapper refactoring 2020-02-17 19:45:34 +03:00
tmshv be60011567 v6.1.0 2020-02-15 07:27:14 +03:00
tmshv a91daa07d1 Merge pull request #9 from tmshv/feature/next-static-export
Next static export
2020-02-15 07:26:10 +03:00
tmshv 20436c4aad rm src/config 2020-02-15 07:20:51 +03:00
tmshv fe02f04217 .nowignore updated 2020-02-15 07:18:07 +03:00
tmshv 328c36a53a utils updated 2020-02-15 07:17:03 +03:00
tmshv 10f5e96616 Schedule component updated 2020-02-15 07:14:26 +03:00
tmshv a7edd93b00 .nowignore updated 2020-02-15 07:11:32 +03:00
tmshv 60a68bcb9a add babel conf 2020-02-15 07:05:03 +03:00
tmshv f7e6b3bc17 index page imports clean 2020-02-15 06:59:29 +03:00
tmshv fe3346e070 .gitignore update 2020-02-15 06:55:52 +03:00
tmshv 5b8e23f176 slug page format 2020-02-15 06:47:05 +03:00
tmshv deea0cc1d8 _error update 2020-02-15 06:43:03 +03:00
tmshv 6a86de6c84 Html component update 2020-02-15 06:40:47 +03:00
tmshv f874de73b9 gallery imports update 2020-02-15 06:34:46 +03:00
tmshv b778658479 documents imports optimisation 2020-02-15 06:33:29 +03:00
tmshv 44f51f907e gallery impors format 2020-02-15 06:33:19 +03:00
tmshv 0a9c0b632b rm now 2020-02-15 06:30:41 +03:00
tmshv f569152604 rm exportPathMap from next conf 2020-02-15 06:27:25 +03:00
tmshv 3d37276583 scripts fix 2020-02-15 06:26:36 +03:00
tmshv ca58994301 pages worked as static 2020-02-15 06:26:28 +03:00
tmshv b9c2929bc3 build scripts updated 2020-02-15 05:28:29 +03:00
tmshv 411f7eee62 dynamic page update 2020-02-15 05:28:16 +03:00
tmshv 2ca613e916 album page update 2020-02-15 05:28:06 +03:00
tmshv 42788cf8e4 next version update 2020-02-15 05:04:14 +03:00
tmshv 3103f3689b index page updated to static export 2020-02-15 04:41:59 +03:00
tmshv 4de352e2df rm unused after migrate to api 2020-02-15 04:35:19 +03:00
tmshv f3febbe3a9 rm server related part of next conf 2020-02-15 04:24:38 +03:00
tmshv 927201828c update package-lock 2020-02-15 04:23:57 +03:00
tmshv c0b43f8afd rm next based api; rm custom next server; rm koa 2020-02-15 04:23:22 +03:00
tmshv d3b5b2d5c6 createApiUrl signature changed 2020-02-15 04:04:26 +03:00
tmshv b4da11e086 api get page item changed 2020-02-15 03:46:17 +03:00
tmshv 744f127585 Merge branch 'master' into feature/next-static-export 2020-02-15 03:25:42 +03:00
tmshv 8ebac8f4a0 Merge pull request #10 from tmshv/fix/extract-api
API module
2020-02-15 03:24:06 +03:00
tmshv 64d783dede api tsconfig update 2020-02-15 03:22:49 +03:00
tmshv 2611a874de api ignore files updated 2020-02-15 03:22:21 +03:00
tmshv 48dab02c22 api conf update 2020-02-15 02:29:38 +03:00
tmshv 256dc70b1d api add dockerignore 2020-02-15 02:29:25 +03:00
tmshv afaf2d6bf4 api server fix 2020-02-15 02:29:16 +03:00
tmshv 1b104b7bab api add Dockerfile 2020-02-15 02:17:17 +03:00
tmshv 7f759989cb api gitignore 2020-02-15 02:17:03 +03:00
tmshv 43e8b0a790 api run update 2020-02-15 02:16:53 +03:00
tmshv d66f995683 api clean 2020-02-15 02:16:30 +03:00
tmshv 8a7cb50abd dev dep clean 2020-02-15 02:14:35 +03:00
tmshv 99b412ea8d api update 2020-02-15 01:58:42 +03:00
tmshv 502a314c68 factory update 2020-02-15 01:41:17 +03:00
tmshv 80b5297215 add factory 2020-02-15 01:40:07 +03:00
tmshv df2f979b55 add package-lock 2020-02-15 01:38:37 +03:00
tmshv fc0724a900 api copied to hudozka-api module based on express 2020-02-15 01:38:07 +03:00
tmshv 8de250ca7e add env 2020-02-14 19:37:00 +03:00
tmshv e6610fdabb ArticleCardList moved to tsx 2020-02-14 19:36:07 +03:00
tmshv c46fd4ddc5 core styles moved to css 2020-02-14 19:32:51 +03:00
tmshv a5a1493b3b Overlay refactoring 2020-02-13 22:42:05 +03:00
tmshv e45c69dee0 styles refactoring: move root to css file 2020-02-13 22:37:29 +03:00
tmshv 997e44483e initial static export in teachers 2020-02-13 17:31:23 +03:00
tmshv 92460592b4 person page imports updated 2020-02-13 00:05:16 +03:00
tmshv 68b6d36e0e collective page updated + ts 2020-02-12 23:43:25 +03:00
tmshv e375d305b8 lodash types 2020-02-12 23:42:53 +03:00
tmshv 657832e0e0 _app fixed and updated
- rm warning
- simplifyed
2020-02-12 23:35:31 +03:00
tmshv 5071b0292d _document refactoring + ts 2020-02-12 23:28:42 +03:00
tmshv effaf07ecb import from src 2020-02-12 23:28:28 +03:00
tmshv e6bf189aba update typescript to 3.7.5 2020-02-12 23:04:05 +03:00
tmshv e024dab95d delete unused dev packages 2020-02-12 23:03:16 +03:00
tmshv f16989c196 update next to 9.2.2-canary.16 2020-02-12 23:03:02 +03:00
tmshv 7b40c53c3a remove unused packages 2020-02-12 22:53:08 +03:00
tmshv 70007d3199 v6.0.0 2020-02-12 22:43:13 +03:00
tmshv b232a02549 Merge pull request #8 from tmshv/dev
Updated to Nextjs
2020-02-12 22:36:46 +03:00
tmshv dd70ad7025 Merge pull request #7 from tmshv/dependabot/pip/utils/Sync/pillow-6.2.0
Bump pillow from 3.3.0 to 6.2.0 in /utils/Sync
2020-02-12 22:32:26 +03:00
tmshv e6fbda5ae7 Merge branch 'dev' into dependabot/pip/utils/Sync/pillow-6.2.0 2020-02-12 22:32:14 +03:00
tmshv 48bbce1e91 add font reference to readme 2019-11-24 00:10:57 +03:00
tmshv 2768a1d109 title font size updated 2019-11-24 00:10:42 +03:00
tmshv 3457c30feb HudozkaTitle update 2019-11-23 23:56:47 +03:00
tmshv 180c9f34c5 person page updated + ts 2019-11-23 22:51:48 +03:00
tmshv 38f58b0b1d export routes updated 2019-11-23 22:40:01 +03:00
tmshv 569e775185 robots-txt script removed: public folder is serving natively 2019-11-23 22:30:11 +03:00
tmshv a0e92e066f static folder moved to public/static as last nextjs says 2019-11-23 22:29:10 +03:00
tmshv 308b832155 HudozkaTitle component layout updated 2019-11-23 22:23:20 +03:00
tmshv 950d0c4ffc withMiddleware updated 2019-11-23 22:23:07 +03:00
tmshv 0505c29eea mongodb package revert to 2.1.14 version 2019-11-23 22:22:18 +03:00
tmshv 6cfbc18029 documents page header 2019-11-23 21:30:48 +03:00
tmshv 402d1e5af7 added static routes to next config 2019-11-23 21:29:21 +03:00
tmshv 053f125ee4 npm audit fix force 2019-11-23 18:07:04 +03:00
tmshv 225269e3cd npm audit fix 2019-11-23 18:06:24 +03:00
tmshv 6d099bda10 npm update 2019-11-23 18:05:38 +03:00
tmshv a4810cc5da title font changed to Shadow 2019-11-23 18:02:01 +03:00
tmshv 21f9d1738c node-sass updated to 4.13.0 2019-11-23 17:51:41 +03:00
dependabot[bot] a52e25ee53 Bump pillow from 3.3.0 to 6.2.0 in /utils/Sync
Bumps [pillow](https://github.com/python-pillow/Pillow) from 3.3.0 to 6.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/3.3.0...6.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-22 20:31:03 +00:00
tmshv 7c6b755022 article scss style format 2019-10-21 15:33:06 +03:00
tmshv 5f7f90c879 added last articles 2019-10-21 15:26:56 +03:00
tmshv 8c2b17150b api articles typing fix 2019-10-21 15:24:14 +03:00
tmshv 5cbce648c4 Overlay fix no scroll 2019-10-21 15:23:31 +03:00
tmshv ef321453ef Page token property 2019-10-18 14:19:29 +03:00
tmshv dd0ec5f203 [sync] Image save by file not by hash 2019-10-17 18:51:08 +03:00
tmshv e9fa1376e3 [sync] Page model scan refactoring 2019-10-17 18:49:55 +03:00
tmshv 2601b8a54f [sync] fix sync order to prevent records deletion 2019-10-17 18:49:16 +03:00
tmshv 0f85b77d14 [sync] Sync item filter setup changed 2019-10-17 17:46:45 +03:00
tmshv 05e55d2668 wrapInitialProps typing 2019-10-17 17:12:54 +03:00
tmshv 0fab398ca6 Merge pull request #6 from tmshv/feature/upd1
Update 1
2019-10-17 17:06:17 +03:00
tmshv 2ca22419ec Meta component refactoring + typing 2019-10-17 17:05:48 +03:00
tmshv 17ca9123f5 Share component refactoring 2019-10-17 16:55:12 +03:00
tmshv 473c4047be teacher page imports bugfix + rm unused 2019-10-17 16:51:56 +03:00
tmshv 42322feced content sizes for mobile refacoting
moved from scss file to _app global style
2019-10-17 16:51:09 +03:00
tmshv 9a5056a362 content style format 2019-10-17 16:44:52 +03:00
tmshv 22689425e3 PersonCard mobile layout fix 2019-10-17 15:26:28 +03:00
tmshv 2378b4476e gallery page updated 2019-10-17 15:25:23 +03:00
tmshv 237a67de01 gallery page to tsx 2019-10-17 15:09:57 +03:00
tmshv 6b8f6e8b66 index page typings 2019-10-17 15:08:53 +03:00
tmshv 4e076b787e next page cleanup 2019-10-17 15:08:34 +03:00
tmshv 436b58cede HudozkaTitle component update
- moved to typescript
- uses memo
2019-10-17 14:54:59 +03:00
tmshv 3902815113 App layout prop update 2019-10-17 14:50:09 +03:00
tmshv 228e7824de App component update; support reduced-motion 2019-10-17 14:33:28 +03:00
tmshv 96c1330d9b remove unused page.scss 2019-10-17 14:32:48 +03:00
tmshv 0e7b312d97 Page component updated + ts 2019-10-17 12:55:28 +03:00
tmshv 8163c35efe article card layout updated 2019-10-17 12:39:09 +03:00
tmshv 95b5b56fd4 ArticleCard style format 2019-10-17 12:35:12 +03:00
tmshv 0207f85f00 ArticleCard Date component refactoring + moved to separate file 2019-10-17 12:33:09 +03:00
tmshv 9fb815081c ArticleCard image refactoring 2019-10-17 12:28:32 +03:00
tmshv 3dfca4c3e2 HudozkaTitle text update 2019-10-16 15:47:28 +03:00
tmshv 2fc59dc082 Show hide menu button over overlay 2019-10-16 02:31:54 +03:00
tmshv ddd6c9daa3 Menu component update 2019-10-16 01:23:45 +03:00
tmshv feb59b8b8e update menu to differentiate mobile and desktop layout 2019-10-16 01:13:20 +03:00
tmshv 4d7fc57934 MenuToggle moved to separate component 2019-10-15 23:21:33 +03:00
tmshv fbcf204642 overlay reduced motion support 2019-10-15 23:05:31 +03:00
tmshv bdde0f79c1 fix Overlay lag effect 2019-10-15 22:59:11 +03:00
tmshv 30f1274405 Overlay refactoring and improvement 2019-10-15 22:55:47 +03:00
tmshv 04d6c8d223 Overlay moved to separate component 2019-10-15 22:18:52 +03:00
tmshv f96b495b38 Overlay transition 2019-10-15 22:07:34 +03:00
tmshv a597a0d061 api article fix missing import; js -> ts 2019-10-15 22:07:13 +03:00
tmshv d2f9a39d33 Menu mobile container updated 2019-10-15 07:10:03 +03:00
tmshv bf1c9c20ed Menu Overlay component added 2019-10-15 07:05:04 +03:00
tmshv 10e7dfbbfa App component update. Move menu to dynamic container 2019-10-15 07:04:50 +03:00
tmshv 673bb83ab8 Footer component moved to ts 2019-10-15 07:04:24 +03:00
tmshv 07df3bfa8f App component moved to ts 2019-10-15 06:55:40 +03:00
tmshv 8c63e249b9 Menu cleanup 2019-10-15 06:36:32 +03:00
tmshv df2fec4999 Menu show toggle on mobile only 2019-10-15 06:36:25 +03:00
tmshv 64b51363a8 MenuToggle fix 2019-10-15 06:32:46 +03:00
tmshv 7c320b98da Menu margin update 2019-10-15 06:09:48 +03:00
tmshv 38f2c24167 rm unused accessibility control style 2019-10-15 06:01:24 +03:00
tmshv c0303b6a40 rm unuses hmenu scss 2019-10-15 05:57:56 +03:00
tmshv b4349cde12 Menu rm unused effect 2019-10-15 05:54:04 +03:00
tmshv 792be94a79 Menu component layout updated 2019-10-15 05:47:01 +03:00
tmshv 9ca50e87c2 all menu style moved to jsx 2019-10-15 05:32:33 +03:00
tmshv cdd76789c6 menu selected style moved to styles jsx 2019-10-15 05:28:12 +03:00
tmshv 4586ac0bdc rm main-menu submenu styles 2019-10-15 05:23:49 +03:00
tmshv 0699df1754 rm accessibility themes 2019-10-15 05:23:02 +03:00
tmshv 12782e9869 main-menu style format 2019-10-15 05:22:21 +03:00
tmshv ab577fa263 Menu update. Use react hooks, not client based script. 2019-10-15 04:39:20 +03:00
tmshv 0f1438e8db MenuToggle component works 2019-10-15 03:45:18 +03:00
tmshv 52ffa79cb4 Menu component ts 2019-10-15 03:11:57 +03:00
tmshv c98d69a483 HudozkaTitle fix mobile 2019-10-15 03:10:32 +03:00
tmshv cc32215fdd ArticleCard component style fix + ts 2019-10-15 02:51:15 +03:00
tmshv 5d672842f3 mobile style variables 2019-10-15 02:46:41 +03:00
tmshv a6e528d59b variables scss format 2019-10-15 02:26:55 +03:00
tmshv 9b642a38ce main scss format 2019-10-15 02:21:02 +03:00
tmshv ed9dae3760 documents page fixed 2019-10-15 02:12:56 +03:00
tmshv eed3a3c007 Album model to ts 2019-10-15 01:27:43 +03:00
tmshv aa22f882bd classnames typings 2019-10-15 01:23:25 +03:00
tmshv 011b24e9ae api image clean 2019-10-15 01:23:16 +03:00
tmshv b5a36e663d fix wrong large image path 2019-10-15 01:23:06 +03:00
tmshv 0ff7d40cb2 CollectiveImage component fix 2019-10-15 01:22:46 +03:00
tmshv e20636b4f1 Image component written in ts 2019-10-15 01:22:33 +03:00
tmshv 873c4ce65c Image model findByFile typings improve 2019-10-15 01:22:17 +03:00
tmshv 5f637b4097 PersonCard component fix image 2019-10-15 01:02:46 +03:00
tmshv c48de3e09a Teacher model moved to typescript. Page can be loaded but looks ugly due to broken styled jsx 2019-10-15 00:47:57 +03:00
tmshv f48f89ff1b server loads all Pages on start as it was before 2019-10-15 00:43:33 +03:00
tmshv d1d0011cc9 Page model fix wrong imports 2019-10-15 00:43:02 +03:00
tmshv b0657c7fa4 Article typings improve 2019-10-15 00:42:47 +03:00
tmshv c038ef882b Data::getStore generic 2019-10-15 00:42:35 +03:00
tmshv 717540682d core Data typings 2019-10-15 00:35:27 +03:00
tmshv bf1fd90133 mongodb typings 2019-10-15 00:35:16 +03:00
tmshv f72652440e make Config working right. Article model looks restored 2019-10-15 00:31:56 +03:00
tmshv d4f6568269 fix ArticleCard to properly works with styled jsx. Image component inlined 2019-10-15 00:24:27 +03:00
tmshv 5831275b7a updated to make index page working 2019-10-15 00:16:55 +03:00
tmshv 7363d7c0ec api articles -> server articles 2019-10-14 23:46:09 +03:00
tmshv b35e4e36e2 unstable typescript 2019-10-14 23:42:43 +03:00
tmshv 274e1e7fc0 hudozka title style moved to styled jsx 2019-10-14 22:33:02 +03:00
tmshv 9bdacb4493 Image model logger refactoring 2019-10-14 22:24:23 +03:00
tmshv aecd72847c [sync] model build moved to separate step 2019-10-14 21:07:23 +03:00
tmshv d122d040fe [sync] sync options moved from run parameters to instance fields 2019-10-14 20:42:05 +03:00
tmshv 4c4e800d19 [sync] changed_items renamed to items 2019-10-14 20:34:09 +03:00
tmshv 5b4f36a419 rm unused TimelinePostIntagram 2019-10-14 20:29:44 +03:00
tmshv 8ba8a9af57 App reformat, js -> jsx 2019-10-14 18:31:15 +03:00
tmshv 36ed564231 Menu component refactoring 2019-10-14 18:24:00 +03:00
tmshv 3f4ffdb93a Menu component format 2019-10-14 18:18:45 +03:00
tmshv 34354e9577 Menu component update
js -> jsx
update imports
no default import
2019-10-14 18:17:39 +03:00
tmshv 7ce46cbae2 Schedule component js -> jsx 2019-10-14 18:15:55 +03:00
tmshv f16d91c5ad Schedule component bugfix: add missing key prop 2019-10-14 17:55:52 +03:00
tmshv faa17a3e79 Schedule component format 2019-10-14 17:54:50 +03:00
tmshv 04c269b64a Schedule component no default export 2019-10-14 17:54:26 +03:00
tmshv 7df8ec73ec PersonCard export updated 2019-10-14 17:52:04 +03:00
tmshv 1f2b61cc29 schedule/collective files move to server 2019-10-14 17:47:02 +03:00
tmshv c1d8ab3b97 Schedule component updated imports 2019-10-14 17:45:52 +03:00
tmshv ac02ab3f1a rm unused TeacherProfile 2019-10-14 17:45:24 +03:00
tmshv 0c41bffb75 add to middlewares withCollection (unstable) 2019-10-14 17:45:00 +03:00
tmshv c77dc74965 rm lib/component 2019-10-14 17:44:03 +03:00
tmshv f3b20b88f6 server.js EOF 2019-10-14 17:23:27 +03:00
tmshv 285475762e ArticleCardList style moved to styled jsx 2019-10-14 17:23:16 +03:00
tmshv 4fc424b145 core/Teacher format 2019-10-14 17:14:45 +03:00
tmshv 57454962f1 core/schedule moved to server/schedule 2019-10-14 16:51:31 +03:00
tmshv fab2b8033e now conf EOF 2019-10-14 16:34:55 +03:00
tmshv bb18eb3778 now conf removed alias 2019-10-14 16:34:49 +03:00
tmshv 64f9ba7a21 AlbumImage size calculation 2019-10-14 16:34:28 +03:00
tmshv ea5055b46c [sync] create_post html renamed to tree 2019-10-14 16:33:45 +03:00
tmshv 21db9a91b3 [sync] hash_salt_images increased 2019-10-14 16:32:48 +03:00
tmshv 22d9757dc3 [sync] hash_salt_document increased 2019-10-14 16:32:34 +03:00
tmshv a898dc446f [sync] Document upload clean 2019-10-14 16:31:00 +03:00
tmshv a70967f37d [sync] create_image image_processing_enabled supported 2019-10-14 16:30:35 +03:00
tmshv bb0a9a00f6 [sync] Image upload refactoring 2019-10-14 16:29:56 +03:00
tmshv c3cbdd24ff [sync] art.shlisselburg.org host changed to static.shlisselburg.org 2019-10-14 14:53:50 +03:00
tmshv f9a4b65452 [sync] one of logger message was changed 2019-10-14 14:53:03 +03:00
tmshv f3062f7379 [sync] support custom item filter function 2019-10-14 14:52:17 +03:00
tmshv b052d48e1e removed “based on” section 2019-10-13 22:26:03 +03:00
tmshv 2c57f772aa Merge branch 'dev' of github.com:tmshv/hudozka into dev 2019-10-13 22:20:04 +03:00
tmshv 1c25448014 [sync] pillow version updated 2019-10-13 22:19:53 +03:00
tmshv 33b5c1ebe5 package.json EOF 2019-10-13 22:19:34 +03:00
tmshv db8e187861 eslint version updated 2019-10-13 22:19:25 +03:00
tmshv 656fc1eb2c Merge pull request #4 from tmshv/dependabot/pip/utils/Sync/pyyaml-5.1
Bump pyyaml from 3.11 to 5.1 in /utils/Sync
2019-10-13 22:17:04 +03:00
tmshv 09ba4cb710 Merge branch 'dev' into dependabot/pip/utils/Sync/pyyaml-5.1 2019-10-13 22:16:42 +03:00
tmshv da713304fd Merge branch 'dev' of github.com:tmshv/hudozka into dev 2019-10-13 22:11:36 +03:00
tmshv d40c0855cb added dockerignore 2019-10-13 22:10:42 +03:00
tmshv 8d534a1cd2 added nowignore 2019-10-13 22:10:29 +03:00
tmshv ed355c4de2 Merge pull request #5 from tmshv/dependabot/pip/utils/Sync/requests-2.20.0
Bump requests from 2.10.0 to 2.20.0 in /utils/Sync
2019-10-13 21:38:05 +03:00
tmshv 249f002551 Merge branch 'master' of github.com:tmshv/hudozka 2019-10-13 21:30:04 +03:00
dependabot[bot] e053f06300 Bump requests from 2.10.0 to 2.20.0 in /utils/Sync
Bumps [requests](https://github.com/requests/requests) from 2.10.0 to 2.20.0.
- [Release notes](https://github.com/requests/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/requests/requests/compare/v2.10.0...v2.20.0)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-13 18:20:28 +00:00
dependabot[bot] c8b0ad3731 Bump pyyaml from 3.11 to 5.1 in /utils/Sync
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 3.11 to 5.1.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/3.11...5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-13 18:20:24 +00:00
tmshv 3f90e35336 Merge pull request #3 from tmshv/dev
Nextjs version
2019-10-13 21:19:11 +03:00
tmshv 0603f64b4c rm unused src/routes/schedule 2019-10-13 20:53:18 +03:00
tmshv 71c9ec964a page documents clean 2019-10-13 20:30:33 +03:00
tmshv c97c7d14a0 added now config 2019-10-13 19:57:47 +03:00
tmshv 6c201f9305 next-lib refactoring 2019-10-13 19:57:25 +03:00
tmshv fe5cc36182 added wrapper to getInitialProps to prevent api calls in production 2019-10-13 19:48:52 +03:00
tmshv dded475c47 build config updated
copying robots.txt moved to separate script
export script merged with build script
2019-10-13 18:35:01 +03:00
tmshv 0ae9601309 Article component format 2019-10-13 18:26:48 +03:00
tmshv 281940942f album.js -> album.jsx 2019-10-13 16:36:14 +03:00
tmshv 97106dd427 article page get initial props stability improvement 2019-10-13 16:30:34 +03:00
tmshv 40519b9c46 collective page get initial props stability improvement 2019-10-13 16:30:17 +03:00
tmshv d82201d131 next-lib ; rm 2019-10-13 16:18:04 +03:00
tmshv a70abcd64a next config export trailing slash enabled 2019-10-13 16:13:38 +03:00
tmshv f78deffbd5 next-lib requestGet fix & refactoring 2019-10-13 16:13:09 +03:00
tmshv 44d2ba7bff articles page default articles 2019-10-13 16:12:42 +03:00
tmshv 6352ca66d9 index page default articles list 2019-10-13 16:12:28 +03:00
tmshv 7ab68f5a8e getInitialProps request stability improvements 2019-10-12 06:21:02 +03:00
tmshv 95c8369df2 add withMiddleware for all api routes. Now it do nothing 2019-10-12 04:58:56 +03:00
tmshv cd7536f74f fix broken build due to wrong App import in album page 2019-10-12 04:56:37 +03:00
tmshv 01b9064700 core db optimisation 2019-10-12 02:17:24 +03:00
tmshv 9925d4dc8b removed unused coverage tool
TODO: move to jest later
2019-10-12 01:31:01 +03:00
tmshv 2445aa5aa9 removed unused gulp and other build related packages 2019-10-12 01:26:36 +03:00
tmshv a502ddd4df next pages uses absolute url resolver to access api from getInitialProps 2019-10-11 23:14:01 +03:00
tmshv 28a4d05fe4 articles pages default page size 2019-10-11 21:55:53 +03:00
tmshv 2c1306ba2f index page default page size 2019-10-11 21:55:27 +03:00
tmshv fd126998bd [Sync] run options refactoring 2019-08-05 18:54:13 +03:00
tmshv d8716b71e2 [Sync] added sync-smart (unstable) 2019-08-05 18:24:12 +03:00
tmshv bd81d696b8 [Sync] settings update 2019-08-05 18:08:20 +03:00
tmshv b01172f405 gitignore update 2019-08-05 17:55:39 +03:00
tmshv 68e0fd5dd5 Image component update 2019-08-05 17:26:37 +03:00
tmshv 800f43bd8a lib menu update 2019-08-05 17:26:14 +03:00
tmshv 94d06aa8cd mapOf moved to server lib 2019-08-05 17:25:51 +03:00
tmshv 04db0114e7 PersonCard style cleanup 2019-08-05 17:24:16 +03:00
tmshv f0f33fe201 ArticleCard + ArticleCardList refactoring 2019-08-05 17:23:30 +03:00
tmshv 0ea937847a HudozkaTitle refactoring 2019-08-05 17:22:43 +03:00
tmshv 28967ada51 collective page format 2019-08-05 17:22:10 +03:00
tmshv 8ca8b43f12 index page title format 2019-08-05 17:21:50 +03:00
tmshv b6f70568fb package.json 4 spaces 2019-08-05 16:46:54 +03:00
tmshv 1da972f0ea core db removed unused 2019-08-05 16:41:21 +03:00
tmshv 55406b2b18 App component refactoring 2019-08-05 15:43:33 +03:00
tmshv 6a87513703 PersonCardList -> CardList + refactoring 2019-08-05 15:36:02 +03:00
tmshv e76d55c0a7 CollectiveImage refactoring 2019-08-05 15:35:28 +03:00
tmshv 27bbdad7b1 PersonCard refactoring 2019-08-05 15:34:30 +03:00
tmshv 24773f0c65 ArticleCard hover effect refactored to width/height scale to fix Safari bug with transform+transition+border-radius 2019-08-05 15:20:12 +03:00
tmshv 904555d1b6 packages removed 2019-08-04 20:43:22 +03:00
tmshv 54cfe7f2d0 ArticleCard refactoring + style update 2019-08-04 20:42:59 +03:00
tmshv 2ab341cd71 rm middleware/error 2019-08-04 19:57:27 +03:00
tmshv bdf9b29f1e rm lib/render 2019-08-04 19:57:17 +03:00
tmshv 56e21000a5 rm services/Instagram 2019-08-04 18:19:29 +03:00
tmshv 4e13a18072 rm modules/Feed 2019-08-04 17:55:02 +03:00
tmshv 0a7a9587fc + feed script 2019-08-04 17:53:55 +03:00
tmshv 29a9383756 rm gulpfile 2019-08-03 19:04:12 +03:00
tmshv fee7a4f6da nginx + dockerfile update 2019-08-03 19:03:39 +03:00
tmshv 1b77f6b2de robots.txt + sitemap.xml 2019-08-03 19:02:07 +03:00
tmshv 5ab2084763 404 page update 2019-08-03 19:01:15 +03:00
tmshv 1736fcb899 _document meta fix 2019-08-03 16:58:16 +03:00
tmshv 5ecff7fc4d next config option updated 2019-08-03 03:07:26 +03:00
tmshv 5aff7d0fe7 lib menu export updated 2019-08-03 03:06:57 +03:00
tmshv 46258f7f94 Meta component update 2019-08-03 03:05:49 +03:00
tmshv aa596b5859 teacher page meta update 2019-08-03 02:57:03 +03:00
tmshv e67d8ab40e api person update 2019-08-03 02:56:53 +03:00
tmshv 464485a52c articles page meta 2019-08-03 02:51:30 +03:00
tmshv 2eab1d18a7 document page meta 2019-08-03 02:51:30 +03:00
tmshv 1b96796ef0 rm main.hbs 2019-08-03 02:51:30 +03:00
tmshv ced4e47d54 teacher page meta 2019-08-03 02:49:09 +03:00
tmshv 4ee2ec7d74 article page meta 2019-08-03 00:26:40 +03:00
tmshv 33ee2d218e article api preview update 2019-08-03 00:26:27 +03:00
tmshv d29bfbff89 page meta 2019-08-03 00:19:19 +03:00
tmshv e42f739797 api page update 2019-08-03 00:18:55 +03:00
tmshv 7fb04d8ffa gallery page meta 2019-08-02 23:46:51 +03:00
tmshv d732777748 documents page clean 2019-08-02 23:40:45 +03:00
tmshv 5708f778c7 documents page meta 2019-08-02 23:40:33 +03:00
tmshv f2802c87a8 collective page refactoring 2019-08-02 23:35:09 +03:00
tmshv 866d82f44c collective meta 2019-08-02 21:29:43 +03:00
tmshv 2f3676f123 collective image uses new api 2019-08-02 21:29:31 +03:00
tmshv bab4f6cb3c YMetrika script fix 2019-08-02 21:28:47 +03:00
tmshv 8d67fbefd1 api image update 2019-08-02 21:28:33 +03:00
tmshv ed1a924156 articles page head 2019-08-02 19:43:10 +03:00
tmshv 0661780117 rm src/render 2019-08-02 19:37:25 +03:00
tmshv 3ba574a147 Meta component update 2019-08-02 19:29:12 +03:00
tmshv d3fff01b14 home page meta 2019-08-02 18:31:34 +03:00
tmshv a10ea32af3 home page url hardcoded 2019-08-02 18:31:14 +03:00
tmshv aed6c1aac7 removed old api/pages 2019-08-02 18:31:00 +03:00
tmshv 3ca52d6903 added Meta component 2019-08-02 18:30:47 +03:00
tmshv 85439ced56 added google analytics 2019-08-02 17:52:56 +03:00
tmshv 61db139a0d fotorama script ordering fix 2019-08-02 17:52:44 +03:00
tmshv a31d8b3fa5 _document format 2019-08-02 17:52:28 +03:00
tmshv 2c9f5f08d4 YMetrika refactoring 2019-08-02 17:50:00 +03:00
tmshv f4008a4750 yandex metrika 2019-08-02 17:41:45 +03:00
tmshv 2d847ed46f client app file update 2019-08-02 17:41:30 +03:00
tmshv 77dd528982 3rdparty -> static + _document links 2019-08-02 17:21:30 +03:00
tmshv c2000bcb31 added favicons 2019-08-02 17:14:09 +03:00
tmshv 049c0f4aad populating head with meta tags 2019-08-02 16:34:45 +03:00
tmshv a291899f52 schedule title 2019-08-02 16:23:48 +03:00
tmshv ecd6efd4fd teacher title 2019-08-02 16:23:41 +03:00
tmshv 7c3f3542ac page title 2019-08-02 16:23:30 +03:00
tmshv 1c65440536 gallery title 2019-08-02 16:23:20 +03:00
tmshv b0542dfe80 documents title 2019-08-02 16:23:12 +03:00
tmshv 3da16a0a86 document title 2019-08-02 16:23:02 +03:00
tmshv 69dcb8793a collective title 2019-08-02 16:22:53 +03:00
tmshv b1d8b2483e article title 2019-08-02 16:22:41 +03:00
tmshv ae48ee1842 album title 2019-08-02 16:22:31 +03:00
tmshv e366830677 home page size query 2019-08-02 16:08:13 +03:00
tmshv 07cd42abc1 next config refactoring 2019-08-02 16:08:13 +03:00
tmshv 4378d49681 home page title 2019-08-02 16:08:13 +03:00
tmshv ef9618d443 edit.hbs removed 2019-08-02 16:08:13 +03:00
tmshv 862118fe1c core Document format 2019-08-02 16:08:13 +03:00
tmshv d04c61aef5 next config updated; added exportPathMap 2019-08-02 16:07:48 +03:00
tmshv 869b65635c npm start script updated 2019-08-02 15:32:10 +03:00
tmshv 27722ae87c articles page pageSize from query 2019-08-02 15:31:58 +03:00
tmshv 56a6735bfd api articles returns totalPages 2019-08-02 15:31:37 +03:00
tmshv a2b5b2a39a added lodash 2019-08-02 15:25:31 +03:00
tmshv 962780aeb1 hardcoded page url 2019-08-02 15:21:11 +03:00
tmshv 7599e9d41f api articles urls fix 2019-08-01 17:41:37 +03:00
tmshv 4443a5ca18 rm index entrypoint 2019-08-01 17:40:32 +03:00
tmshv b90b2a3e77 api pages 2019-08-01 17:40:17 +03:00
tmshv 606164bb43 api persons urls 2019-08-01 17:39:53 +03:00
tmshv 1be8911070 api pages urls 2019-08-01 17:39:44 +03:00
tmshv 4043682c3d api files urls 2019-08-01 17:39:14 +03:00
tmshv 7e1a5c7af0 api articles urls 2019-08-01 17:39:08 +03:00
tmshv 579021658b api albums urls 2019-08-01 17:38:58 +03:00
tmshv 0713bad871 connect fn update 2019-08-01 17:10:50 +03:00
tmshv 43af2996bf app moved to next.js 2019-08-01 14:44:25 +03:00
tmshv dcca513aea lib array old export 2019-08-01 14:39:10 +03:00
tmshv d8cf5c7525 getPathWithNoTrailingSlash defaults 2019-08-01 14:36:37 +03:00
tmshv 5ad84cd61e core Document format 2019-08-01 01:39:20 +03:00
tmshv 28627bfa85 gitignore update 2019-07-31 23:13:52 +03:00
tmshv 4313650e69 removed draft.js packages 2019-07-31 19:05:50 +03:00
tmshv 30efb94287 Update from Forestry.io
Roman Timashev updated data/articles/article-test.md
2019-07-31 14:46:34 +00:00
tmshv 3023f30225 Update from Forestry.io
Roman Timashev updated data/articles/article-test.md
2019-07-31 14:45:28 +00:00
tmshv 4560b35b05 Update from Forestry.io
Roman Timashev created uploads/2019/Устав 2015.pdf
2019-07-31 14:44:55 +00:00
tmshv c8a0f19b3c Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:42:13 +00:00
tmshv e47856398b Rename data/articles/settings.json to data/settings.json 2019-07-31 17:41:56 +03:00
tmshv 071dfaee9e Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:38:27 +00:00
tmshv 07ec977efd Create settings.json 2019-07-31 17:37:31 +03:00
tmshv 73161efaf2 Update from Forestry.io
Roman Timashev updated data/articles/article-test.md
2019-07-31 14:35:12 +00:00
tmshv e73f5ce40e Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:34:15 +00:00
tmshv f37fc02067 Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:33:32 +00:00
tmshv a8d879c3f5 Update from Forestry.io
Roman Timashev created data/articles/article-test.md
2019-07-31 14:08:47 +00:00
tmshv 70004146e4 Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:07:20 +00:00
tmshv b570f413a9 Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:06:35 +00:00
tmshv 4e9cb7a033 Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:05:38 +00:00
tmshv 33651018e3 Update from Forestry.io - Updated Forestry configuration 2019-07-31 14:03:20 +00:00
tmshv 12accfee3f Update from Forestry.io
Roman Timashev created uploads/2019/HudozkaMain2014.jpg
2019-07-31 14:00:38 +00:00
tmshv 2925eb7469 Update from Forestry.io - Updated Forestry configuration 2019-07-31 13:58:47 +00:00
tmshv 16501372ae Update from Forestry.io - Updated Forestry configuration 2019-07-31 13:24:40 +00:00
tmshv 2933cb2e07 Update from Forestry.io - Updated Forestry configuration 2019-07-31 12:15:59 +00:00
tmshv f05aea3b04 npm audit fix 2019-07-17 16:43:55 +03:00
tmshv 1dab596bc6 next updated to 9.0.2 2019-07-17 16:43:02 +03:00
tmshv 79891891b9 Html component format 2019-07-17 16:41:06 +03:00
tmshv aabed9d686 next config added 2019-07-17 16:39:58 +03:00
tmshv b05c5856c2 packages update 2019-07-17 16:39:40 +03:00
tmshv dd8091abfc buildMenu path fix 2019-05-30 19:09:19 +03:00
tmshv 9dc776f1b3 getHtml moved to Html component 2019-05-30 18:49:11 +03:00
tmshv 81518fd57e lib render refactoring: extract buildMenu to lib/menu 2019-05-30 17:27:23 +03:00
tmshv 10166293df deleted edit code; added next config; refactoring 2019-05-30 03:00:30 +03:00
tmshv 85968e0609 handle db page not found improved 2019-05-30 00:25:39 +03:00
tmshv cbc00bee03 server app renamed to server 2019-05-30 00:13:01 +03:00
tmshv 83c7972877 http server creation refactoring 2019-05-30 00:04:15 +03:00
tmshv a3505abd46 index bootscrap function refactoring 2019-05-29 23:58:51 +03:00
tmshv 0cce97ac00 added dev script; babelrc update to use last object-rest-spread plugin 2019-05-29 23:55:22 +03:00
tmshv b1ce3a38ec deleted obsolette configs 2019-05-29 23:38:57 +03:00
tmshv 3f27d6f5ad koa updated to 2.7 2019-05-29 23:37:17 +03:00
tmshv 157f522b9b react updated to 16.8 2019-05-29 23:36:35 +03:00
tmshv beca1919da npm audit fix force 2019-05-29 23:35:43 +03:00
tmshv 88954f060f npm audit fix 2019-05-29 23:34:15 +03:00
tmshv 49cb2b349d package-lock updated 2019-05-29 23:32:59 +03:00
tmshv 2e474d4b56 hudozka package renamed to hudozka 2019-05-29 23:31:02 +03:00
tmshv 89395b8681 hudozka version changed to 5.0.0 2019-05-29 23:30:42 +03:00
tmshv 701f786f07 Merge pull request #2 from tmshv/dev
v4 last updates
2019-05-29 23:28:03 +03:00
tmshv 1bca661e13 [sync] upload driver changed to s3 2019-05-29 23:06:57 +03:00
tmshv dbadbdafc3 sync yandexdisk api extended from 2018.05 2019-05-29 23:05:06 +03:00
tmshv 759f1217b5 hudozka app added edit from 2018.02 2019-05-29 22:29:21 +03:00
tmshv 6805e07434 packages update 2019-02-24 04:15:01 +03:00
tmshv f976001c41 [sync] image url base changed + cleanup 2019-01-24 19:12:13 +03:00
tmshv af4ccd29d7 [sync] hash salt updates 2019-01-24 19:11:51 +03:00
tmshv 07f65a0043 Merge branch 'dev' of tmshv/hudozka into master 2018-05-23 07:39:15 +00:00
tmshv ef3fa2b0c7 link color bugfix 2018-05-23 10:37:17 +03:00
tmshv 3002e9817f Merge branch 'dev' of tmshv/hudozka into master 2018-05-23 07:29:04 +00:00
tmshv 3abf2125c7 drone build when section removed 2018-05-23 10:28:07 +03:00
tmshv ca9562994b drone scp step when section updated 2018-05-23 10:27:09 +03:00
tmshv efd45570c8 drone build when section updated 2018-05-23 10:23:55 +03:00
tmshv c9bec06fef scss variables converted to css variables 2018-05-23 10:22:28 +03:00
tmshv 6410409d47 accepts middleware updated 2018-05-23 10:21:28 +03:00
tmshv a52b845285 fn queryObject changed 2018-05-23 10:21:08 +03:00
tmshv 8745c4a703 koa-query dependency removed 2018-05-23 10:20:14 +03:00
tmshv fe9a18dd03 Merge branch 'dev' of tmshv/hudozka into master 2018-05-23 00:06:53 +00:00
tmshv bd5fa7f6ca gulpfile fix copy 3rd party 2018-05-23 03:06:14 +03:00
tmshv 19952b72f1 Merge branch 'dev' of tmshv/hudozka into master 2018-05-22 23:56:21 +00:00
tmshv 36328db7fe Merge branch 'master' into dev 2018-05-23 02:55:15 +03:00
tmshv 7216312fe2 Footer author updated 2018-05-23 02:53:42 +03:00
tmshv f3b6420d02 Footer updated + added dynamic copyright 2018-05-23 02:51:49 +03:00
tmshv b7579413db build configs updated 2018-05-23 02:51:16 +03:00
tmshv 8a77868700 Merge branch 'dev' of tmshv/hudozka into master 2018-05-22 22:57:50 +00:00
tmshv 45993254bb letsencrypt config removed 2018-05-23 01:55:30 +03:00
tmshv 0d79157a56 readme updated 2018-05-23 01:54:24 +03:00
tmshv 01e2df75d7 old configs removed 2018-05-23 01:54:07 +03:00
tmshv 3bee90d1e9 Dockerfile renamed 2018-05-23 01:42:34 +03:00
tmshv d74fc6de8d docker-compose config updated 2018-05-23 01:39:37 +03:00
tmshv 4f321ab105 drone config added 2018-05-23 01:33:10 +03:00
tmshv 5db54c273c removed babel-polyfill 2018-05-23 01:30:30 +03:00
tmshv a8b91035e6 packages updated 2018-05-23 01:28:48 +03:00
tmshv 8e606be761 build updated 2018-05-23 00:40:37 +03:00
tmshv 278426c219 gulpfile deleted babel infra: run with modern node instead 2018-05-23 00:03:43 +03:00
tmshv 2d0d2f8987 Docker build based on node 10 2018-05-22 23:25:04 +03:00
tmshv b1ac3df6ed [Sync] Instagram pattern improved 2018-03-30 13:23:39 +03:00
tmshv 396535e52b [www] changed default mongo URI 2018-01-24 07:37:36 +03:00
tmshv 6668b5e861 Merge pull request #1 from tmshv/dev
4.0
2018-01-04 23:35:03 +03:00
tmshv 5f108945a2 [www] version 4.0.0 2018-01-04 23:33:42 +03:00
tmshv 9d6e22fac8 [www] npm start using plain node 2018-01-04 23:33:19 +03:00
tmshv e8880ba466 [www] added docker-compose.yaml 2018-01-03 06:23:58 +03:00
tmshv 6ad43fa995 [www] added Dockerfile 2018-01-03 06:15:48 +03:00
tmshv 983fc1ef04 [www] config eslinted 2018-01-03 06:15:32 +03:00
Roman Timashev 7233347579 [www] exit if mongo connection fails 2017-11-07 13:49:20 +03:00
Roman Timashev 07e0d85f3e [www] remove configFile from config 2017-11-07 13:48:55 +03:00
Roman Timashev c3618747db [Sync] Image url factory generates lower cased file extension 2017-11-07 13:46:56 +03:00
Roman Timashev b948c8962c [Sync] image hash salt incremented 2017-11-07 13:46:17 +03:00
Roman Timashev 1b3c6fcfa1 [www] /collective render not fail on 404 big image 2017-11-07 01:13:16 +03:00
Roman Timashev 70af6cc37e [www] core Config stability improvements. Config::findConfig always returns an instance of Config 2017-11-07 01:12:32 +03:00
Roman Timashev 77e663a9c2 [www] default port changed to 3000 2017-11-06 17:43:06 +03:00
Roman Timashev 396b7a6d40 [www] config optimisation: removed private.json 2017-11-06 17:42:42 +03:00
Roman Timashev ec8d18b587 [www] removed instagram code 2017-11-06 17:36:50 +03:00
Roman Timashev 7c531f93d2 [www] + /neighbors menu item 2017-10-29 01:50:30 +03:00
Roman Timashev 1887b6265f [www] /documents color yellow -> gray 2017-10-29 01:50:13 +03:00
Roman Timashev 871a3ee279 [www] opa style updated 2017-10-28 20:28:23 +03:00
Roman Timashev 78b1526a3d [www] Page refactoring: added model, creating preview, renderPage 2017-10-28 20:28:14 +03:00
Roman Timashev 9ce0fbb53d [Sync] Page preview 2017-10-28 20:26:16 +03:00
Roman Timashev 5bb2f0dc15 [Sync] Image id updated 2017-10-28 19:24:54 +03:00
Roman Timashev 31a345b182 [www] person card style updated and optimized for tablet 2017-10-28 19:24:27 +03:00
Roman Timashev dbcd89ac7f [www] article card style updated and optimized for tablet 2017-10-28 19:24:19 +03:00
Roman Timashev 1d1b19e2e9 [www] person card clean 2017-10-28 19:22:58 +03:00
Roman Timashev e6b206fa49 [www] opa version updated: opacity 1 by default 2017-10-28 19:22:47 +03:00
Roman Timashev d2f578c1c8 [www] gulp compile updated: compile with webpack and babel 2017-10-28 19:11:41 +03:00
Roman Timashev a72fe8b14d [www] opa version updated 2017-10-28 19:10:49 +03:00
Roman Timashev 3d453ead4b [www] sticky footer improvements (fix on old iOS) 2017-10-28 17:27:24 +03:00
Roman Timashev 438c340a96 [www] content sizes for tablet updated 2017-10-28 17:26:36 +03:00
Roman Timashev f174d297f2 [www] renderAlbum 2017-10-28 17:26:18 +03:00
Roman Timashev 280fd105d7 [www] Article component signature changed 2017-10-28 17:25:52 +03:00
Roman Timashev e39d732dbd [Sync] Image url checking disabled 2017-10-28 16:43:50 +03:00
Roman Timashev 61605ac9a8 [www] DocumentList component updated 2017-10-28 15:55:48 +03:00
Roman Timashev bf0b68d794 [www] HMenu updated for works fine on Safari 2017-10-28 15:55:16 +03:00
Roman Timashev 84241ff889 [www] style updated: visited links, other changes 2017-10-28 15:53:50 +03:00
Roman Timashev 20c6d6b6bb [www] Person card optimized to mobile 2017-10-28 15:53:13 +03:00
Roman Timashev 12e23cee4d [www] Document optimized to mobile 2017-10-28 15:52:53 +03:00
Roman Timashev 5ab196ffaf [www] ArticleCard optimized to mobile 2017-10-28 15:52:34 +03:00
Roman Timashev 1f45596dd3 [www] Article updated, added rendering of article tags 2017-10-28 15:51:50 +03:00
Roman Timashev b4337eec52 [Sync] request post updated 2017-10-28 15:49:47 +03:00
Roman Timashev c3514ae818 [Sync] Token is_url changed: match whole string as a url 2017-10-28 15:48:34 +03:00
Roman Timashev ec73ad0ef2 [Sync] youtube token urlparse based instead of re based 2017-10-28 15:47:54 +03:00
Roman Timashev 73865fcea2 [Sync] Image refactoring. Added DocumentPreviewImage 2017-10-28 15:47:13 +03:00
Roman Timashev 544f0e218f [Sync] uses updated marker 2017-10-27 15:04:21 +03:00
Roman Timashev 4ae002b1ff [Sync] 1. marker refactoring; 2. added document url token 2017-10-27 15:01:32 +03:00
Roman Timashev 6e93875377 [Sync] person hash salt incremented 2017-10-27 14:58:53 +03:00
Roman Timashev e18a780f56 [Sync] added url checking 2017-10-27 14:58:27 +03:00
Roman Timashev df8299a851 [Sync] added Person preview 2017-10-27 14:57:42 +03:00
Roman Timashev 94e1eb5685 [www] persons meta updated 2017-10-25 13:04:10 +03:00
Roman Timashev 67f83f51f2 [www] meta refactoring 2017-10-25 02:01:41 +03:00
Roman Timashev a0c6e15459 [Sync] Person added preview 2017-10-25 01:58:14 +03:00
Roman Timashev 2459c580ce [www] Collective & Person meta image 2017-10-25 01:57:49 +03:00
Roman Timashev 66ca7719fa [www] persons render cleanup: - console.log 2017-10-25 01:57:25 +03:00
Roman Timashev 2afd624004 [Sync] hash salts changed 2017-10-24 17:30:21 +03:00
Roman Timashev 67544cec3e [Sync] added large image size 2017-10-24 17:29:47 +03:00
Roman Timashev 6b08e77f07 [Sync] Image hashing updated 2017-10-24 17:29:25 +03:00
Roman Timashev 11ac59e3b0 [Sync] Album common provider 2017-10-24 17:29:01 +03:00
Roman Timashev c7ea3555c7 [Sync] Schedule common provider 2017-10-24 17:28:38 +03:00
Roman Timashev 727791c5e7 [Sync] ImageCollectionToken build 2017-10-24 17:28:04 +03:00
Roman Timashev 1efd23c403 [www] update 2017-10-24 17:27:46 +03:00
Roman Timashev 69f9c1344e [www] CollectiveImage updated 2017-10-24 17:27:24 +03:00
Roman Timashev d1897487a7 [www] PersonCard update 2017-10-24 17:27:04 +03:00
Roman Timashev f723724613 [www] ArticleCard clean: Image from component 2017-10-23 23:17:00 +03:00
Roman Timashev 39ce95746f [www] Collective/Person pages updated 2017-10-23 23:15:36 +03:00
Roman Timashev b2191200da [Sync] Person update 2017-10-23 22:59:12 +03:00
Roman Timashev e0ced3473c [Sync] settings cleanup 2017-10-23 19:52:05 +03:00
Roman Timashev 8d8b210132 [Sync] Settings to string changed 2017-10-23 19:47:45 +03:00
Roman Timashev ad96fed675 [Sync] Settings uses common provider 2017-10-23 19:47:21 +03:00
Roman Timashev 7aad93b963 [www] Added MarkerTable 2017-10-23 19:11:35 +03:00
Roman Timashev 7c8b56ba93 [Sync] Articles refactoring: using common provider, other changes and bugfixes 2017-10-23 19:10:58 +03:00
Roman Timashev 3d395bdaa7 [Sync] Image uses rel path 2017-10-23 19:08:32 +03:00
Roman Timashev cdd1782690 [Sync] Using CSV rendering 2017-10-23 19:08:19 +03:00
Roman Timashev 99d5d2a350 [Sync] + CSVToken for csv to table rendering 2017-10-23 19:07:32 +03:00
Roman Timashev 60c80e3eef [www] Hide hidden documents from /documents 2017-10-23 19:06:02 +03:00
Roman Timashev 4b357e5987 [Sync] Document hidden option for all documents from pages 2017-10-23 19:05:31 +03:00
Roman Timashev 9e9edfa176 [Sync] Document init refactoring 2017-10-23 18:48:34 +03:00
Roman Timashev 68739ddbde [www] Document stability up 2017-10-23 02:19:25 +03:00
Roman Timashev 9855c14da0 [Sync] Image token uses markdown for caption 2017-10-23 02:06:02 +03:00
Roman Timashev aab113314d [www] Document update 2017-10-23 02:05:31 +03:00
Roman Timashev f36c2617f6 [www] Article style updated 2017-10-23 01:29:04 +03:00
Roman Timashev 09f8bdb376 [Sync] Document origin 2017-10-23 00:25:33 +03:00
Roman Timashev c328a1e48f [Sync] Added missing utils text file.py 2017-10-22 23:26:21 +03:00
Roman Timashev a5fd1d7339 [Sync] Document refactoring + attaching to post 2017-10-22 23:24:07 +03:00
Roman Timashev 12fde22d58 [Sync] Token refactoring 2017-10-22 23:20:52 +03:00
Roman Timashev 8d87a50365 [Sync] DocumentTokenFactory -> BuildTokenFactory 2017-10-22 23:20:22 +03:00
Roman Timashev 46968ef0cf [Sync] Added Marker (refactored Kazimir) 2017-10-22 14:21:40 +03:00
Roman Timashev f9f7203b1e [Sync] minor sync init refactoring 2017-10-22 09:55:31 +03:00
Roman Timashev df6f40fb9b [Sync] Album str updated 2017-10-22 09:54:57 +03:00
Roman Timashev 2f2ce72839 [Sync] Album post update 2017-10-22 09:54:09 +03:00
Roman Timashev 0698343592 [Sync] Page hash salt increment 2017-10-16 13:04:25 +03:00
Roman Timashev fc43f89099 [Sync] ALS Typograf stability impovements 2017-10-16 13:04:05 +03:00
Roman Timashev 7793830e60 [Sync] Kazimir fixing quotes inside links improved to work with begining of text 2017-10-16 13:03:38 +03:00
Roman Timashev 82abbed156 [www] HudozkaTitle no nbsp 2017-10-16 03:25:11 +03:00
Roman Timashev 6bb912f34a [Sync] Page build cleanup 2017-10-16 03:20:03 +03:00
Roman Timashev 6eae73bff3 [Sync] Kazimir sample running changed 2017-10-16 03:17:22 +03:00
Roman Timashev 90aad8a205 [Sync] Kazimir quote fix improved: working with empty tail 2017-10-16 03:16:48 +03:00
Roman Timashev a034254cbe [Sync] Kazimir uses ALS Typograf 2017-10-16 03:16:12 +03:00
Roman Timashev 3ecf1deb5d [Sync] Post update: uses new create_post 2017-10-16 03:15:22 +03:00
Roman Timashev 14954c2b71 [www] Initial Fake Parsing Documents from Markdown. Added documents to Article 2017-10-15 22:27:48 +03:00
Roman Timashev 2630dfd1a2 [Sync] Page constructor clean 2017-10-15 22:09:59 +03:00
Roman Timashev 9def80ce1e [Sync] Article import cleanup 2017-10-15 22:07:24 +03:00
Roman Timashev cce71d9475 [Sync] Page Images url factory removed: using default md5 name 2017-10-15 22:01:18 +03:00
Roman Timashev 9e0a6437a9 [Sync] Article's create_post moved to base sync 2017-10-15 22:00:25 +03:00
Roman Timashev 096848a3d1 [Sync] base create_post function moved to Album model 2017-10-15 21:59:35 +03:00
Roman Timashev dfef6d1e0f [www] Article & Cloud Page style updated 2017-10-15 21:50:05 +03:00
Roman Timashev cbd0fa0688 [www] Article Head refactoring 2017-10-15 21:33:50 +03:00
Roman Timashev a041fd25bf [www] Article style updated 2017-10-15 20:48:34 +03:00
Roman Timashev e57e638dec [www] Article style refactoring: article -> Article 2017-10-15 20:47:58 +03:00
Roman Timashev 4c85a3115d [www] redner update: template file moved to options 2017-10-15 16:20:32 +03:00
Roman Timashev 67870d2705 [www] menu padding behaviour changed 2017-10-15 14:05:38 +03:00
Roman Timashev 6fa1b2ec12 [www] ArticleCard link refactoring 2017-10-15 13:56:26 +03:00
Roman Timashev 7e825f4831 [www] 404 page updated 2017-10-15 13:18:20 +03:00
Roman Timashev 2e4cbd530e [www] Paginator updated 2017-10-15 13:11:44 +03:00
Roman Timashev c8868273d7 [Sync] Article hashing updating: adding preview file to hash 2017-10-15 12:54:38 +03:00
Roman Timashev cb60bc5548 [www] ArticleCard style impoved: use % width 2017-10-15 12:46:06 +03:00
Roman Timashev d0270ae972 [www] added HudozkaTitle component 2017-10-15 12:38:05 +03:00
Roman Timashev c9a24c008b [www] minor refactoring and remove console.log 2017-10-15 12:33:25 +03:00
Roman Timashev 0ebf8c7185 [Sync] YandexDisk base url changed 2017-10-15 03:00:24 +03:00
Roman Timashev 57e9212741 [www] ArticleCard style improved 2017-10-15 02:46:17 +03:00
Roman Timashev 625a557e2a [www] Articles & Article pages refactoring. Displaying as ArticleCard 2017-10-15 02:44:22 +03:00
Roman Timashev 610266db80 [www] Fixed renderHome 2017-10-15 02:31:53 +03:00
Roman Timashev 64196da642 [www] Article hr style 2017-10-15 02:18:53 +03:00
Roman Timashev bae92849c7 [www] Article margin for text changed from 20px to 10px 2017-10-15 02:18:40 +03:00
Roman Timashev d918d98b17 [www] added ArticleCard on Home 2017-10-15 02:16:57 +03:00
Roman Timashev 047c934953 [www] added Image::findByFile 2017-10-15 02:12:19 +03:00
Roman Timashev 6d0b94e3ff [www] lib store changed: added total 2017-10-15 02:12:05 +03:00
Roman Timashev 93772c88e7 [www] Home Content size changed from thin to wide 2017-10-15 02:11:24 +03:00
Roman Timashev 009205d858 [www] renderHome signature changed 2017-10-15 02:09:57 +03:00
Roman Timashev 50b3f7fbd5 [www] added Article model 2017-10-15 02:09:26 +03:00
Roman Timashev b1d25143ec [www] added Config::articleCardDefaultPreview 2017-10-15 02:08:45 +03:00
Roman Timashev 374011d48d [Sync] Article hash salt incremented 2017-10-15 02:03:41 +03:00
Roman Timashev b261aee7ea [Sync] Article preview creation changed: using direct preview field from manifest only. Removed settings.preview_image_default_url 2017-10-15 02:03:21 +03:00
Roman Timashev ed7909a9a7 [Sync] fixed a missing Article images list creation (using id instead of ref) 2017-10-15 02:01:57 +03:00
Roman Timashev 44e5f832b6 [www] sort eslinted 2017-10-15 01:40:53 +03:00
Roman Timashev acaec420c7 [www] added Config::findConfig method 2017-10-15 01:10:12 +03:00
Roman Timashev 7dd19b1856 [Sync] Model updated: added ref property 2017-10-15 00:53:20 +03:00
Roman Timashev 287c2854af [Sync] Sync Image from folders 2017-10-15 00:53:03 +03:00
Roman Timashev 374b80a0eb [Sync] added jpeg as image format 2017-10-15 00:51:23 +03:00
Roman Timashev c85491d121 [Sync] Sync core updated: optional usage of Origin for remove query 2017-10-15 00:51:00 +03:00
Roman Timashev bd87428f8e [Sync] Image.id -> Image.ref 2017-10-15 00:18:23 +03:00
Roman Timashev 25a235f5cf [Sync] Article minor refactoring: using has_param method 2017-10-14 21:41:18 +03:00
Roman Timashev 91ace41345 [www] Fixed an issue with 500 error on undefined article 2017-10-14 11:52:35 +03:00
Roman Timashev 892e270c99 [www] home page rendering refactoring 2017-10-14 11:47:49 +03:00
Roman Timashev 5b66c90b60 [www] App component refactoring 2017-10-14 11:28:18 +03:00
Roman Timashev 89a5a192c9 added package-lock.json 2017-10-14 11:27:50 +03:00
Roman Timashev ae8790bd6c updated eslint to work with React 2017-10-14 11:27:20 +03:00
Roman Timashev 55ebddeccc [www] Disqus width is same as article 2017-10-14 03:15:02 +03:00
Roman Timashev 029d147b6b [www] Using CSS Variables for common style: font size, base color, some sizes 2017-10-14 02:59:41 +03:00
Roman Timashev f3b725c1d8 [www] Article hyphens enabled 2017-10-14 02:58:53 +03:00
Roman Timashev 9ddfde8810 [www] Content Animation from Top 2017-10-14 02:52:18 +03:00
Roman Timashev fb2f104552 [www] BodyWrapper mobile part removed 2017-10-14 02:45:01 +03:00
Roman Timashev 3e17d982ae [www] CloudPage h1 style changed 2017-10-14 02:43:01 +03:00
Roman Timashev b582ecc4c7 [www] content style updated 2017-10-14 02:42:12 +03:00
Roman Timashev 8e4db6868b [www] mobile content width changed 90% -> 95% 2017-10-14 02:41:57 +03:00
Roman Timashev 882bf40108 [www] Using PT fonts from Google Fonts instead of self-hosted 2017-10-14 02:30:41 +03:00
Roman Timashev 386cf3e849 [www] Kazimir image transition removed 2017-10-14 02:27:06 +03:00
Roman Timashev 650f0dec2c [www] Kazimir image figure style updated 2017-10-14 02:26:47 +03:00
Roman Timashev c1161f69e9 [Site] letsencrypt config updated: removed shburg domain 2017-10-14 01:49:43 +03:00
Roman Timashev b57528bfae [Sync] hotfix: Recursion in create_tree cause mistake in function name: create_tree -> clean_tree 2017-10-13 20:31:29 +03:00
Roman Timashev 836daf1e8e Article hash salt changed to 2 2017-10-13 20:30:02 +03:00
Roman Timashev 32da2fa816 [Sync] Kazimir fixes quote inside A links 2017-10-13 20:29:49 +03:00
Roman Timashev 9820b4a1c2 [Sync] Kazimir refactoring. Signature changed 2017-10-13 20:28:54 +03:00
Roman Timashev bb7ab3b95e [Sync] Article hash salt incremented to 1 2017-10-13 18:01:16 +03:00
Roman Timashev 4fa879a727 [Sync] fixed kazimir video 2017-10-13 17:59:16 +03:00
Roman Timashev 7b798b5610 [Sync] minor refactoring & code cleanup 2017-10-13 17:39:07 +03:00
Roman Timashev 8627db4ccd [Sync] Article post creation updated. Kazimir updated: video is not part of markdown 2017-10-13 17:33:27 +03:00
Roman Timashev 52a80d6496 [Sync] sync refactoring: renamed main -> run_sync 2017-10-12 17:42:56 +03:00
Roman Timashev 39a15b0fa6 [Sync] sync runners renamed 2017-10-12 17:38:10 +03:00
Roman Timashev ca691b492a [Sync] Image building now is async 2017-10-12 17:35:29 +03:00
Roman Timashev 87da3492ef [Sync] Image logging changed 2017-10-12 17:34:05 +03:00
Roman Timashev 213d7ca344 [Sync] Page uses common provider 2017-10-12 17:31:55 +03:00
Roman Timashev 222b01f3ec [Sync] Page string representation changed 2017-10-12 17:30:46 +03:00
Roman Timashev 1eb15970fe [Sync] imagemagick creates progressive jpegs 2017-10-12 17:29:45 +03:00
Roman Timashev 96bb77e3c3 [Sync] Article string representation chaned 2017-10-12 17:29:04 +03:00
Roman Timashev f00ff0cb7d [Sync] request uses auth from config instead of literal 2017-10-12 17:28:33 +03:00
Roman Timashev ec745b60b2 [www] + Opa; added opa to gallery item 2017-09-23 01:25:05 +03:00
Roman Timashev dac49bc456 [Sync] Image updated to work async 2017-09-19 20:45:25 +03:00
Roman Timashev ac5a20382e [Sync] Document refactoring (title) 2017-09-19 20:44:09 +03:00
Roman Timashev b9f16c981c [Sync] logging style updated 2017-09-19 20:42:25 +03:00
Roman Timashev 12a9a41221 [Sync] document cleanup 2017-09-19 19:51:56 +03:00
Roman Timashev 8e587b5781 [www] - redirect.tsv (now uses remote config) 2017-09-19 13:49:20 +03:00
Roman Timashev 4d3fa1c064 [www] articles router eslinted 2017-09-19 13:46:35 +03:00
Roman Timashev 6eb35930ea [www] - hudozka-data, hudozka-api-v1, hudozka-middlewares 2017-09-19 13:46:16 +03:00
Roman Timashev 5ad321ec0e [www] + Config model; config updated; using remote config; server refactoring 2017-09-19 13:45:06 +03:00
Roman Timashev 18a0b36a09 [www] removed api middleware 2017-09-19 01:59:20 +03:00
Roman Timashev 952eaab69b [Sync] + Settings sync 2017-09-19 01:59:01 +03:00
Roman Timashev 16a8719927 [www] Meta Image size added 2017-09-18 14:33:54 +03:00
Roman Timashev 2bdceaecb8 [Sync] sync.py cleanup 2017-09-18 12:45:48 +03:00
Roman Timashev fe93e89447 [www] og name -> og property 2017-09-18 02:58:34 +03:00
Roman Timashev 0361376a95 [Sync] logger refactoring 2017-09-18 01:03:44 +03:00
Roman Timashev 5ab4a1cbfc [www] Article metadata updated 2017-09-18 00:57:27 +03:00
Roman Timashev 597e87896e [www] Gallery page updated 2017-09-18 00:46:51 +03:00
Roman Timashev 6fa8564cc8 [Sync] update: removed unnecesarry Sync subclasses 2017-09-17 16:34:56 +03:00
Roman Timashev 84745ead6d [Sync] refactoring, removed old code, cleanup 2017-09-17 13:40:09 +03:00
Roman Timashev 32843f4d09 [Sync] fix missing params in models Page, Person, Schedule 2017-09-17 13:39:15 +03:00
Roman Timashev 66e5a450d3 merge branch 'feature/async-sync' into dev 2017-09-16 17:11:56 +03:00
Roman Timashev 62982a9945 [Sync] + new Album sync 2017-09-16 17:08:31 +03:00
Roman Timashev 3c8f6418b5 [Sync] + Model::has_param 2017-09-16 17:06:56 +03:00
Roman Timashev fb47bc1abc [Sync] settings image sizes updated 2017-09-15 12:22:56 +03:00
Roman Timashev 4b2ae46aa1 [Sync] Article preview 2017-09-15 12:22:14 +03:00
Roman Timashev a4a17db943 [Sync] + Model::get_param, + Model::_get_relpath, + Model.params 2017-09-15 12:20:21 +03:00
Roman Timashev a8ba0a60eb [Sync] Image::new updated. + md5 2017-09-15 12:19:37 +03:00
Roman Timashev e54c448704 [Sync] + new Schedule sync 2017-09-14 21:33:40 +03:00
Roman Timashev 1a8adaf524 [Sync] cleanup sync from document sync 2017-09-14 21:10:13 +03:00
Roman Timashev d6a3cb99eb [Sync] Kazimir: img -> figure with caption 2017-09-13 14:21:48 +03:00
Roman Timashev 5f732d8468 Style updated. Introduced css variables 2017-09-13 14:18:18 +03:00
Roman Timashev 51a1edcea3 Added kazimir image 2017-09-13 14:17:49 +03:00
Roman Timashev 0d2f75b345 App starting message updated 2017-09-13 14:17:07 +03:00
Roman Timashev f57ef2135c sass version updated 2017-09-13 14:16:32 +03:00
Roman Timashev fb2b231ad4 config udpate 2017-09-13 14:16:00 +03:00
Roman Timashev 41f878d05c config eslinted 2017-09-13 14:14:41 +03:00
Roman Timashev 2e5aa4d21e [Sync] + new Article sync 2017-09-13 14:06:59 +03:00
Roman Timashev 953ef0bc28 [Sync] + new Person sync 2017-09-12 13:08:40 +03:00
Roman Timashev 1da289802c [Sync] Image updated 2017-09-12 01:26:18 +03:00
Roman Timashev 98f9de7d60 [Sync] Image update: do not compile unchanged images 2017-09-11 19:22:28 +03:00
Roman Timashev 63796dfab3 [Sync] cleanup 2017-09-11 19:21:16 +03:00
Roman Timashev 8bf1ea37c8 [Sync] + new Page sync 2017-09-11 18:25:14 +03:00
Roman Timashev cd9c790f97 [Sync] -sync/document 2017-09-11 18:22:58 +03:00
Roman Timashev fa71fc5cf1 [Sync] Sync class changed: + provider, collection parameters, run returns void 2017-09-11 18:20:38 +03:00
Roman Timashev 6f065ccb93 [Sync] Image model updated 2017-09-11 18:19:33 +03:00
Roman Timashev 7e66514689 [Sync] config update: --config arg, other 2017-09-11 18:19:17 +03:00
Roman Timashev 06965bebee [sync] updated: config based; async loop; Documents adopted to new system 2017-09-10 22:12:09 +03:00
Roman Timashev b0b518fd8c gulpfile compile temporary just copy app.js file 2017-09-08 19:50:20 +03:00
Roman Timashev 77e1b01f61 node-version updated to 6.9.1 2017-09-08 19:47:04 +03:00
Roman Timashev e01e7786a3 ignoring .vscode 2017-09-08 19:46:09 +03:00
tmshv 7fb200a4fb main template fotorama updated 2017-06-13 23:48:25 +03:00
tmshv 80c96d0b20 Kazimir style updated 2017-06-13 23:31:23 +03:00
tmshv 6248301710 + fotorama libs 2017-06-13 23:31:10 +03:00
tmshv 3bbc09bd76 Article style updated 2017-06-13 23:30:54 +03:00
tmshv 5e37ea2939 content style updated 2017-06-13 18:26:27 +03:00
tmshv f703f78a89 route Pages refactoring 2017-06-13 18:26:13 +03:00
tmshv 5d6c6bbda6 robots.txt Host updated 2017-06-13 17:51:50 +03:00
tmshv 943c73cb2d main.hbs: app script updated 2017-06-04 12:57:54 +03:00
tmshv 8b5ceb2724 Google Analytics back 2017-06-04 12:56:04 +03:00
tmshv 5e8948b8da Hmenu update + iPad horizontal 2017-06-03 20:31:39 +03:00
tmshv f478be03f5 [Sync] Kazimir Instagram 2017-06-03 20:16:58 +03:00
tmshv cb4b449c72 Redirect ! page to normal version 2017-06-03 20:16:26 +03:00
tmshv 2668dacef4 Hmenu fix footer override 2017-06-03 19:51:44 +03:00
tmshv e344e18165 Hmenu Icons 2017-06-03 19:42:53 +03:00
tmshv 36440f9ac4 + Instagram Embed script to main.hbs 2017-06-02 04:02:08 +03:00
tmshv 7c0a4bb0ef [Sync] Kazimir update. Typograph for Articles, Unicode HTML 2017-06-01 01:50:22 +03:00
tmshv 68cb12051a [Sync] Events + News -> Articles 2017-06-01 00:27:53 +03:00
tmshv ff20c411b4 [Sync] text transform added chars 2017-06-01 00:25:59 +03:00
tmshv b71028cb35 [Sync] album url update 2017-06-01 00:25:37 +03:00
tmshv 7e21480c5b hmenu item style udpated 2017-05-31 22:06:01 +03:00
tmshv ffba68c4b6 New Menu friendly for Mobile 2017-05-31 21:49:42 +03:00
tmshv ee3ee74650 gulpfile update 2017-05-31 20:58:35 +03:00
tmshv f12a7c350c package.json removed angular & old packages 2017-05-31 20:43:06 +03:00
tmshv c3fb349043 + cookie session 2017-05-31 20:42:36 +03:00
tmshv 0480e6e980 sitemap url witout trailing slash 2017-05-31 17:04:16 +03:00
tmshv 2d8e1bd1ee sitemap fix 2017-05-31 17:02:25 +03:00
tmshv bcad3d048d Pages meta description updated 2017-05-28 13:51:40 +03:00
tmshv 9b883d9ff1 Schedule menu item highlighting fix 2017-05-28 13:51:23 +03:00
tmshv ff3336040a Schedule style on Big Screens fixed 2017-05-26 23:59:02 +03:00
tmshv d6bdfd4c8c Mobile Schedule updated 2017-05-26 23:40:53 +03:00
tmshv f222d0f248 - io 2017-05-26 23:34:59 +03:00
tmshv 4af1963a3c robots.txt updated 2017-05-26 23:34:48 +03:00
tmshv 7a5d16f34d Templates removed 2017-05-26 23:34:39 +03:00
tmshv 808b47c18a route index clear 2017-05-26 23:20:26 +03:00
tmshv 17fdb4b46e server update + pages back + sitemap update 2017-05-26 23:20:16 +03:00
tmshv ef59089d01 Schedule update & Finally close the issue with Safari/Chrome Schdule style bug 2017-05-26 23:19:32 +03:00
tmshv 96c966e427 sitemap.xml works with articles 2017-05-26 19:57:55 +03:00
tmshv f2d26a510d articles refactoring 2017-05-26 18:41:34 +03:00
tmshv c5708a1ff2 shortName stability 2017-05-26 18:41:26 +03:00
tmshv fcf45614a3 Schedule serverside 2017-05-26 18:41:11 +03:00
tmshv 06b3f481bd gallery refactoring 2017-05-26 13:45:01 +03:00
tmshv 864d895105 Documents serverside 2017-05-26 13:44:53 +03:00
tmshv 244f1efd03 Page component update 2017-05-26 03:09:04 +03:00
tmshv 0e1ac642a5 Page shareable 2017-05-26 03:00:53 +03:00
tmshv 1f0f3374c4 meta update 2017-05-26 02:02:08 +03:00
tmshv 7d9f642b12 home routes refactoring 2017-05-26 01:39:05 +03:00
tmshv 525f630812 Serverside Teachers 2017-05-26 01:38:49 +03:00
tmshv f257e08e7c added App options 2017-05-26 01:19:00 +03:00
tmshv d941878cbe Gallery React key fix 2017-05-25 22:37:24 +03:00
tmshv 853f155b66 Album preview update 2017-05-25 22:37:14 +03:00
tmshv c3676a02be core Image update 2017-05-25 22:36:37 +03:00
tmshv 51ea05cd61 index refactoring 2017-05-25 21:49:55 +03:00
tmshv 2aa46f3d04 Server based Gallery 2017-05-25 21:49:40 +03:00
tmshv 3a6440e5b0 Article component flexibility updated 2017-05-25 21:48:45 +03:00
tmshv b69c19239e DB Models for Image, Album, based on Data 2017-05-25 21:48:11 +03:00
tmshv b829885b00 /album is Server side renderable 2017-05-23 01:54:29 +03:00
tmshv c2a457eea7 No Prerender.io 2017-05-22 21:16:27 +03:00
tmshv acf1eee521 + Yandex.Metrika 2017-05-22 16:40:53 +03:00
tmshv 43c828a81d index updated 2017-05-22 16:04:21 +03:00
tmshv 9a2e2dae4e + Likely for Articles 2017-05-22 14:17:15 +03:00
tmshv e21425fd52 /news, /events deleted, Articles update 2017-05-22 13:30:05 +03:00
tmshv 7bc34f9710 Flexibility changes with App, main.hbs 2017-05-22 12:55:52 +03:00
tmshv be84058aba Article server based
Required Sync changes!
2017-05-22 04:50:34 +03:00
tmshv 6acb7ba64d + date utils 2017-05-22 04:48:52 +03:00
tmshv 9b650da9be main view head data updated 2017-05-21 03:40:51 +03:00
tmshv 5377807daa + Meta, OG, Schema 2017-05-21 03:24:40 +03:00
tmshv d016b5e6f9 - escaped fragment tag from views 2017-05-21 00:28:57 +03:00
tmshv 3ffeaefb55 gulp build copying views to /out 2017-05-21 00:01:43 +03:00
tmshv 1aef002781 missing paths to views fixed 2017-05-20 23:48:21 +03:00
tmshv 1d6772eef3 Introduced Server Side Rendering for Cloud Pages based on React 2017-05-20 23:24:18 +03:00
tmshv 569b849457 footer style update 2017-05-20 23:20:53 +03:00
tmshv 22447b845a main-menu style colorless 2017-05-20 23:20:22 +03:00
tmshv f39c4b1371 Footer binded to the ground 2017-05-20 21:17:44 +03:00
tmshv 4ca0c14aa2 404 image url fixed 2017-05-20 15:45:50 +03:00
tmshv 2c89c4bb19 + react 2017-05-20 15:45:38 +03:00
tmshv 75cb144506 routes index eslinted 2017-05-18 22:14:22 +03:00
tmshv 331b326f87 [Feed] update & cleanup feed generator 2017-04-22 20:12:14 +03:00
tmshv 4f373e9e00 [Feed] Sorting feed by date 2017-04-22 20:11:43 +03:00
tmshv 208b184fae [Feed] + Readme 2017-04-22 02:04:39 +03:00
tmshv 07b03154da [Feed] init 2017-04-22 01:33:05 +03:00
tmshv 5da1572589 menu updated 2017-04-02 14:33:01 +03:00
tmshv a6554ee70d added some courses to model definition 2017-03-09 02:00:46 +03:00
tmshv 1cfaa52fb4 Documents sorting updated 2017-03-05 11:24:57 +03:00
tmshv 3d4c498030 /documents hardcoded sorting of categories/documents 2017-03-05 03:49:26 +03:00
tmshv 3b48a3a801 /documents updated: vertical layout 2017-03-05 01:12:52 +03:00
tmshv 6e0149b980 [sync] document uploading 2017-02-21 17:57:13 +03:00
tmshv ab216bf29f [sync] skip_unchanged setting 2017-02-21 17:56:50 +03:00
tmshv 1eda156b48 [sync] added awards 2017-02-21 17:56:18 +03:00
tmshv f5c42d454f [sync] page: working with content header for html content 2017-02-21 17:55:20 +03:00
tmshv 3954dfaeb0 page shburg -> shlisselburg 2017-02-21 17:54:16 +03:00
tmshv 7c2d4dfd62 [sync] image uploading 2017-02-21 17:53:41 +03:00
tmshv 18150e8b35 pdf to jpg moved to ghost script backend 2017-02-21 17:52:47 +03:00
tmshv 8ee3ed5c75 [sync] image oprimize stability updates 2017-02-21 17:52:22 +03:00
tmshv b31db6d3f2 [sync] shburg -> shlisseslburg 2017-02-21 17:50:54 +03:00
tmshv 7bb29edc0b theme updated 2017-02-21 17:49:42 +03:00
tmshv a48e2bbd8d /documenst back 2017-02-21 14:26:16 +03:00
tmshv df435d2763 deploy script: shburg -> art.shlisseslburg.org 2017-02-21 14:26:05 +03:00
tmshv bbdabf5610 themes updated 2017-02-21 06:53:23 +03:00
tmshv 5d738c71a7 /documents hided 2017-02-21 06:46:52 +03:00
tmshv 3b63f34fd9 themes for schedule updated 2017-02-21 05:23:23 +03:00
tmshv da3ea2173a theme system updated 2017-02-21 04:32:23 +03:00
tmshv 369845f601 themes udpated 2017-02-21 00:53:29 +03:00
tmshv 969cabb560 Accessibility update 2017-02-20 05:15:28 +03:00
tmshv ba102fc9fc menu eslinted 2017-02-20 02:31:44 +03:00
tmshv ee9919b39d style updated: introduced themes, accessibility controlling, other 2017-02-20 02:30:25 +03:00
tmshv f27cc4003f Awards as separate menu item 2017-02-19 23:29:46 +03:00
tmshv aef05d6937 .gitignore updated (+venv dirs) 2017-01-23 01:17:35 +03:00
tmshv fc9faaaf22 route pages eslinted 2017-01-23 01:16:18 +03:00
tmshv bbf1819d9d + cookie 2017-01-23 01:14:44 +03:00
tmshv 4944e8cd4f gulpfile eslinted 2017-01-23 01:13:39 +03:00
tmshv b68ed4c8ed schedule updated 2017-01-23 01:12:30 +03:00
tmshv 2d0b649957 course model eslinted 2017-01-23 00:59:26 +03:00
tmshv 17228e5c55 core schedule eslinted 2017-01-23 00:46:49 +03:00
tmshv 13726d88b0 theme enabled 2017-01-22 08:30:43 +03:00
tmshv 178d3c7955 Navigator eslinterd 2017-01-22 08:07:41 +03:00
tmshv 37d85879d3 server eslinted 2017-01-22 07:33:53 +03:00
tmshv 17de1d0fac App eslinted 2017-01-22 06:50:14 +03:00
tmshv e3b95a68e6 AppController eslinted 2017-01-22 06:45:11 +03:00
tmshv ca23ccc75f + accessibility styles 2017-01-22 06:36:03 +03:00
tmshv d5db0ca07e [site] updated 2017-01-03 06:31:02 +03:00
tmshv e9ac51d675 [data] updated 0.0.1 -> 0.0.2 2017-01-03 06:30:03 +03:00
tmshv e9cb52d20b [site] eslint config updated 2017-01-03 06:28:33 +03:00
tmshv 10bf37b094 [site] documents router eslinted 2016-12-03 10:40:15 +03:00
tmshv 6135e57b54 eslint config updated 2016-12-03 10:39:21 +03:00
tmshv 9443f68195 [site] - main (react) 2016-12-03 10:35:25 +03:00
tmshv 52d481e030 [site] menu updated 2016-12-03 09:58:46 +03:00
tmshv 90e8918e4c [sync] resize updated 2016-12-03 09:57:52 +03:00
tmshv 4034df5c2d pinned news sorting 2016-11-24 17:50:04 +03:00
tmshv a18abe215c [sync] all 2016-11-24 17:49:48 +03:00
tmshv a7b923ef1f style update 2016-11-23 22:33:06 +03:00
tmshv cfb5118c75 main.html scripts body -> head 2016-11-23 02:17:44 +03:00
tmshv e7a4eab102 update 2016-11-23 02:11:21 +03:00
tmshv a4b4e07687 [sync] updated; page images 2016-11-23 02:10:26 +03:00
tmshv 9f58ffca09 [sync] person skip untoched 2016-11-13 21:30:46 +03:00
tmshv a5f95a36c5 sitemap eslinted 2016-11-12 12:21:07 +03:00
tmshv da5823ddf7 sitemap collects pages 2016-11-12 12:19:02 +03:00
tmshv d749e46c53 v3.5.0 2016-11-12 12:11:40 +03:00
tmshv 834ed4df83 [install] forever part removed. we are going to systemd based running 2016-11-12 12:10:31 +03:00
tmshv d22c5fa5f7 fix GA lost 2016-11-12 05:34:30 +03:00
tmshv 30dd018589 deploy updated 2016-11-12 05:18:30 +03:00
tmshv edf5fbf4bd + CLOUD PAGES; style updated; other changes 2016-11-12 05:17:10 +03:00
tmshv dad12f52f4 node-version revert to 4.6.1 (next LTS is not working) 2016-11-12 05:15:40 +03:00
tmshv 3951cd2edf package.json + run gulp 2016-11-11 21:28:39 +03:00
tmshv d36fe4b342 [sync] sync post fix 2016-11-11 21:28:18 +03:00
tmshv 714ceb2ac8 [sync] + pages support 2016-11-11 21:28:00 +03:00
tmshv 59cbcc7886 client app.js eslinted 2016-11-11 03:30:52 +03:00
tmshv 997923a3d8 eslint global angular 2016-11-11 03:30:40 +03:00
tmshv 7030518abb client config eslinted 2016-11-11 03:24:15 +03:00
tmshv f121eff445 update 2016-11-11 02:36:03 +03:00
tmshv be398bf5ce + eslint 2016-11-11 02:35:32 +03:00
tmshv dc8363ee84 [sync] updated: + albums, kazimir rendering, other changes 2016-11-11 02:34:19 +03:00
tmshv 2ea3c1f322 [sync] + kazimir support 2016-11-11 02:33:01 +03:00
tmshv 38d3c8d65c [sync] person (teachers) updated 2016-10-15 16:01:25 +03:00
tmshv 54fbe4ef9c + SYNC_LOCAL_PATH environment variable 2016-10-14 00:17:00 +03:00
tmshv 80d336e561 [sync] + yandex disk info 2016-09-19 01:03:13 +03:00
tmshv eafd517de7 [sync] posts (events, news) update 2016-09-19 00:51:48 +03:00
tmshv 2c70e00ddb [sync] text transform update 2016-09-19 00:51:22 +03:00
tmshv f371c8eba3 [sync] small simplification 2016-09-18 20:42:39 +03:00
tmshv 6130b76661 [sync] + README 2016-09-18 10:12:16 +03:00
tmshv 07a388f3d1 [sync] all available methods activated 2016-09-18 01:48:02 +03:00
tmshv b98a809543 [sync] updated post events 2016-09-18 01:47:38 +03:00
tmshv 10dd3d6316 [sync] post updated 2016-09-14 02:11:37 +03:00
tmshv 3217a27bb8 [sync] schedule updated 2016-09-14 02:11:11 +03:00
tmshv 7300a49fc4 [sync] + fn.constant 2016-09-14 02:10:22 +03:00
tmshv 5e34a0aad3 [sync] cssselect requirement 2016-09-14 02:09:19 +03:00
tmshv 35a488978c [sync] schedules updated (new format), toml based schedules 2016-09-13 23:29:23 +03:00
tmshv 26ef317190 [sync] document cleanup 2016-09-13 23:28:40 +03:00
tmshv 43594fc991 [sync] + toml requirement 2016-09-13 23:27:50 +03:00
tmshv f38ddf8bd0 [sync] updated 2016-09-13 00:17:41 +03:00
tmshv 40a5d09e78 [sync] tests introduced 2016-09-13 00:17:10 +03:00
tmshv b5fdb0d6d6 [sync] sync.py updated 2016-09-13 00:15:06 +03:00
tmshv 25fea1c0d5 [sync] requirements update 2016-09-13 00:14:17 +03:00
tmshv 501477468f [sync] -old models 2016-09-13 00:12:27 +03:00
tmshv c5c89dcf61 sync: settings cleanup & update 2016-08-06 10:51:28 +03:00
tmshv 6c99192122 sync: yandex disk update 2016-08-06 10:32:50 +03:00
tmshv b85f4ca6dc sync: + requirements.txt 2016-08-06 10:32:37 +03:00
tmshv cb43d89cf6 gitignore changes 2016-08-06 10:32:24 +03:00
tmshv 5bc018a91e sync: some code reformating 2016-08-06 10:32:05 +03:00
tmshv 492a99d20a sync: cleanup 2016-08-06 02:02:11 +03:00
tmshv 6442900149 sync: env function for access environment variables 2016-08-06 02:01:45 +03:00
tmshv a27a0cddce sync: fixed & updated 2016-08-06 01:50:18 +03:00
tmshv 4a38abd13a sync: text translit based on unidecode library 2016-08-06 01:49:41 +03:00
tmshv 99f46a3f8b sync fix: yandex disk scan limit to 1000000 2016-08-06 01:46:20 +03:00
tmshv 13a3a02613 sync update: moving to ./sync.py as entry point 2016-08-05 17:54:00 +03:00
tmshv 6f144fb6de using nodenv to manage node versions: current version is 4.4.7 2016-08-05 17:53:25 +03:00
tmshv 927674e53e sync update: + data provider; refactoring; documents update 2016-08-05 02:04:06 +03:00
tmshv 144e69e6c4 update 2016-08-04 23:46:59 +03:00
tmshv d7a4486b35 gulpfile update 2016-08-04 23:36:25 +03:00
tmshv cc7f0da501 css update 2016-08-04 23:35:59 +03:00
tmshv 24b28e6e4d utils update: moving some parameters to settings 2016-08-04 23:35:39 +03:00
tmshv 8143e21388 + .npmignore 2016-08-04 23:34:48 +03:00
tmshv af4b8f9c83 fix: nginx conf for letsencrypt auto renew 2016-07-05 22:52:29 +03:00
tmshv 8991a15e54 - bower 2016-04-05 22:44:17 +03:00
tmshv 5534173d65 node modules update 2016-04-05 22:43:31 +03:00
tmshv 392b3361c5 + nginx letsencrypt location 2016-04-05 22:40:58 +03:00
tmshv 35cc7c0caa + hudozka-middlewares, + hudozka-api-v1 2016-03-26 21:53:20 +03:00
tmshv 6347e4db35 babel-polyfill update version 2016-03-26 18:02:28 +03:00
tmshv b96d66591f + hudozka-data package; /api/v1/feed -> /api/v1/timeline; other updates 2016-03-26 17:33:22 +03:00
tmshv d0878ec296 Instagram Service deployment update 2016-03-26 15:11:39 +03:00
tmshv f2d1f71064 Timeline stability improvements 2016-03-26 15:11:12 +03:00
tmshv beebd497b3 gulp copy templates 2016-03-26 01:46:59 +03:00
tmshv c90f7da4bd nginx conf update: - api; - redirect 2016-03-26 01:46:45 +03:00
tmshv 8a0074cbf9 deployment update 2016-03-26 01:46:27 +03:00
tmshv 427de393ed + Instagram Service media endpoint to gram by shorname 2016-03-26 01:46:02 +03:00
tmshv 1e03cd012a + Instagram Service EndPoint request method 2016-03-26 01:45:15 +03:00
tmshv 9851f856e3 Instagram core update splitted to small functions 2016-03-26 01:44:36 +03:00
tmshv 6e2e279263 EOL 2016-03-26 01:43:45 +03:00
tmshv 1759542c9c remove hashtags filter stability improvement 2016-03-26 01:43:29 +03:00
tmshv 03074088bf api feed styling change 2016-03-26 01:43:10 +03:00
tmshv 2f9bec99a2 default port changed in config.js; no port in deploying scripts 2016-03-25 20:44:14 +03:00
tmshv 22e766aac8 install.js -NODE_ENV env variable 2016-03-25 20:43:39 +03:00
tmshv 60f0e1fd43 server.js EOL 2016-03-25 20:38:08 +03:00
tmshv 0c7a446fb2 koa static update 2016-03-25 20:38:01 +03:00
tmshv f9a3cad849 + index.js EOL 2016-03-25 20:32:31 +03:00
tmshv 68e41d7086 compiling node es6 to babelless /out 2016-03-25 20:31:42 +03:00
tmshv 40bb2a06b4 + koa logger update 2016-03-25 20:30:32 +03:00
tmshv bb97677d39 Instagram Microservice Update 2016-03-25 17:06:18 +03:00
tmshv ec52ee2c2a Instagram Service update 2016-03-25 13:36:00 +03:00
tmshv 30c8c4f259 instagram config private file from env 2016-03-24 23:58:57 +03:00
tmshv a756d6c5d3 Instagram service update; other 2016-03-24 23:52:26 +03:00
tmshv 6655a5fca8 feed update; other 2016-03-24 23:52:04 +03:00
tmshv 70707a2244 Data class + save options 2016-03-24 23:51:06 +03:00
tmshv 82b9a6b56b + ejson middleware 2016-03-24 23:50:10 +03:00
tmshv aa18f77ea7 + queryValue middleware for working with query string 2016-03-24 23:49:30 +03:00
tmshv aea2b8ff25 data api with io 2016-03-23 19:38:59 +03:00
tmshv 0ffa403b60 moving to koa 2.0; + api 2016-03-23 14:56:59 +03:00
tmshv 44724132c0 - api from server 2016-03-23 12:48:34 +03:00
tmshv 96daac15ba + core service; config update 2016-03-23 12:48:04 +03:00
tmshv 499ecad952 server app -> server function; other changes; 2016-03-23 12:47:18 +03:00
tmshv 5c2ca6f73e + routers() in route index 2016-03-23 12:46:32 +03:00
tmshv c6c8326f88 - instagram from config 2016-03-23 02:40:05 +03:00
tmshv ef3ebef8fd - client site insagram 2016-03-23 02:39:46 +03:00
tmshv 883a510c5c core update internal changes 2016-03-23 02:15:33 +03:00
tmshv 45065e00af + start files 2016-03-23 02:12:33 +03:00
tmshv eaa9b7f094 + server 2016-03-23 02:12:19 +03:00
tmshv d8727f56b0 + core update 2016-03-23 02:12:11 +03:00
tmshv d002bd74a7 + routers 2016-03-23 02:11:53 +03:00
tmshv d3ab0713b4 + post model 2016-03-23 02:09:43 +03:00
tmshv e80e2164ab + instagram middleware 2016-03-23 02:09:33 +03:00
tmshv acffe28a33 + Instagram api module 2016-03-23 02:09:11 +03:00
tmshv 5c0ce10da2 + client app main 2016-03-23 02:07:34 +03:00
tmshv 8d26be8aba + core auth (authorizeUser) 2016-03-23 02:07:15 +03:00
tmshv 2028aacf08 + db 2016-03-23 02:06:52 +03:00
tmshv c7cd375757 + App component 2016-03-23 02:06:36 +03:00
tmshv a6038b25b1 + index.html template 2016-03-23 02:06:23 +03:00
tmshv 72f4a4942a + config 2016-03-23 02:05:43 +03:00
tmshv ecee774658 + abstract site api 2016-03-23 02:05:30 +03:00
tmshv d15f9e162f + instagram service 2016-03-23 01:04:07 +03:00
tmshv 83c1e09c89 building/deploying update 2016-03-23 01:00:24 +03:00
tmshv 969112807c nginx.conf update 2016-03-23 01:00:07 +03:00
tmshv 12b39c8b0b - instagram module 2016-03-23 00:59:45 +03:00
tmshv 73d628c94c fix styles/style gulp task name 2016-03-18 07:02:18 +03:00
tmshv 22ae4c2e35 promised-mongo revert to tmshv version 2016-03-18 07:01:50 +03:00
tmshv ea18e6c70b babel-polyfill from app.js -> libs.js 2016-03-18 06:14:37 +03:00
tmshv 10e0264cd0 gulp concat-bower -> compile 3rdparty 2016-03-18 06:14:18 +03:00
tmshv 0bfe35275f - disabling client instagram 2016-03-18 06:04:32 +03:00
tmshv 6558bf8e9f koa.io -> plain koa and to socket.io 2016-03-18 05:51:09 +03:00
tmshv fa76f19762 - instagram features 2016-03-18 05:50:48 +03:00
tmshv 236c52de5a serve path update 2016-03-18 05:49:32 +03:00
tmshv 2dc366c9ba + document page 2016-03-18 05:38:27 +03:00
tmshv d3e6eb2659 gulp compile task watching 2016-03-18 05:38:14 +03:00
tmshv c27f093e2e route index checking fn update 2016-03-18 05:37:55 +03:00
tmshv 2e4b463a36 gulp task styles -> style 2016-03-18 05:37:24 +03:00
tmshv 179bd2093f bower config update 2016-03-18 03:23:38 +03:00
tmshv 73cc19cc63 modules update 2016-03-18 03:03:41 +03:00
tmshv e9417aee71 gulpfile update: es6 + awsome 2016-03-18 03:03:23 +03:00
tmshv eb8a028315 hotfix: package.json comma 2016-03-18 01:59:51 +03:00
tmshv 636de8e37a + Articles 2016-03-18 01:55:33 +03:00
tmshv ac99501dad router index signature changed 2016-03-18 01:54:24 +03:00
tmshv 872d686a1b events router update: - /events/:event router, /events router uses pagination 2016-03-18 01:53:41 +03:00
tmshv 78472d8640 sitemap router update 2016-03-18 01:52:44 +03:00
tmshv f5fbd2888d - /news/:id router 2016-03-18 01:52:23 +03:00
tmshv cc4a11c717 routes cleaning up 2016-03-18 01:51:57 +03:00
tmshv 62d1dd1c2a hudozka title changed 2016-03-18 01:49:38 +03:00
tmshv 9484ec3e6a - fotorama links 2016-03-18 01:49:23 +03:00
tmshv 59820dcf79 + yandex verification metatag 2016-03-18 01:49:05 +03:00
tmshv 39d4e30463 hudozka title update 2016-03-18 01:48:49 +03:00
tmshv b44ef862af page school main image update 2016-03-18 01:47:51 +03:00
tmshv 3419c8e0a5 + some params to config 2016-03-18 01:43:34 +03:00
tmshv 203797a1fa babel packages moved dev deps -> deps 2016-03-18 01:41:25 +03:00
tmshv e475a20f9f prerender protocol http -> https 2016-03-18 01:39:37 +03:00
tmshv 75f1871172 project main repository renamed 2016-03-18 01:39:13 +03:00
tmshv e2dbcb6eb2 main page title changed 2016-03-18 01:28:43 +03:00
tmshv 45dd6f87f9 deploy/install scripts update 2016-03-18 01:26:53 +03:00
tmshv ba6ab4a4e3 fonts stylesheet path fixes 2016-03-18 01:25:05 +03:00
tmshv 23a4879821 robots.txt https sitemap 2016-03-18 01:24:18 +03:00
tmshv 0485a4acea update 2016-03-07 04:46:42 +03:00
tmshv 261e842802 sync util update 2016-03-07 04:46:14 +03:00
tmshv fe409c04a4 sync update: caching, refactoring, other 2016-03-06 02:24:24 +03:00
tmshv e68cfd7b2c navigation menu update; other 2016-03-04 15:45:11 +03:00
tmshv f07c39c317 FUCKING BIG SYNC UPDATE: caching, events, albums, documents, awards, news, schedules, teachers, other 2016-03-03 01:36:50 +03:00
tmshv 359cc430f5 FUCKING BIG UPDATE: server, parallax, apis, new data models, style, layout, other 2016-03-03 01:34:45 +03:00
tmshv e0f54171a9 content style update: + menu padding, other 2016-03-03 01:32:26 +03:00
tmshv 8bf89bd307 404 page update 2016-03-03 01:31:44 +03:00
tmshv d58dd1fae8 updated style variables 2016-03-03 01:30:46 +03:00
tmshv 5add54d1a4 + string util: stringToBoolean 2016-03-03 01:30:06 +03:00
tmshv ac0e7e089d + utils sort: sortBy 2016-03-03 01:29:46 +03:00
tmshv b21144e87d + common utils: unique, assign, map 2016-03-03 01:29:17 +03:00
tmshv 6b7a77fb15 + google youtube verification metatag 2016-03-03 01:28:33 +03:00
tmshv 85eea0fd00 + gallery album to redirect.tsv 2016-03-03 01:27:31 +03:00
tmshv 128db9f600 bower angular-route 1.4.1 -> 1.5.0 2016-03-03 01:26:53 +03:00
tmshv 109dbbe44f + Events Page 2016-02-27 23:30:43 +03:00
tmshv 026a38dab1 + content padding 2016-02-27 23:30:19 +03:00
tmshv 911146321e utils update; use imagemagick to thumbnails 2016-02-27 23:29:22 +03:00
tmshv 26c0534372 + redirect table support 2016-02-27 19:42:44 +03:00
tmshv 80719055b3 sync utils update 2016-02-27 19:42:18 +03:00
tmshv 47a077e0c1 documents categories 2016-02-27 19:40:25 +03:00
tmshv 923ee9b069 footer links target _blank 2016-02-27 19:39:32 +03:00
tmshv 05e50fd217 + babel-polyfill 2016-02-27 19:38:53 +03:00
tmshv 10008a323a documents update 2016-02-27 18:13:24 +03:00
tmshv 7b6559e57d - separate document page 2016-02-27 18:13:04 +03:00
tmshv 900f71b066 + Ext, Bytes filters 2016-02-27 18:11:12 +03:00
tmshv bd7e97a624 document sync update 2016-02-27 18:10:35 +03:00
tmshv 40321327d6 Sync util big update 2016-02-27 16:19:08 +03:00
tmshv 1e80bae401 + unstable Navigation component 2016-02-27 16:18:29 +03:00
tmshv 16a76fd793 + commented code 2016-02-27 16:16:57 +03:00
tmshv fee8ab9c7a tape-viewer disabled 2016-02-27 16:16:37 +03:00
tmshv 592def0101 main-menu style update 2016-02-27 16:14:53 +03:00
tmshv d50a5ae803 teacher-profile mobile style 2016-02-27 16:13:49 +03:00
tmshv e6abe43cb2 timeline stype update 2016-02-27 16:13:16 +03:00
tmshv b7de866b82 body-wrapper style change 2016-02-27 16:12:08 +03:00
tmshv 009211e13c + style .content-full, + mobile style content 2016-02-27 16:11:22 +03:00
tmshv 994c7f0602 page collective layout clean up 2016-02-27 16:10:30 +03:00
tmshv 939680afb7 + $content-full style variable 2016-02-27 16:07:04 +03:00
tmshv 111464ebb3 page collective layout update 2016-02-27 16:06:22 +03:00
tmshv 98dc68b5a9 page school new big picture 2016-02-27 16:05:37 +03:00
tmshv 7b973938a7 gulpfile update 2016-02-25 20:15:36 +03:00
tmshv 08840ef605 - data.js 2016-02-25 20:15:15 +03:00
tmshv c090f7d933 + PageDocuments component 2016-02-25 19:04:52 +03:00
tmshv bbd4987359 + PageGalleryAlbum component 2016-02-25 19:01:34 +03:00
tmshv c3d0ab56bc hotfix: PageGallery component name 2016-02-25 19:01:17 +03:00
tmshv 60b66123ef + PageGallery component 2016-02-25 18:53:57 +03:00
tmshv c51bdfbd10 - .page-documents 2016-02-25 18:53:40 +03:00
tmshv 2a16890f72 - ScheduleController 2016-02-25 18:53:18 +03:00
tmshv bfd1c139f5 + PageCollective component 2016-02-25 18:47:16 +03:00
tmshv 3d0150c289 + PageSchedule, PageSchool style update 2016-02-25 18:42:09 +03:00
tmshv cef4bc6bd5 + PageSchedule component 2016-02-25 18:40:48 +03:00
tmshv c91e46266f PageSchool fix controller 2016-02-25 18:40:23 +03:00
tmshv 2fa94c4e18 + animation style vars 2016-02-25 18:22:08 +03:00
tmshv 57141313e9 home page -> school page; + PageSchool component 2016-02-25 18:20:16 +03:00
tmshv 5c72276b5e cotacts now in client config 2016-02-25 18:06:41 +03:00
tmshv 1bb8c96c07 + string util 2016-02-25 18:06:20 +03:00
tmshv 48b2ca8d3e + FooterLinks component; footer links from main -> client config; style update 2016-02-25 17:52:23 +03:00
tmshv b7df552188 body-wrapper update 2016-02-25 05:25:04 +03:00
tmshv ea0d1175a5 gallery api update 2016-02-25 05:22:36 +03:00
tmshv 7ceb862dfc + AlbumCollection component; gallery style fix 2016-02-25 05:08:00 +03:00
tmshv b71ac27c31 Timeline component is unstable 2016-02-25 04:49:25 +03:00
tmshv 596ea0d781 APIFeed rm construcotr 2016-02-25 04:48:53 +03:00
tmshv 335ba9b6f9 body-wrapper is not flex based now 2016-02-25 04:42:22 +03:00
tmshv 5f01b552cb schedule orpho mistake fixed 2016-02-25 04:41:56 +03:00
tmshv 3f2ebd558f schedule table new layout based on flexbox 2016-02-25 04:41:28 +03:00
tmshv aec409d589 schedule table join filter for time 2016-02-25 03:33:50 +03:00
tmshv bacd305720 scheule selector update 2016-02-25 03:33:24 +03:00
tmshv ce0dd44b3d style entry point; style update 2016-02-25 03:32:28 +03:00
tmshv c855aa9b5f + APISchedule 2016-02-25 03:31:26 +03:00
tmshv c33944866e + Join filter 2016-02-25 03:30:22 +03:00
tmshv f3aaf5a547 core update, schedule router update, schedule populator update, collective update, other 2016-02-25 03:29:03 +03:00
tmshv 7d97953877 + sync_schedules util 2016-02-25 03:26:20 +03:00
tmshv 27f09669fe teacher profile component update 2016-02-24 23:56:45 +03:00
tmshv 35d6278aa4 collective content layout change 2016-02-24 23:56:20 +03:00
tmshv b72692ed2e $menu-width -> $menu-thickness 2016-02-24 23:55:34 +03:00
tmshv e9be260e93 page style update 2016-02-24 23:54:13 +03:00
tmshv 67a6eb6bed app.js update 2016-02-24 21:22:55 +03:00
tmshv 95c00fd1a5 app.js update 2016-02-24 21:22:36 +03:00
tmshv 9d0b042bd7 app.js update 2016-02-24 21:22:15 +03:00
tmshv 1ec346d4c2 app routes -> client config 2016-02-24 21:21:04 +03:00
tmshv 7a81a26bdd teacher profile update 2016-02-24 21:17:58 +03:00
tmshv f641c0b4d3 api collective -> list 2016-02-24 21:07:35 +03:00
tmshv 4d78366816 + client config 2016-02-24 21:06:02 +03:00
tmshv 8031d83f56 TeamController -> CollectiveController, team-member-profile -> teacher-profile; team.js -> collective.js 2016-02-24 20:58:19 +03:00
tmshv f40f164e4d APICollective sort option 2016-02-24 20:56:45 +03:00
tmshv 0dd03908b7 - team service from data.js 2016-02-24 20:55:52 +03:00
tmshv 77b5c5cfba - config.data 2016-02-24 20:55:03 +03:00
tmshv 4ac5ef507f net.js, date.js utils ES6 2016-02-24 20:54:02 +03:00
tmshv df12d1bf0d + sort.js utils 2016-02-24 20:52:15 +03:00
tmshv ca415e58de API service update 2016-02-24 19:10:42 +03:00
tmshv 56045a1b03 + APICollective 2016-02-24 18:52:43 +03:00
tmshv f91dfcbcdf collective router update 2016-02-24 18:49:28 +03:00
tmshv d4de62d133 ES6 update fixes 2016-02-24 18:47:11 +03:00
tmshv 7077b8d59f fix ES6 updates in instagram 2016-02-24 18:46:55 +03:00
tmshv ea2fba7be0 client team, docs -> collective, documents 2016-02-24 18:46:06 +03:00
tmshv f93c258d14 index + default args 2016-02-24 18:37:03 +03:00
tmshv 0c005712a1 let json -> const json 2016-02-24 18:36:14 +03:00
tmshv f2185c5f8c 404 ES6 refactoring, export signature change 2016-02-24 18:35:28 +03:00
tmshv 7901aecdda server.js uses queryObject 2016-02-24 18:32:01 +03:00
tmshv 776485d3e5 + queryObject to index router 2016-02-24 18:30:46 +03:00
tmshv c23f84ad76 config ES6 refactroing 2016-02-24 18:29:33 +03:00
tmshv 769d04194f /team -> /collective 2016-02-24 18:09:20 +03:00
tmshv c426e5a8d8 /docs -> /documents; documents router refactoring 2016-02-24 18:02:52 +03:00
tmshv 5244beecf8 + collective route 2016-02-24 18:02:09 +03:00
tmshv 54a6bddf90 server ES6 refactoring 2016-02-24 17:55:51 +03:00
tmshv 2ad012b27b routes/index ES6 refactoring; + json lambda 2016-02-24 17:44:11 +03:00
tmshv 33f16a2674 Sync: + sync_collective 2016-02-24 17:32:15 +03:00
tmshv 6419f93d5b Sync: + text 2016-02-24 17:31:57 +03:00
tmshv 721917bb02 Sync util restructuring 2016-02-24 17:30:24 +03:00
tmshv 9025044ae5 Schedule ES6 update 2016-02-23 01:46:57 +03:00
tmshv b9526ad1a6 - Timeline comments 2016-02-23 01:43:49 +03:00
tmshv 64947162b8 rename pages-animations.scss -> page-animation.scss 2016-02-22 16:29:41 +03:00
tmshv 73a3361376 timeline update: ES6, components, refactoring, other 2016-02-22 16:15:42 +03:00
tmshv 761938b17a ScheduleController ES6 update 2016-02-22 16:14:48 +03:00
tmshv 2044691aa9 home.html layout changed 2016-02-22 16:11:46 +03:00
tmshv a5d00cdedd + shadow style variables 2016-02-22 16:10:16 +03:00
tmshv 78b3ce67dd tape-viewer style update 2016-02-22 16:08:50 +03:00
tmshv 766fa7ca3e moving main-menu style -> ./components 2016-02-22 15:43:53 +03:00
tmshv 2463517588 - background-picture.scss 2016-02-22 15:41:27 +03:00
tmshv 8cc5c59563 ScheduleController update 2016-02-22 11:08:35 +03:00
tmshv 1cd2a41141 + choise common util 2016-02-22 04:45:20 +03:00
tmshv dca671c564 rename common util selectItem -> select 2016-02-22 04:36:22 +03:00
tmshv 78cbb576e3 common util selectItem signature update; common util test update 2016-02-22 04:35:16 +03:00
tmshv 62d710ea31 rename translateAnItem -> selectItem 2016-02-22 04:20:49 +03:00
tmshv 2cf5d0cc65 ScheduleController ES6 refactoring 2016-02-22 04:19:32 +03:00
tmshv 88e6884da0 repository update 2016-02-22 04:12:48 +03:00
tmshv 4e8b4ea64d + test coverage 2016-02-22 04:11:47 +03:00
tmshv 766105afac tests ES6 refactoring, tests update, + common.js tests 2016-02-22 03:53:11 +03:00
tmshv ae11dc5235 + translateAnItem util function 2016-02-22 03:52:14 +03:00
tmshv 8542a2480a AlbumController, GalleryController update 2016-02-22 03:11:03 +03:00
tmshv 8771c9bb57 fix uppercase filter in document.js 2016-02-22 03:00:12 +03:00
tmshv b65f216c9a fix ContactsController path 2016-02-22 02:58:30 +03:00
tmshv 011d64ff30 breadcrumbs style refactoring 2016-02-22 02:42:14 +03:00
tmshv 0ae5ae7694 added some style variables 2016-02-22 02:41:28 +03:00
tmshv a29faf2ef1 ContactsController ES6 refactoring 2016-02-22 02:26:58 +03:00
tmshv 33b4d0be22 CopyrightController ES6 refactoring 2016-02-22 02:26:31 +03:00
tmshv a227082638 angular filters ES6 refactoring 2016-02-22 02:20:40 +03:00
tmshv c3b095feb4 + Breadcrumbs component; - Breadcrumbs directive 2016-02-22 02:13:08 +03:00
tmshv cadee171fc - backgroundPicture directive 2016-02-22 02:09:03 +03:00
tmshv 54dc25d017 + MainMenu component; - MainMenu directive; other 2016-02-22 02:08:01 +03:00
tmshv 7a62d341bb hotfix: HomeController "Argument HomeController is not a" 2016-02-22 01:50:17 +03:00
tmshv 24f596abae menu service ES6 refactoring 2016-02-22 01:46:36 +03:00
tmshv 7594a14ad6 io service ES6 refactoring 2016-02-22 01:36:49 +03:00
tmshv c7cf73a6d1 home controllers refactoring 2016-02-22 01:32:55 +03:00
tmshv 8b053dc083 - team.js 2016-02-22 01:26:42 +03:00
tmshv 37c9a72c3e team controller refactoring: + TeamController, moving files 2016-02-22 01:25:26 +03:00
tmshv 573973d98b AppController new line 2016-02-22 01:20:59 +03:00
tmshv 59e99769eb DocumentsController refactoring 2016-02-22 01:20:31 +03:00
tmshv e06742daea style page refactoring 2016-02-22 01:11:49 +03:00
tmshv 229aaf9d89 team-member-profile style update 2016-02-22 01:10:58 +03:00
tmshv 14ac869753 app renaming: hudozhka -> hudozka 2016-02-22 01:02:01 +03:00
tmshv 6115dbda8d AppController refactoring 2016-02-22 00:59:16 +03:00
tmshv a4d54f386d app.js ES6 refactoring 2016-02-22 00:56:47 +03:00
tmshv 74e6d594c9 team page refactoring: + team-member-profile component, -team-member-profile directive; other 2016-02-22 00:48:18 +03:00
tmshv 43ab4a66f8 document style refactoring: doc -> document, moving to ./components 2016-02-22 00:16:07 +03:00
tmshv adef63d64f fix variables path 2016-02-22 00:12:43 +03:00
tmshv d693615eaa style structure refactoring: + style/components, style.scss main file; moving gallery-item.scss -> ./components 2016-02-22 00:09:32 +03:00
tmshv 477b9916f2 gallery update: gallery-item component, style refactoring 2016-02-22 00:00:04 +03:00
tmshv 302bf86f0b main.scss refactoring 2016-02-21 23:13:22 +03:00
tmshv 243082db75 gallery layout udpate 2016-02-21 22:31:57 +03:00
tmshv 17a7a669fe style h2, h3, other udpates 2016-02-21 22:31:41 +03:00
tmshv 69dd55c506 style vars update 2016-02-21 22:31:13 +03:00
tmshv 0be7dd9a95 documents page new content layout 2016-02-20 18:41:39 +03:00
tmshv b54b1068fc + style content.scss 2016-02-20 18:41:14 +03:00
tmshv 612a625548 update main.scss: + variables, wrapper -> body-wrapper, content -> body-wrapper__content 2016-02-20 18:40:52 +03:00
tmshv 08edc95ea3 added some style variables 2016-02-20 18:39:03 +03:00
tmshv b125212b49 main menu style refactoing 2016-02-20 18:04:42 +03:00
tmshv eb6cbea2f3 + variables.scss 2016-02-20 18:03:52 +03:00
tmshv 17dcbcc981 moving assets/style -> style 2016-02-20 17:12:15 +03:00
tmshv 68eaaf2338 api ES6 refactoring 2016-02-20 17:04:54 +03:00
tmshv f863db1d0a APIGallery ES6 refactoring 2016-02-20 17:03:06 +03:00
tmshv 59b99cdad8 APIFeed ES6 refactoring 2016-02-20 16:59:20 +03:00
tmshv f4bc70cd8b docs update 2016-02-20 16:49:01 +03:00
tmshv ce2f464520 + Award initalisation to app.js 2016-02-20 16:48:41 +03:00
tmshv 9a220c35fc docs style update 2016-02-20 16:47:50 +03:00
tmshv fb0ae8148c + documents router; other 2016-02-20 16:46:38 +03:00
tmshv 56c1c9dffc + Awards component 2016-02-20 16:45:10 +03:00
tmshv ce2d0ec1b9 + EndPoint, APIDocument 2016-02-20 16:43:50 +03:00
tmshv 5640acdd81 + awards sync 2016-02-20 16:27:22 +03:00
tmshv 34dc4ca9ca img.py functions now returns an instance 2016-02-20 16:26:57 +03:00
tmshv 3d1d0aaa75 deploy ssh configuration update 2016-02-16 17:48:08 +03:00
tmshv 1889428597 + meta referrer tag 2016-02-15 22:29:13 +03:00
tmshv a1793f7cbe schedule width fix 2016-02-15 22:23:18 +03:00
tmshv 7bd7ea5ee8 postcss settings 2016-02-15 22:21:26 +03:00
tmshv b57d7b09ba partial replacement with es6 modules 2016-02-15 17:10:59 +03:00
tmshv 5623c296a1 using Document component 2016-02-15 16:45:02 +03:00
tmshv 49ab70837b + Document component 2016-02-15 16:44:21 +03:00
tmshv b866f443d8 + html-loader 2016-02-15 16:42:37 +03:00
tmshv 98795e3d82 ng-annotate in production only 2016-02-15 16:04:45 +03:00
tmshv 5614b84db5 webpack instead of browserify 2016-02-15 16:02:18 +03:00
tmshv b600df4f77 angular to 1.5.0 2016-02-15 00:15:12 +03:00
tmshv 83a7cf0615 changed bower_components location 2016-02-15 00:14:51 +03:00
tmshv 22cf71611e + npm run bower 2016-02-15 00:14:07 +03:00
tmshv a37a735068 deploy.sh update 2016-02-15 00:01:48 +03:00
tmshv 4504573ce0 burovtseva name/picture fix 2016-02-13 01:40:55 +03:00
tmshv df158c6265 Merge branch 'master' into dev 2016-01-16 23:14:50 +03:00
tmshv e295dd5863 Merge branch 'sync' into dev 2016-01-16 23:12:32 +03:00
tmshv 3b612ab4e7 sync enhancements & update 2016-01-16 23:10:33 +03:00
tmshv 5b6b09b66b + image magick tools to img.py 2016-01-16 23:07:42 +03:00
tmshv e2c0935e9b pyc files to .gitegnore 2016-01-16 22:48:50 +03:00
tmshv 2d229b8df6 Merge branch 'dev' 2016-01-09 18:17:59 +03:00
tmshv f25c65afb4 readme update 2016-01-09 18:17:55 +03:00
tmshv 7bdd23d2aa Merge branch 'sync' into dev 2016-01-09 18:11:56 +03:00
tmshv 675522157f added npm-debug.log to .gitignore 2016-01-09 18:11:48 +03:00
tmshv 7f8713d93e added pycache dir to .gitignore 2016-01-09 18:02:53 +03:00
tmshv 0693e7c758 + sync utils 2016-01-09 17:59:42 +03:00
tmshv 238e4b9682 server public path updated 2016-01-09 17:41:38 +03:00
tmshv 505c785873 gulpfile file paths updated 2016-01-09 17:38:56 +03:00
tmshv 7e8f8155c9 package.json update: main file path 2016-01-09 17:29:18 +03:00
tmshv d25f4439fa source files -> src/ folder 2016-01-09 17:26:44 +03:00
tmshv f006207112 nginx https conf 2016-01-07 20:38:28 +03:00
tmshv d46d39a131 + letsenctypt conf file 2016-01-07 20:37:13 +03:00
tmshv 8a934cbf5c gulpfile update; packages update 2016-01-05 03:04:09 +03:00
tmshv c6f242693a - pdf.scss 2016-01-05 02:35:03 +03:00
tmshv 28471fe8c1 v3.4.0 2016-01-05 00:51:40 +03:00
tmshv aacc920796 package.json v3.2.0 2016-01-05 00:49:47 +03:00
tmshv d3c7e444ea big update for deployment system 2016-01-05 00:48:49 +03:00
tmshv 2c443568e8 nginx.conf: port 1800; other updates 2016-01-05 00:24:10 +03:00
tmshv 2b426f53b3 team.json update 2016-01-04 23:06:27 +03:00
tmshv 830cd80de1 team page update: background picture is temporary broken; + backgroundPicture directive (unstable); 2015-08-16 08:01:35 +03:00
tmshv d9ca65958c tape viewer update 2015-08-15 21:22:48 +03:00
tmshv 5e9889e3f4 main layout update 2015-08-15 21:22:28 +03:00
tmshv 1c92ecfef1 schedule table improvements 2015-08-15 19:40:45 +03:00
tmshv 6861e365ce gulpfile update 2015-08-15 19:38:47 +03:00
tmshv 76db829026 fix table schedule fix head top 2015-08-15 15:50:42 +03:00
tmshv 857dc05852 fix menu schedule color 2015-08-15 15:50:15 +03:00
tmshv b48b120405 menu update: fixed position, other changes 2015-08-15 15:39:04 +03:00
tmshv 916c11c516 + mainMenu directive 2015-08-15 15:38:34 +03:00
tmshv 8fdbc18e65 schedule cleaning up, schedule table directive, url updating 2015-08-13 12:03:36 +03:00
tmshv 78789bd7f3 gulp production environment 2015-08-13 10:43:28 +03:00
tmshv 27b1cfbec8 schedule update, mobile schedule 2015-08-13 10:42:54 +03:00
tmshv 5ad7caf844 stability improvements of CopyrightController 2015-08-13 10:41:48 +03:00
tmshv 16dc05b2db + common, date utils 2015-08-13 10:40:16 +03:00
tmshv 3e510b3b4c bing verification meta tag 2015-08-05 12:01:58 +03:00
tmshv e3eb9c119f fix: sitemap package not in the package.json 2015-08-05 02:57:03 +03:00
tmshv a9f5acb480 gulpfile update 2015-08-05 02:49:35 +03:00
tmshv 4c25f36816 dynamic sitemap.xml 2015-08-05 02:48:41 +03:00
tmshv 084001791b gulpfile cleaning up 2015-08-05 02:47:40 +03:00
tmshv 15018b3cd8 es6 in schedule page 2015-08-05 01:44:56 +03:00
tmshv 8624987a8e fix babel system 2015-08-05 01:44:15 +03:00
tmshv ba7968410c + babel 2015-08-05 01:27:48 +03:00
tmshv 9f15d631f4 + schedule caching 2015-08-05 01:16:08 +03:00
tmshv 1249666fad schedule style update 2015-08-05 01:06:56 +03:00
tmshv ee826400df code cleaning up 2015-08-05 00:54:37 +03:00
tmshv 1a11cf8c85 copyright change 2015-08-05 00:53:52 +03:00
tmshv f747ce17f3 schedule page update: multiple schedules, prettify, other changes 2015-08-05 00:53:25 +03:00
tmshv a22820c278 + /schedules route; other update 2015-08-05 00:51:39 +03:00
tmshv dc88c838aa courses model update 2015-08-05 00:50:56 +03:00
tmshv 691448457a team model update 2015-08-05 00:50:34 +03:00
tmshv 5cae479c4b .gitignore update: + /build 2015-08-05 00:49:33 +03:00
tmshv 9857d7bae8 fix: main page title grammatic error; 2015-07-14 03:33:44 +03:00
tmshv 240dc350fe - main-dev template; 2015-07-14 03:31:14 +03:00
tmshv 5e14fe465c main page analytics for production only by host checking; 2015-07-14 03:30:47 +03:00
tmshv 840502c68f fotorama link to CDN; 2015-07-13 01:54:38 +03:00
tmshv 73f0efa537 bower components now is a solid file; 2015-07-13 01:53:47 +03:00
tmshv 94f38205f4 head tags remixing; 2015-07-13 01:37:20 +03:00
tmshv d6fbeb1fd0 socket.io lazy init; 2015-07-13 01:14:27 +03:00
tmshv 534ce3f2e3 robots.txt update: fix warnings, disallow /news; 2015-07-13 01:11:46 +03:00
tmshv da79a17374 prerender: remove meta tag after prerendering; 2015-07-13 00:38:12 +03:00
tmshv 13d909c219 fix: sitemap.xml changefreq warning; 2015-07-12 21:08:53 +03:00
tmshv 9aa881a842 + robots.txt, sitemap.xml; 2015-07-12 21:02:08 +03:00
tmshv 1b2f3e5b07 main template: developer url fix; 2015-07-12 20:50:53 +03:00
tmshv 6a0709a96e deploy script update: ip; 2015-07-12 20:49:59 +03:00
tmshv 7a74b4e76a gulp uglify; 2015-07-10 21:36:46 +03:00
tmshv 553844cc46 developer url update; 2015-07-10 21:35:54 +03:00
tmshv 2ab71140e1 album page head title update; 2015-07-09 06:56:08 +03:00
tmshv 1562e05fbf head title update; 2015-07-09 06:55:49 +03:00
tmshv 6c4e359cd5 fix: home page title; 2015-07-09 06:52:59 +03:00
tmshv 719c8888c2 data address formatting update; 2015-07-09 06:37:50 +03:00
tmshv a43c8b012a data address formatting with non breaking space 2015-07-09 06:34:35 +03:00
tmshv 0d65f2b8a2 dynamic contact information; 2015-07-09 06:22:52 +03:00
tmshv 2bc1c63b93 data update; 2015-07-09 06:22:23 +03:00
tmshv e5163c16bf h1 update; 2015-07-09 06:21:54 +03:00
tmshv f959c09d96 - teacher url, album displaying update; 2015-07-09 06:05:31 +03:00
tmshv ee58032962 album info block 2015-07-09 06:03:16 +03:00
tmshv 9194559e12 breadcrumbs style for landscape smartphones; 2015-07-09 06:02:51 +03:00
tmshv 900f1d4e33 /album -> /gallery 2015-07-09 05:32:52 +03:00
tmshv eb2aa6d4cf developer url update; 2015-07-09 05:27:02 +03:00
tmshv f2816229ff timeline update: displaying load more button; 2015-07-09 05:25:03 +03:00
tmshv 11bcea1091 gallery breadcrumbs: no intermediate urls; 2015-07-09 05:18:55 +03:00
tmshv 9078294975 breadcrumbs: mobile version; 2015-07-09 05:17:51 +03:00
tmshv d485ec7880 gallery breadcrumbs; 2015-07-09 03:49:25 +03:00
tmshv acfecbc0b9 + breadcrumbs; 2015-07-09 03:49:14 +03:00
tmshv 8d2d889759 menu update: model, angular logic; 2015-07-08 23:08:26 +03:00
tmshv 0e67001b26 fix: no title if undefined; 2015-07-08 23:07:47 +03:00
tmshv 6e32adce5d + CopyrightController 2015-07-08 22:06:42 +03:00
tmshv a9a0b2c6b8 +api gallery + gallery caching; 2015-07-08 22:06:15 +03:00
tmshv 97966817ea +CopyrightController: developer copyright only on main page; 2015-07-08 20:40:48 +03:00
tmshv a966030506 home page tape viwer init update; 2015-07-08 20:30:29 +03:00
tmshv 2417b93399 gallery album page update; 2015-07-08 20:18:43 +03:00
tmshv b782d0bd60 + removeNewline filter; 2015-07-08 20:18:20 +03:00
tmshv 6fa896066e home header update; 2015-07-06 16:21:48 +03:00
tmshv 19a582c538 + menu item 2015-07-06 16:21:33 +03:00
tmshv af132694bf fix: scroll to top when view changes; 2015-07-06 16:21:09 +03:00
tmshv 7c52b81f3d timeline post update; 2015-07-06 01:35:53 +03:00
tmshv 07908b3f99 timeline update; 2015-07-06 01:32:01 +03:00
tmshv 07c6f78e27 + remove hashtags & strip angular filters; 2015-07-06 01:30:48 +03:00
tmshv 6182e27d8b home update: tape for mobile; 2015-07-05 21:18:51 +03:00
tmshv e8a65edde1 gallery update: years, /gallery... -> /album...; 2015-07-05 20:42:24 +03:00
tmshv d16bb492aa docs page update; 2015-07-04 01:07:29 +03:00
tmshv 02cd05f997 main.scss refacroring & cleaning up; 2015-07-04 01:07:13 +03:00
tmshv 525e10a0d6 gallery fix; 2015-07-04 00:45:56 +03:00
tmshv 3a0c573bce content width 90%; 2015-07-04 00:45:39 +03:00
tmshv 2cab2072fc fix: footer; 2015-07-03 15:19:19 +03:00
tmshv d00c91605d angular 1.4.1 update 2015-07-02 21:25:13 +03:00
tmshv f7b3cf0576 new header menu: desktop + mobile; 2015-07-02 20:26:31 +03:00
tmshv a0255d9758 fix: main layout file serving 2015-07-01 16:25:30 +03:00
tmshv bd4c166903 main.css reset styles 2015-07-01 16:24:48 +03:00
tmshv c72f44ea8b + gallery page 2015-07-01 15:41:37 +03:00
tmshv 241812c6cf config 2015-04-12 21:45:04 +03:00
tmshv c2f7196bcf forked by tmshv promised-mongo 2015-04-12 21:44:48 +03:00
tmshv 00e9d65789 linear timeline; 2015-03-28 00:04:08 +03:00
tmshv b9d52b5327 + development index; 2015-03-28 00:02:22 +03:00
tmshv 385cecfc97 default router index file moved to config; 2015-03-28 00:01:49 +03:00
tmshv a67b3244ef fix: package.json are broken; 2015-03-28 00:00:50 +03:00
tmshv a2ae10771e v 3.1.0 2015-03-16 17:27:49 +03:00
tmshv dc130ad394 + io; other changes; 2015-03-16 17:21:01 +03:00
tmshv 754c8bf9a4 helmet code style; 2015-03-14 04:28:49 +03:00
tmshv d69bec8c22 - bin/insta 2015-03-14 04:26:07 +03:00
tmshv f687425bdc news bugfix: sorting news when paging 2015-03-14 04:24:18 +03:00
tmshv 1ebfcea16b base instagram supporting; 2015-03-14 04:23:43 +03:00
tmshv 17923e3730 instagram now works as prototype; 2015-03-10 13:41:49 +03:00
tmshv 67ea5ea96c + koa-bodyparser; 2015-03-10 13:34:39 +03:00
tmshv 1069868ef0 timeline more spinner width update; 2015-03-09 00:56:41 +03:00
tmshv df2ec90daa + test 2015-03-09 00:44:05 +03:00
tmshv bed2cfad22 timeline more; spinner; common update; 2015-03-09 00:43:46 +03:00
tmshv 38fac9c033 news pinned feature; 2015-03-08 07:39:29 +03:00
tmshv e7c77e18c6 timeline update; 2015-03-08 06:56:36 +03:00
tmshv 38e0a4dadd instagram update; 2015-03-08 06:56:20 +03:00
tmshv 0372a81304 .gitignore private update; 2015-03-08 06:55:15 +03:00
tmshv 0a3c530599 timeline update; 2015-03-07 18:55:07 +03:00
tmshv 435c8aef7f news sorting by date 2015-03-07 18:54:05 +03:00
tmshv 36febf0e3b news route update; + /news/<name>; mime routers 2015-03-07 09:23:59 +03:00
tmshv 5b477aa41c layout update; mobile version; data update; 2015-03-02 04:44:53 +03:00
tmshv 8d0f88ec81 main title update; 2015-03-01 20:19:18 +03:00
tmshv b7f1599777 new title; new telephone; home page update; 2015-03-01 20:17:31 +03:00
tmshv ec67d8d9d8 package.json update; 2015-03-01 19:18:59 +03:00
411 changed files with 81150 additions and 9246 deletions

No files matched your search

-3
View File
@@ -1,3 +0,0 @@
{
"directory" : "public/bower_components"
}
+5
View File
@@ -0,0 +1,5 @@
## Summary
-
## Closes #
+53
View File
@@ -0,0 +1,53 @@
name: Build Frontend and Deploy
on:
push:
branches:
- master
jobs:
build:
name: Build Image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.PAT }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
uses: docker/build-push-action@v5
with:
context: ./
file: ./apps/hudozka/Dockerfile
push: true
platforms: linux/amd64
tags: |
ghcr.io/tmshv/hudozka-app:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
+31
View File
@@ -0,0 +1,31 @@
name: Build Pocketbase and Deploy
on:
push:
branches:
- master
paths:
- "pb/**"
jobs:
build:
name: Build Image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.PAT }}
- name: Build and Push
uses: docker/build-push-action@v5
with:
push: true
context: pb
tags: |
ghcr.io/tmshv/hudozka-pb:latest
+92
View File
@@ -0,0 +1,92 @@
name: Test App
on:
pull_request:
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npx biome ci
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Test
run: npm test
typecheck:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Type check
run: npx tsc --noEmit -p apps/hudozka/tsconfig.json
build:
name: Build
needs: [lint, test, typecheck]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Cache Next.js build
uses: actions/cache@v4
with:
path: .next/cache
key: nextjs-${{ hashFiles('package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx', '**/*.css') }}
restore-keys: nextjs-${{ hashFiles('package-lock.json') }}-
- name: Disable Next.js telemetry
run: npx next telemetry disable
- name: Build
run: npm run build
+26 -3
View File
@@ -1,9 +1,32 @@
.DS_Store
.idea
*.sublime*
npm-debug.log
private.json
private*.json
/node_modules
node_modules
/bower_components
/public
/modules/hudozka-api-v1/lib
/build
/out
dist
**/venv
**/__pycache__
**/*.pyc
/coverage
**/.vscode
*.log
.now
.vercel
.next
tsconfig.tsbuildinfo
.env
pb/pb_data/*.db*
pb/pb_data/storage
# ralphex progress logs
.ralphex/progress/
.superpowers/
+124
View File
@@ -0,0 +1,124 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
Website for the Art School of Shlisselburg ([art.shlisselburg.org](https://art.shlisselburg.org)). Content is in Russian. Built with Next.js using the App Router and PocketBase as the backend (migrated from Strapi — see `pb/` and `src/remote/pb.ts`). The project has migrated through Express → Angular 1 → React class components → Next.js (Pages Router) → Next.js (App Router); some legacy artifacts remain.
## Commands
From repo root (delegates to `apps/hudozka`):
- `npm run dev` — dev server with Turbo (`next dev --turbo`)
- `npm run build` — production build
- `npm run lint` — Biome lint + format check across the whole monorepo (`biome check`)
- `npm run format` — auto-fix lint and format issues (`biome check --write`)
- `npm test` — run unit tests (Vitest) across every workspace
Per-app:
- `npm run dev -w apps/hudozka-writer` — writer UI (Vite)
- `npm run migrate -w apps/migrate-to-pocketbase` — one-off migration script
Node 24 required (see `mise.toml`). Deployed on Vercel.
## Git Workflow
Feature branches are named `issue-XXX` where `XXX` is the related GitHub issue number. PR descriptions should not include a test plan section.
## CI/CD
- `apps/hudozka/Dockerfile` — multi-stage Alpine build with standalone Next.js output, pushed to GHCR. Build context is the repo root so the workspace graph is available.
- `.github/workflows/build-app.yaml` — builds and pushes Docker image on push to master (`file: ./apps/hudozka/Dockerfile`, `context: ./`).
- `.github/workflows/test-app.yml` — runs lint, tests, typecheck, and build on PRs.
## Code Style
Biome (`biome.json`) handles formatting and linting. Style: no semicolons, double quotes, 4-space indentation, always-multiline trailing commas, LF line endings, 120-column line width. Lint scope is limited to `**/src/**/*.{ts,tsx,js}` via `files.includes`. Console calls are restricted to `console.error`/`console.warn` (full `console.*` is allowed only inside `apps/migrate-to-pocketbase`). `noDangerouslySetInnerHtml` is disabled because the site renders trusted CMS HTML. Inline `biome-ignore` / `eslint-disable` comments are not used — fix the underlying issue instead.
**React components:** Use regular function declarations (not arrow functions) and `type` for props. Do not use `React.FC`.
```tsx
export type MyComponentProps = {
value: string
}
export function MyComponent({ value }: MyComponentProps) {
return <div>{value}</div>
}
```
## Dependencies
When adding or updating packages in `package.json`, do not specify the PATCH version — use `^MAJOR.MINOR.0`. The exact patch version is managed by the lockfile and `npm update`.
## Architecture
**App Router with SSG/ISR:** Pages are server components under `src/app/` with `export const revalidate = 30`. The root layout (`src/app/layout.tsx`) fetches menu data and passes it down. The catch-all route `src/app/[...slug]/page.tsx` handles all dynamic content pages with `generateStaticParams` and `generateMetadata`.
**Server/client boundary:** Layout and page components are server components that fetch data. The `App` component (`src/components/App`) is a `"use client"` component that provides the layout chrome (navigation, breadcrumbs, footer). Content is passed as `children` from server pages through the client boundary. Components using hooks (`PageGrid`, `HomeContent`, `PageContent`, `Menu`, `MobileNavigation`, `Wrapper`) are marked `"use client"`.
**Data flow:** PocketBase API → `src/remote/api.ts` fetches data via `apiGet()` generic wrapper → `src/remote/factory.ts` normalizes responses into app types (`src/types.ts`) → pages render token-based content blocks. The API layer uses a factory pattern with default-response fallbacks on failure. The legacy Strapi integration was removed (see commit "rm strapi"); `src/remote/pb.ts` is the PocketBase client.
**Metadata:** Uses the Next.js Metadata API (`generateMetadata`, `export const metadata`). The `buildMetadata()` helper in `src/lib/meta.ts` bridges the app's `Meta` type to Next.js `Metadata` format.
**Content tokens:** Pages are composed of flexible content blocks (tokens): `text`, `image`, `file`, `html`, `youtube`, `instagram`, `grid`. The `Token` discriminated union is defined in `src/types.ts`. Each token type maps to a renderer component in the `PageContent` client component.
**State management:** Valtio for reactive state (`src/store/`). Theme/accessibility preferences in `theme` store, playback state in `play` store.
## Key Directories
- `apps/hudozka/src/app/` — App Router pages, layouts, route handlers (catch-all, not-found, sitemap, robots, feed)
- `apps/hudozka/src/components/` — page-level and feature components (folder-per-component + `styles.module.css`)
- `apps/hudozka/src/ui/` — Next/store-coupled UI that stays in the app: `Picture`, `ThemeColor`
- `apps/hudozka/src/remote/` — PocketBase API client (`api.ts`, `factory.ts`, `types.ts`, `pb.ts`)
- `apps/hudozka/src/store/` — Valtio stores (theme/accessibility, playback)
- `apps/hudozka/src/hooks/` — business-coupled hooks: `useDarkTheme`, `useAccessibility`
- `apps/hudozka/src/lib/` — app-only lib (currently just `meta.ts`)
- `apps/hudozka/src/style/` — global CSS with CSS custom properties for theming
- `packages/ui/` — `@hudozka/ui` — reusable primitives (Box, Button, Panel, Title, Overlay)
- `packages/hooks/` — `@hudozka/hooks` — generic React hooks (useToggle, useLockBodyScroll, useMediaQuery, useMobile, useReducedMotion)
- `packages/utils/` — `@hudozka/utils` — pure utilities (array, string, url, math, image, file, date)
- `packages/text/` — `@hudozka/text` — markdown + typograf rendering
- `apps/hudozka-writer/` — Vite-based Tiptap editor
- `apps/migrate-to-pocketbase/` — one-off Strapi → PocketBase migration script
- `pb/` — PocketBase instance (data, migrations)
## Styling
CSS Modules (`.module.css`) for component-scoped styles. Global theme via CSS custom properties in `src/style/style.css`. No utility CSS framework. Uses `classnames` package for conditional class composition.
## TypeScript
Path alias: `@/*` → `src/*`. Strict mode enabled. Target ES2020. `moduleDetection: "force"` in tsconfig (required because Next.js auto-generates `.next/types/validator.ts` without exports, which breaks `verbatimModuleSyntax`). Use `@/` path alias for all local imports, not `src/`. Legacy `src/` imports exist in the codebase but should not be used in new or modified code. The `@/*` path alias is only configured in `apps/hudozka/tsconfig.json`; packages under `packages/*` use short relative imports.
`verbatimModuleSyntax` is enabled — use `import type` for type-only imports. When importing both values and types from the same module, use separate `import` and `import type` statements:
```ts
import { createPage } from "@/remote/factory"
import type { Page } from "@/types"
```
## Accessibility
The site has an accessibility panel with configurable font size (8-48pt), color schemes (5 presets: black-on-white, white-on-black, blue-on-blue, brown-on-yellow, green-on-brown), line height, letter spacing, image toggling, and serif/sans-serif font choice — all managed through the Valtio theme store. The theme store currently applies changes via direct DOM manipulation in a Valtio `subscribe()` callback (`src/store/theme.ts`).
## Images
Remote images from `hudozkacdn.tmshv.com` with `images.weserv.nl` as proxy. Blur hash encoding for progressive loading (uses `sharp` server-side). Image optimization configured in `next.config.ts` via `remotePatterns`.
## Testing
Vitest for unit tests. Config in `vitest.config.ts` with `@/` and `src/` path aliases. Test files are co-located with source across `src/lib/`, `src/ui/`, and `src/components/`. Covers utility functions (array, string, url, file, image, date, text, meta), UI primitives (Box, Button, Panel), and components (Breadcrumbs, YMetrika).
## Known Legacy / Technical Debt
Active modernization is tracked in GitHub issues #222–#238. Key items:
- `src/types.ts` has `I`-prefix interfaces (`IPage`, `IMenu`, etc.) from the Angular era alongside modern `type` aliases. The `tokens` field on `IPage` is `any[]` despite a proper `Token` union type existing.
- `src/store/theme.ts` manipulates DOM directly outside React lifecycle (sets CSS vars on `document.documentElement`, toggles `document.body` classes).
- Two orphaned `.scss` files in `src/style/` (`tape-viewer.scss`, `vertical-image.scss`) — not imported anywhere, no SCSS preprocessor configured.
- Some inline styles in `src/components/App/index.tsx` should be CSS modules.
- `react-use` and `use-media` dependencies are unmaintained; only `useToggle` and `useLockBodyScroll` are used from `react-use`.
+66 -9
View File
@@ -1,11 +1,68 @@
# WWW.HUDOZKA.SU
THE SITE OF ART SCHOOL OF **SHLISSELBURG**
Visit [www.hudozka.su](www.hudozka.su)
# [ART.SHLISSELBURG.ORG](https://art.shlisselburg.org)
### Used technologies:
- node.js
- express.js
- jade template language
Website for the Art School of Shlisselburg. Built with Next.js and powered by PocketBase (migrated from Strapi).
## Contribute
- Roman Timashev [roman@tmshv.ru](mailto:roman@tmshv.ru)
Font: [«Shadow»](http://mishapanfilov.ru/font_shadow.html)
## Repo layout
This is an npm-workspaces monorepo:
- `apps/hudozka` — main Next.js app (art.shlisselburg.org)
- `apps/hudozka-writer` — Vite-based content editor
- `apps/migrate-to-pocketbase` — one-off migration script (Strapi → PocketBase)
- `packages/ui` — `@hudozka/ui` — shared React primitives (Box, Button, Panel, Title, Overlay)
- `packages/hooks` — `@hudozka/hooks` — generic React hooks
- `packages/utils` — `@hudozka/utils` — pure utilities (array, string, url, math, image, file, date)
- `packages/text` — `@hudozka/text` — markdown + typograf rendering
- `pb/` — PocketBase instance (untouched by the monorepo migration)
Common commands (from repo root):
- `npm run dev` — run the web app dev server
- `npm run build` — production build of the web app
- `npm run lint` — lint the whole monorepo
- `npm test` — run tests across every workspace
- `npm run dev -w apps/hudozka-writer` — run the writer
- `npm run migrate -w apps/migrate-to-pocketbase` — run the migration script
## Development
### Prerequisites
- Node.js 24 (see `mise.toml`)
### Getting Started
1. Install dependencies
```bash
npm install
```
2. Start development server
```bash
npm run dev
```
The development server runs at [http://localhost:3000](http://localhost:3000) with Turbo mode enabled.
## Content Management
Content is fetched from PocketBase and rendered using flexible content tokens:
- `text` — Markdown with Russian typography (Typograf)
- `image` — Responsive images with blur hash
- `file` — Document downloads
- `html` — Raw HTML embeds
- `youtube` — Video embeds
- `instagram` — Social media embeds
- `grid` — Card grids
## Accessibility
The site includes an accessibility panel with configurable:
- Font size (8-48pt)
- Color schemes (5 presets: black-on-white, white-on-black, blue-on-blue, brown-on-yellow, green-on-brown)
- Line height and letter spacing
- Image toggling
- Font family (serif/sans-serif)
## Contributors
- Roman Timashev ([roman@tmshv.ru](mailto:roman@tmshv.ru))
View File
Whitespace-only changes.
+24
View File
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
+30
View File
@@ -0,0 +1,30 @@
# React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
## Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
- Configure the top-level `parserOptions` property like this:
```js
export default {
// other rules...
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
}
```
- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
+12
View File
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hudozka Writer</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
File diff suppressed because it is too large. Load diff
+45
View File
@@ -0,0 +1,45 @@
{
"name": "hudozka-writer",
"private": true,
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc --noEmit && vite build",
"preview": "vite preview"
},
"dependencies": {
"@tiptap/core": "^3.0.0",
"@tiptap/extension-blockquote": "^3.0.0",
"@tiptap/extension-bold": "^3.0.0",
"@tiptap/extension-bullet-list": "^3.0.0",
"@tiptap/extension-code": "^3.0.0",
"@tiptap/extension-code-block": "^3.0.0",
"@tiptap/extension-document": "^3.0.0",
"@tiptap/extension-hard-break": "^3.0.0",
"@tiptap/extension-heading": "^3.0.0",
"@tiptap/extension-horizontal-rule": "^3.0.0",
"@tiptap/extension-italic": "^3.0.0",
"@tiptap/extension-link": "^3.0.0",
"@tiptap/extension-list-item": "^3.0.0",
"@tiptap/extension-ordered-list": "^3.0.0",
"@tiptap/extension-paragraph": "^3.0.0",
"@tiptap/extension-strike": "^3.0.0",
"@tiptap/extension-text": "^3.0.0",
"@tiptap/markdown": "^3.0.0",
"@tiptap/pm": "^3.0.0",
"@tiptap/react": "^3.0.0",
"@tiptap/starter-kit": "^3.0.0",
"@tiptap/suggestion": "^3.22.2",
"pocketbase": "^0.25.0",
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"devDependencies": {
"@types/react": "^19.1.0",
"@types/react-dom": "^19.1.0",
"@vitejs/plugin-react": "^5.2.0",
"typescript": "^5.9.0",
"vite": "^8.0.16"
}
}
+68
View File
@@ -0,0 +1,68 @@
.app {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.app-header {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 20px;
border-bottom: 1px solid #e0e0e0;
}
.app-title {
font-weight: 600;
}
.app-slug {
color: #888;
font-family: monospace;
}
.app-header button {
padding: 4px 12px;
border: 1px solid #ccc;
border-radius: 4px;
background: white;
cursor: pointer;
}
.app-header button:first-of-type {
margin-left: auto;
}
.app-main {
flex: 1;
padding: 20px;
max-width: 800px;
margin: 0 auto;
width: 100%;
}
.app-message {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
min-height: 100vh;
}
.app-error {
color: #c00;
}
.app-published-toggle {
display: flex;
align-items: center;
gap: 4px;
font-size: 0.9rem;
cursor: pointer;
user-select: none;
}
.app-published-toggle input {
cursor: pointer;
}
+138
View File
@@ -0,0 +1,138 @@
import { useCallback, useEffect, useState } from "react"
import { Editor } from "./components/Editor"
import { Login } from "./components/Login"
import { pb } from "./pb"
import type { PbPage } from "./types"
import "./App.css"
function getSlugFromUrl(): string | null {
const params = new URLSearchParams(window.location.search)
return params.get("page")
}
export function App() {
const [authenticated, setAuthenticated] = useState(pb.authStore.isValid)
const [page, setPage] = useState<PbPage | null>(null)
const [loading, setLoading] = useState(false)
const [error, setError] = useState("")
const slug = getSlugFromUrl()
const loadPage = useCallback(async (slug: string) => {
setLoading(true)
setError("")
try {
const record = await pb.collection("pages").getFirstListItem<PbPage>(`slug="${slug}"`)
setPage(record)
} catch {
setError(`Page "${slug}" not found`)
} finally {
setLoading(false)
}
}, [])
useEffect(() => {
if (authenticated && slug) {
loadPage(slug)
}
}, [authenticated, slug, loadPage])
function handleLogout() {
pb.authStore.clear()
setAuthenticated(false)
setPage(null)
}
async function handleDuplicate() {
if (!page) return
const newSlug = `${page.slug}-copy`
try {
const record = await pb.collection("pages").create<PbPage>({
title: `${page.title} (copy)`,
slug: newSlug,
excerpt: page.excerpt,
date: page.date,
cover: page.cover,
doc: page.doc,
tags: page.tags,
published: false,
draft: null,
})
window.location.search = `?page=${record.slug}`
} catch (err) {
console.error("Duplicate failed:", err)
alert("Duplicate failed. Check console.")
}
}
async function handleTogglePublished() {
if (!page) return
try {
const updated = await pb.collection("pages").update<PbPage>(page.id, {
published: !page.published,
})
setPage(updated)
} catch (err) {
console.error("Toggle published failed:", err)
alert("Toggle published failed. Check console.")
}
}
if (!authenticated) {
return <Login onLogin={() => setAuthenticated(true)} />
}
if (!slug) {
return (
<div className="app-message">
<p>
Add <code>?page=slug</code> to the URL to edit a page.
</p>
<button type="button" onClick={handleLogout}>
Logout
</button>
</div>
)
}
if (loading) {
return <div className="app-message">Loading...</div>
}
if (error) {
return (
<div className="app-message">
<p className="app-error">{error}</p>
<button type="button" onClick={handleLogout}>
Logout
</button>
</div>
)
}
if (!page) {
return <div className="app-message">Loading...</div>
}
return (
<div className="app">
<header className="app-header">
<span className="app-title">{page.title}</span>
<span className="app-slug">/{page.slug}</span>
<label className="app-published-toggle">
<input type="checkbox" checked={page.published} onChange={handleTogglePublished} />
Published
</label>
<button type="button" onClick={handleDuplicate}>
Duplicate
</button>
<button type="button" onClick={handleLogout}>
Logout
</button>
</header>
<main className="app-main">
<Editor page={page} />
</main>
</div>
)
}
@@ -0,0 +1,69 @@
.block-actions {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
flex-shrink: 0;
width: 28px;
padding-top: 2px;
user-select: none;
}
.block-action-btn {
width: 24px;
height: 24px;
border-radius: 4px;
border: 1px solid transparent;
background: none;
cursor: pointer;
font-size: 16px;
line-height: 1;
color: #ccc;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.15s ease;
padding: 0;
}
.block-action-btn:hover {
border-color: #ddd;
color: #666;
background: #f5f5f5;
}
.block-action-delete:hover {
border-color: #c00;
color: #c00;
background: #fff0f0;
}
.block-action-split:hover {
border-color: #2563eb;
color: #2563eb;
background: #eff6ff;
}
.block-drag-handle {
cursor: grab;
}
.block-drag-handle:active {
cursor: grabbing;
}
[data-node-view-wrapper] {
position: relative;
}
.node-view-block {
display: flex;
flex-direction: row;
align-items: stretch;
gap: 4px;
}
.node-view-content {
flex: 1;
min-width: 0;
}
@@ -0,0 +1,149 @@
import { Fragment } from "@tiptap/pm/model"
import type { Editor } from "@tiptap/react"
import { useCallback, useEffect } from "react"
import "./BlockActions.css"
export type BlockActionsProps = {
editor: Editor
getPos: () => number | undefined
showSplit?: boolean
}
export function BlockActions({ editor, getPos, showSplit }: BlockActionsProps) {
const getWrapper = useCallback(() => {
const pos = getPos()
if (typeof pos !== "number") return null
const dom = editor.view.nodeDOM(pos)
if (!dom || !(dom instanceof HTMLElement)) return null
return dom.closest("[data-node-view-wrapper]") as HTMLElement | null
}, [editor, getPos])
useEffect(() => {
const checkActive = () => {
const wrapper = getWrapper()
if (!wrapper) return
const pos = getPos()
if (typeof pos !== "number") {
wrapper.classList.remove("active-block")
return
}
const { from } = editor.state.selection
const resolved = editor.state.doc.resolve(from)
if (resolved.depth < 1) {
wrapper.classList.remove("active-block")
return
}
const blockPos = resolved.before(1)
if (blockPos === pos) {
wrapper.classList.add("active-block")
} else {
wrapper.classList.remove("active-block")
}
}
const handleBlur = () => {
const wrapper = getWrapper()
wrapper?.classList.remove("active-block")
}
checkActive()
editor.on("selectionUpdate", checkActive)
editor.on("focus", checkActive)
editor.on("blur", handleBlur)
return () => {
editor.off("selectionUpdate", checkActive)
editor.off("focus", checkActive)
editor.off("blur", handleBlur)
const wrapper = getWrapper()
wrapper?.classList.remove("active-block")
}
}, [editor, getPos, getWrapper])
const handleDelete = (e: React.MouseEvent) => {
e.preventDefault()
const pos = getPos()
if (typeof pos !== "number") return
const node = editor.state.doc.nodeAt(pos)
if (!node) return
editor
.chain()
.focus()
.deleteRange({
from: pos,
to: pos + node.nodeSize,
})
.run()
}
const handleSplit = (e: React.MouseEvent) => {
e.preventDefault()
const pos = getPos()
if (typeof pos !== "number") return
const node = editor.state.doc.nodeAt(pos)
if (!node || node.childCount < 2) return
const { from } = editor.state.selection
let childOffset = pos + 1
let splitAfter = -1
for (let i = 0; i < node.childCount; i++) {
const child = node.child(i)
const childEnd = childOffset + child.nodeSize
if (from >= childOffset && from < childEnd) {
splitAfter = i
break
}
childOffset = childEnd
}
if (splitAfter < 0 || splitAfter >= node.childCount - 1) return
const firstChildren = []
const secondChildren = []
for (let i = 0; i < node.childCount; i++) {
if (i <= splitAfter) {
firstChildren.push(node.child(i))
} else {
secondChildren.push(node.child(i))
}
}
const { schema } = editor.state
const textBlockType = schema.nodes.textBlock
const first = textBlockType.create(null, firstChildren)
const second = textBlockType.create(null, secondChildren)
const tr = editor.state.tr
tr.replaceWith(pos, pos + node.nodeSize, Fragment.from([first, second]))
editor.view.dispatch(tr)
}
return (
<div className="block-actions" contentEditable={false}>
<button
type="button"
className="block-action-btn block-action-delete"
title="Delete block"
onClick={handleDelete}
>
&times;
</button>
{showSplit && (
<button
type="button"
className="block-action-btn block-action-split"
title="Split block"
onClick={handleSplit}
>
&#x2702;
</button>
)}
<div className="block-action-btn block-drag-handle" data-drag-handle draggable title="Drag to reorder">
&#x2807;
</div>
</div>
)
}
@@ -0,0 +1,39 @@
.block-insert {
position: relative;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 8px 0 8px 28px;
}
.block-insert-btn {
position: relative;
width: 24px;
height: 24px;
border-radius: 50%;
border: 1px solid transparent;
background: none;
cursor: pointer;
font-size: 18px;
line-height: 1;
color: #ccc;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.15s ease;
padding: 0;
z-index: 10;
}
.block-insert-btn:hover {
border-color: #ddd;
color: #666;
background: #f5f5f5;
}
.block-insert-menu {
position: absolute;
top: 12px;
left: 56px;
z-index: 50;
}
@@ -0,0 +1,43 @@
import type { Editor } from "@tiptap/react"
import { useState } from "react"
import { BlockMenu } from "./BlockMenu"
import "./BlockInsert.css"
export type BlockInsertProps = {
editor: Editor
getPos: () => number | undefined
}
export function BlockInsert({ editor, getPos }: BlockInsertProps) {
const [menuOpen, setMenuOpen] = useState(false)
const insertPos = (() => {
const pos = getPos()
if (typeof pos !== "number") return 0
const node = editor.state.doc.nodeAt(pos)
return node ? pos + node.nodeSize : 0
})()
const handleToggle = (e: React.MouseEvent) => {
e.preventDefault()
e.stopPropagation()
setMenuOpen(!menuOpen)
}
const handleClose = () => {
setMenuOpen(false)
}
return (
<div className="block-insert" contentEditable={false}>
<button type="button" className="block-insert-btn" title="Add block" onClick={handleToggle}>
+
</button>
{menuOpen && (
<div className="block-insert-menu">
<BlockMenu editor={editor} position={insertPos} onClose={handleClose} />
</div>
)}
</div>
)
}
@@ -0,0 +1,24 @@
.block-menu {
background: white;
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
padding: 4px 0;
min-width: 160px;
z-index: 50;
}
.block-menu-item {
display: block;
width: 100%;
padding: 8px 12px;
border: none;
background: none;
text-align: left;
cursor: pointer;
font-size: 0.9rem;
}
.block-menu-item:hover {
background: #f0f4ff;
}
@@ -0,0 +1,69 @@
import type { Editor } from "@tiptap/react"
import { generateBlockId } from "../lib/id"
import "./BlockMenu.css"
type BlockType = {
label: string
type: string
attrs?: Record<string, unknown>
}
const BLOCK_TYPES: BlockType[] = [
{ label: "Text", type: "textBlock" },
{ label: "Image", type: "imageBlock", attrs: { id: "", imageId: "", wide: false, caption: "" } },
{ label: "File", type: "documentBlock", attrs: { id: "", fileId: "", title: "" } },
{ label: "Embed", type: "embedBlock", attrs: { id: "", src: "" } },
{ label: "Card Grid", type: "cardGridBlock", attrs: { id: "", items: "[]" } },
]
export type BlockMenuProps = {
editor: Editor
position: number
onClose: () => void
filter?: string
}
export function BlockMenu({ editor, position, onClose, filter }: BlockMenuProps) {
const filtered = filter
? BLOCK_TYPES.filter(b => b.label.toLowerCase().includes(filter.toLowerCase()))
: BLOCK_TYPES
function handleInsert(block: BlockType) {
const id = generateBlockId()
if (block.type === "textBlock") {
editor
.chain()
.focus()
.insertContentAt(position, {
type: "textBlock",
content: [{ type: "paragraph" }],
})
.run()
} else {
editor
.chain()
.focus()
.insertContentAt(position, {
type: block.type,
attrs: { ...block.attrs, id },
})
.run()
}
onClose()
}
if (filtered.length === 0) return null
return (
<div className="block-menu">
{filtered.map(block => (
<button type="button" key={block.type} className="block-menu-item" onClick={() => handleInsert(block)}>
{block.label}
</button>
))}
</div>
)
}
export type { BlockType }
export { BLOCK_TYPES }
@@ -0,0 +1,24 @@
.draft-banner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background: #fff8e1;
border: 1px solid #ffe082;
border-radius: 4px;
margin-bottom: 12px;
font-size: 0.9rem;
}
.draft-banner-discard {
padding: 4px 12px;
border: 1px solid #ccc;
border-radius: 4px;
background: white;
cursor: pointer;
font-size: 0.85rem;
}
.draft-banner-discard:hover {
background: #f0f0f0;
}
@@ -0,0 +1,16 @@
import "./DraftBanner.css"
export type DraftBannerProps = {
onDiscard: () => void
}
export function DraftBanner({ onDiscard }: DraftBannerProps) {
return (
<div className="draft-banner">
<span>You have unpublished changes</span>
<button type="button" onClick={onDiscard} className="draft-banner-discard">
Discard
</button>
</div>
)
}
@@ -0,0 +1,88 @@
.editor {
width: 100%;
}
.editor-content {
position: relative;
}
.editor-content .tiptap {
outline: none;
min-height: 400px;
}
.editor-content .tiptap > * + * {
margin-top: 0.75em;
}
.editor-content .tiptap h1 {
font-size: 2rem;
}
.editor-content .tiptap h2 {
font-size: 1.5rem;
}
.editor-content .tiptap h3 {
font-size: 1.25rem;
}
.editor-content .tiptap blockquote {
border-left: 3px solid #e0e0e0;
padding-left: 1rem;
color: #666;
}
.editor-content .tiptap pre {
background: #f5f5f5;
border-radius: 4px;
padding: 12px;
font-family: monospace;
}
.editor-content .tiptap code {
background: #f0f0f0;
border-radius: 2px;
padding: 0.1em 0.3em;
font-size: 0.9em;
}
.editor-content .tiptap hr {
border: none;
border-top: 1px solid #e0e0e0;
margin: 1.5em 0;
}
.editor-content .tiptap a {
color: #2563eb;
text-decoration: underline;
}
.editor-content .tiptap ul,
.editor-content .tiptap ol {
padding-left: 1.5em;
}
.editor-markdown {
width: 100%;
min-height: 400px;
padding: 16px;
font-family: monospace;
font-size: 14px;
line-height: 1.6;
border: 1px solid #e0e0e0;
border-radius: 4px;
resize: vertical;
outline: none;
box-sizing: border-box;
}
.editor-markdown:focus {
border-color: #213547;
}
.editor-content .tiptap [data-node-view-wrapper].active-block > .node-view-content {
outline: 2px solid #d0d5dd;
outline-offset: 2px;
border-radius: 4px;
}
@@ -0,0 +1,160 @@
import Link from "@tiptap/extension-link"
import { Markdown } from "@tiptap/markdown"
import { EditorContent, useEditor } from "@tiptap/react"
import StarterKit from "@tiptap/starter-kit"
import { useCallback, useRef, useState } from "react"
import { SlashCommands } from "../extensions/SlashCommands"
import { docToTiptap, tiptapToDoc } from "../lib/serialize"
import { CardGridBlock, DocumentBlock, EmbedBlock, ImageBlock, TextBlock, WriterDocument } from "../nodes"
import { pb } from "../pb"
import { DraftBanner } from "./DraftBanner"
import { Toolbar } from "./Toolbar"
import "../nodes/nodes.css"
import "./Editor.css"
import type { DocV1, PbPage } from "../types"
function serializeDoc(doc: DocV1): string {
return JSON.stringify(doc)
}
export type EditorProps = {
page: PbPage
}
export function Editor({ page }: EditorProps) {
const [saving, setSaving] = useState(false)
const [publishing, setPublishing] = useState(false)
const [markdownMode, setMarkdownMode] = useState(false)
const [markdownText, setMarkdownText] = useState("")
const [dirty, setDirty] = useState(false)
const [hasDraft, setHasDraft] = useState(page.draft !== null)
const [publishedDoc, setPublishedDoc] = useState(page.doc)
const initialDoc = page.draft ?? page.doc
const tiptapDoc = docToTiptap(initialDoc)
const snapshotRef = useRef(serializeDoc(initialDoc))
const editor = useEditor({
extensions: [
WriterDocument,
StarterKit.configure({
document: false,
}),
TextBlock,
Markdown,
Link.configure({ openOnClick: false }),
ImageBlock,
DocumentBlock,
EmbedBlock,
CardGridBlock,
SlashCommands,
],
content: tiptapDoc,
onUpdate: ({ editor }) => {
const json = editor.getJSON()
const doc = tiptapToDoc(json.content ?? [])
const current = serializeDoc(doc)
setDirty(current !== snapshotRef.current)
},
})
const getCurrentDoc = useCallback((): DocV1 => {
if (!editor) return { version: 1, blocks: [] }
if (markdownMode) {
editor.commands.setContent(markdownText, { contentType: "markdown" })
setMarkdownMode(false)
}
const json = editor.getJSON()
return tiptapToDoc(json.content ?? [])
}, [editor, markdownMode, markdownText])
const handleToggleMarkdown = useCallback(() => {
if (!editor) return
if (!markdownMode) {
const md = editor.getMarkdown()
setMarkdownText(md)
setMarkdownMode(true)
} else {
editor.commands.setContent(markdownText, { contentType: "markdown" })
setMarkdownMode(false)
}
}, [editor, markdownMode, markdownText])
const handleSave = useCallback(async () => {
if (!editor) return
setSaving(true)
try {
const doc = getCurrentDoc()
await pb.collection("pages").update(page.id, { draft: doc })
snapshotRef.current = serializeDoc(doc)
setDirty(false)
setHasDraft(true)
} catch (err) {
console.error("Save failed:", err)
alert("Save failed. Check console.")
} finally {
setSaving(false)
}
}, [editor, page.id, getCurrentDoc])
const handlePublish = useCallback(async () => {
if (!editor) return
setPublishing(true)
try {
const doc = getCurrentDoc()
await pb.collection("pages").update(page.id, { doc, draft: null })
snapshotRef.current = serializeDoc(doc)
setDirty(false)
setHasDraft(false)
setPublishedDoc(doc)
} catch (err) {
console.error("Publish failed:", err)
alert("Publish failed. Check console.")
} finally {
setPublishing(false)
}
}, [editor, page.id, getCurrentDoc])
const handleDiscard = useCallback(async () => {
if (!editor) return
try {
await pb.collection("pages").update(page.id, { draft: null })
const tiptap = docToTiptap(publishedDoc)
editor.commands.setContent(tiptap)
snapshotRef.current = serializeDoc(publishedDoc)
setDirty(false)
setHasDraft(false)
setMarkdownMode(false)
} catch (err) {
console.error("Discard failed:", err)
alert("Discard failed. Check console.")
}
}, [editor, page.id, publishedDoc])
return (
<div className="editor">
<Toolbar
editor={editor}
onSave={handleSave}
onPublish={handlePublish}
saving={saving}
publishing={publishing}
dirty={dirty}
hasDraft={hasDraft}
markdownMode={markdownMode}
onToggleMarkdown={handleToggleMarkdown}
/>
{hasDraft && <DraftBanner onDiscard={handleDiscard} />}
{markdownMode ? (
<textarea
className="editor-markdown"
value={markdownText}
onChange={e => setMarkdownText(e.target.value)}
/>
) : (
<EditorContent editor={editor} className="editor-content" />
)}
</div>
)
}
@@ -0,0 +1,32 @@
.file-picker-list {
display: flex;
flex-direction: column;
gap: 2px;
}
.file-picker-item {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
border: none;
background: none;
cursor: pointer;
text-align: left;
border-radius: 4px;
font-size: 0.9rem;
}
.file-picker-item:hover {
background: #f0f4ff;
}
.file-picker-icon {
font-size: 1.1rem;
}
.file-picker-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@@ -0,0 +1,130 @@
import { useEffect, useRef, useState } from "react"
import { pb } from "../pb"
import type { PbFile } from "../types"
import "./FilePicker.css"
export type FilePickerProps = {
onSelect: (fileId: string) => void
onClose: () => void
}
export function FilePicker({ onSelect, onClose }: FilePickerProps) {
const [files, setFiles] = useState<PbFile[]>([])
const [page, setPage] = useState(1)
const [totalPages, setTotalPages] = useState(1)
const [loading, setLoading] = useState(false)
const [uploading, setUploading] = useState(false)
const [tab, setTab] = useState<"browse" | "upload">("browse")
const fileRef = useRef<HTMLInputElement>(null)
useEffect(() => {
let cancelled = false
setLoading(true)
pb.collection("files")
.getList<PbFile>(page, 20, { sort: "-created" })
.then(result => {
if (cancelled) return
setFiles(result.items)
setTotalPages(result.totalPages)
})
.catch(err => {
if (!cancelled) console.error("Failed to load files:", err)
})
.finally(() => {
if (!cancelled) setLoading(false)
})
return () => {
cancelled = true
}
}, [page])
async function handleUpload() {
const file = fileRef.current?.files?.[0]
if (!file) return
setUploading(true)
try {
const record = await pb.collection("files").create<PbFile>({
file,
filename: file.name,
})
onSelect(record.id)
} catch (err) {
console.error("Upload failed:", err)
alert("Upload failed. Check console.")
} finally {
setUploading(false)
}
}
return (
<div
className="picker-overlay"
onClick={onClose}
onKeyDown={e => {
if (e.key === "Escape") onClose()
}}
>
<div
className="picker"
onClick={e => e.stopPropagation()}
onKeyDown={e => {
e.stopPropagation()
}}
>
<div className="picker-header">
<button type="button" className={tab === "browse" ? "active" : ""} onClick={() => setTab("browse")}>
Browse
</button>
<button type="button" className={tab === "upload" ? "active" : ""} onClick={() => setTab("upload")}>
Upload
</button>
<button type="button" className="picker-close" onClick={onClose}>
×
</button>
</div>
{tab === "browse" && (
<div className="picker-browse">
{loading ? (
<div className="picker-loading">Loading...</div>
) : (
<div className="file-picker-list">
{files.map(f => (
<button
type="button"
key={f.id}
className="file-picker-item"
onClick={() => onSelect(f.id)}
>
<span className="file-picker-icon">📎</span>
<span className="file-picker-name">{f.filename}</span>
</button>
))}
</div>
)}
<div className="picker-pagination">
<button type="button" disabled={page <= 1} onClick={() => setPage(p => p - 1)}>
Prev
</button>
<span>
{page} / {totalPages}
</span>
<button type="button" disabled={page >= totalPages} onClick={() => setPage(p => p + 1)}>
Next
</button>
</div>
</div>
)}
{tab === "upload" && (
<div className="picker-upload">
<input type="file" ref={fileRef} />
<button type="button" onClick={handleUpload} disabled={uploading}>
{uploading ? "Uploading..." : "Upload"}
</button>
</div>
)}
</div>
</div>
)
}
@@ -0,0 +1,127 @@
.picker-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
}
.picker {
background: white;
border-radius: 8px;
width: 600px;
max-width: 90vw;
max-height: 80vh;
display: flex;
flex-direction: column;
overflow: hidden;
}
.picker-header {
display: flex;
gap: 4px;
padding: 8px;
border-bottom: 1px solid #e0e0e0;
}
.picker-header button {
padding: 4px 12px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
}
.picker-header button.active {
background: #213547;
color: white;
border-color: #213547;
}
.picker-close {
margin-left: auto !important;
font-size: 1.2rem;
}
.picker-browse {
flex: 1;
overflow-y: auto;
padding: 8px;
}
.picker-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 8px;
}
.picker-thumb {
border: 2px solid transparent;
border-radius: 4px;
padding: 0;
background: none;
cursor: pointer;
overflow: hidden;
aspect-ratio: 1;
}
.picker-thumb:hover {
border-color: #213547;
}
.picker-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
}
.picker-pagination {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
padding: 8px;
}
.picker-pagination button {
padding: 4px 12px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
}
.picker-pagination button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.picker-loading {
text-align: center;
padding: 40px;
color: #888;
}
.picker-upload {
display: flex;
flex-direction: column;
gap: 12px;
padding: 20px;
align-items: flex-start;
}
.picker-upload button {
padding: 8px 16px;
border: none;
border-radius: 4px;
background: #213547;
color: white;
cursor: pointer;
}
.picker-upload button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
@@ -0,0 +1,138 @@
import { useEffect, useRef, useState } from "react"
import { pb } from "../pb"
import type { PbImage } from "../types"
import "./ImagePicker.css"
export type ImagePickerProps = {
onSelect: (imageId: string) => void
onClose: () => void
}
export function ImagePicker({ onSelect, onClose }: ImagePickerProps) {
const [images, setImages] = useState<PbImage[]>([])
const [page, setPage] = useState(1)
const [totalPages, setTotalPages] = useState(1)
const [loading, setLoading] = useState(false)
const [uploading, setUploading] = useState(false)
const [tab, setTab] = useState<"browse" | "upload">("browse")
const fileRef = useRef<HTMLInputElement>(null)
useEffect(() => {
let cancelled = false
setLoading(true)
pb.collection("images")
.getList<PbImage>(page, 20, { sort: "-created" })
.then(result => {
if (cancelled) return
setImages(result.items)
setTotalPages(result.totalPages)
})
.catch(err => {
if (!cancelled) console.error("Failed to load images:", err)
})
.finally(() => {
if (!cancelled) setLoading(false)
})
return () => {
cancelled = true
}
}, [page])
async function handleUpload() {
const file = fileRef.current?.files?.[0]
if (!file) return
setUploading(true)
try {
const record = await pb.collection("images").create<PbImage>({
file,
filename: file.name,
width: 0,
height: 0,
alt: "",
caption: "",
blurhash: "",
})
onSelect(record.id)
} catch (err) {
console.error("Upload failed:", err)
alert("Upload failed. Check console.")
} finally {
setUploading(false)
}
}
function getThumbUrl(img: PbImage): string {
return pb.files.getURL(img, img.file, { thumb: "150x150" })
}
return (
<div
className="picker-overlay"
onClick={onClose}
onKeyDown={e => {
if (e.key === "Escape") onClose()
}}
>
<div
className="picker"
onClick={e => e.stopPropagation()}
onKeyDown={e => {
e.stopPropagation()
}}
>
<div className="picker-header">
<button type="button" className={tab === "browse" ? "active" : ""} onClick={() => setTab("browse")}>
Browse
</button>
<button type="button" className={tab === "upload" ? "active" : ""} onClick={() => setTab("upload")}>
Upload
</button>
<button type="button" className="picker-close" onClick={onClose}>
×
</button>
</div>
{tab === "browse" && (
<div className="picker-browse">
{loading ? (
<div className="picker-loading">Loading...</div>
) : (
<div className="picker-grid">
{images.map(img => (
<button
type="button"
key={img.id}
className="picker-thumb"
onClick={() => onSelect(img.id)}
>
<img src={getThumbUrl(img)} alt={img.alt || img.filename} />
</button>
))}
</div>
)}
<div className="picker-pagination">
<button type="button" disabled={page <= 1} onClick={() => setPage(p => p - 1)}>
Prev
</button>
<span>
{page} / {totalPages}
</span>
<button type="button" disabled={page >= totalPages} onClick={() => setPage(p => p + 1)}>
Next
</button>
</div>
</div>
)}
{tab === "upload" && (
<div className="picker-upload">
<input type="file" accept="image/*" ref={fileRef} />
<button type="button" onClick={handleUpload} disabled={uploading}>
{uploading ? "Uploading..." : "Upload"}
</button>
</div>
)}
</div>
</div>
)
}
@@ -0,0 +1,45 @@
.login {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
.login-form {
display: flex;
flex-direction: column;
gap: 12px;
width: 320px;
}
.login-form h1 {
font-size: 1.4rem;
margin-bottom: 8px;
}
.login-form input {
padding: 8px 12px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1rem;
}
.login-form button {
padding: 8px 12px;
border: none;
border-radius: 4px;
background: #213547;
color: white;
font-size: 1rem;
cursor: pointer;
}
.login-form button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.login-error {
color: #c00;
font-size: 0.9rem;
}
@@ -0,0 +1,55 @@
import type { FormEvent } from "react"
import { useState } from "react"
import { pb } from "../pb"
import "./Login.css"
export type LoginProps = {
onLogin: () => void
}
export function Login({ onLogin }: LoginProps) {
const [email, setEmail] = useState("")
const [password, setPassword] = useState("")
const [error, setError] = useState("")
const [loading, setLoading] = useState(false)
async function handleSubmit(e: FormEvent) {
e.preventDefault()
setError("")
setLoading(true)
try {
await pb.collection("_superusers").authWithPassword(email, password)
onLogin()
} catch {
setError("Authentication failed")
} finally {
setLoading(false)
}
}
return (
<div className="login">
<form className="login-form" onSubmit={handleSubmit}>
<h1>Hudozka Writer</h1>
{error && <p className="login-error">{error}</p>}
<input
type="email"
placeholder="Email"
value={email}
onChange={e => setEmail(e.target.value)}
required
/>
<input
type="password"
placeholder="Password"
value={password}
onChange={e => setPassword(e.target.value)}
required
/>
<button type="submit" disabled={loading}>
{loading ? "Signing in..." : "Sign in"}
</button>
</form>
</div>
)
}
@@ -0,0 +1,63 @@
.toolbar {
display: flex;
flex-wrap: wrap;
gap: 4px;
padding: 8px 0;
border-bottom: 1px solid #e0e0e0;
margin-bottom: 16px;
position: sticky;
top: 0;
background: white;
z-index: 10;
}
.toolbar-group {
display: flex;
gap: 2px;
}
.toolbar button {
padding: 4px 8px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
font-size: 0.85rem;
min-width: 32px;
}
.toolbar button:hover {
background: #f0f0f0;
}
.toolbar button.active {
background: #213547;
color: white;
border-color: #213547;
}
.toolbar-actions {
margin-left: auto;
gap: 4px;
}
.toolbar-save-btn {
padding: 4px 16px !important;
}
.toolbar-save-btn:disabled {
opacity: 0.6;
cursor: not-allowed !important;
}
.toolbar-publish-btn {
background: #213547 !important;
color: white !important;
border-color: #213547 !important;
padding: 4px 16px !important;
}
.toolbar-publish-btn:disabled {
opacity: 0.6;
cursor: not-allowed !important;
}
@@ -0,0 +1,161 @@
import type { Editor } from "@tiptap/react"
import "./Toolbar.css"
export type ToolbarProps = {
editor: Editor | null
onSave: () => void
onPublish: () => void
saving: boolean
publishing: boolean
dirty: boolean
hasDraft: boolean
markdownMode: boolean
onToggleMarkdown: () => void
}
export function Toolbar({
editor,
onSave,
onPublish,
saving,
publishing,
dirty,
hasDraft,
markdownMode,
onToggleMarkdown,
}: ToolbarProps) {
if (!editor) return null
const canSave = dirty
const canPublish = dirty || hasDraft
return (
<div className="toolbar">
<div className="toolbar-group">
<button
type="button"
onClick={() => editor.chain().focus().toggleBold().run()}
className={editor.isActive("bold") ? "active" : ""}
title="Bold"
>
B
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleItalic().run()}
className={editor.isActive("italic") ? "active" : ""}
title="Italic"
>
I
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleStrike().run()}
className={editor.isActive("strike") ? "active" : ""}
title="Strikethrough"
>
S
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleCode().run()}
className={editor.isActive("code") ? "active" : ""}
title="Inline code"
>
&lt;/&gt;
</button>
</div>
<div className="toolbar-group">
<button
type="button"
onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}
className={editor.isActive("heading", { level: 1 }) ? "active" : ""}
>
H1
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
className={editor.isActive("heading", { level: 2 }) ? "active" : ""}
>
H2
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}
className={editor.isActive("heading", { level: 3 }) ? "active" : ""}
>
H3
</button>
</div>
<div className="toolbar-group">
<button
type="button"
onClick={() => editor.chain().focus().toggleBulletList().run()}
className={editor.isActive("bulletList") ? "active" : ""}
title="Bullet list"
>
List
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleOrderedList().run()}
className={editor.isActive("orderedList") ? "active" : ""}
title="Numbered list"
>
1.
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleBlockquote().run()}
className={editor.isActive("blockquote") ? "active" : ""}
title="Blockquote"
>
&ldquo;
</button>
<button
type="button"
onClick={() => editor.chain().focus().toggleCodeBlock().run()}
className={editor.isActive("codeBlock") ? "active" : ""}
title="Code block"
>
Code
</button>
<button
type="button"
onClick={() => editor.chain().focus().setHorizontalRule().run()}
title="Horizontal rule"
>
---
</button>
</div>
<div className="toolbar-group">
<button
type="button"
onClick={onToggleMarkdown}
className={markdownMode ? "active" : ""}
title="Toggle markdown view"
>
MD
</button>
</div>
<div className="toolbar-group toolbar-actions">
<button type="button" onClick={onSave} disabled={!canSave || saving} className="toolbar-save-btn">
{saving ? "Saving..." : "Save"}
</button>
<button
type="button"
onClick={onPublish}
disabled={!canPublish || publishing}
className="toolbar-publish-btn"
>
{publishing ? "Publishing..." : "Publish"}
</button>
</div>
</div>
)
}
@@ -0,0 +1,28 @@
.slash-command-container {
z-index: 50;
}
.slash-menu {
background: white;
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
padding: 4px 0;
min-width: 160px;
}
.slash-menu-item {
display: block;
width: 100%;
padding: 8px 12px;
border: none;
background: none;
text-align: left;
cursor: pointer;
font-size: 0.9rem;
}
.slash-menu-item:hover,
.slash-menu-item--selected {
background: #f0f4ff;
}
@@ -0,0 +1,264 @@
import { Extension } from "@tiptap/core"
import type { Node as PmNode, ResolvedPos } from "@tiptap/pm/model"
import { Fragment } from "@tiptap/pm/model"
import { PluginKey } from "@tiptap/pm/state"
import type { Editor } from "@tiptap/react"
import type { SuggestionKeyDownProps, SuggestionOptions, SuggestionProps } from "@tiptap/suggestion"
import Suggestion from "@tiptap/suggestion"
import { createRoot } from "react-dom/client"
import { generateBlockId } from "../lib/id"
import "./SlashCommands.css"
type SlashCommandItem = {
label: string
type: string
attrs?: Record<string, unknown>
}
const ITEMS: SlashCommandItem[] = [
{ label: "Text", type: "textBlock" },
{ label: "Image", type: "imageBlock", attrs: { id: "", imageId: "", wide: false, caption: "" } },
{ label: "File", type: "documentBlock", attrs: { id: "", fileId: "", title: "" } },
{ label: "Embed", type: "embedBlock", attrs: { id: "", src: "" } },
{ label: "Card Grid", type: "cardGridBlock", attrs: { id: "", items: "[]" } },
]
const slashCommandsPluginKey = new PluginKey("slashCommands")
function findTextBlockDepth($pos: ResolvedPos): number | null {
for (let d = $pos.depth; d > 0; d--) {
if ($pos.node(d).type.name === "textBlock") {
return d
}
}
return null
}
function SlashMenu({
items,
command,
selectedIndex,
}: {
items: SlashCommandItem[]
command: (item: SlashCommandItem) => void
selectedIndex: number
}) {
if (items.length === 0) return null
return (
<div className="slash-menu">
{items.map((item, index) => (
<button
type="button"
key={item.type}
className={`slash-menu-item${index === selectedIndex ? " slash-menu-item--selected" : ""}`}
onClick={() => command(item)}
>
{item.label}
</button>
))}
</div>
)
}
export const SlashCommands = Extension.create({
name: "slashCommands",
addOptions() {
return {
suggestion: {
char: "/",
pluginKey: slashCommandsPluginKey,
startOfLine: true,
items: ({ query }: { query: string }) => {
return ITEMS.filter(item => item.label.toLowerCase().includes(query.toLowerCase()))
},
render: () => {
let container: HTMLDivElement | null = null
let root: ReturnType<typeof createRoot> | null = null
let selectedIndex = 0
let currentItems: SlashCommandItem[] = []
let currentCommand: ((item: SlashCommandItem) => void) | null = null
function renderMenu() {
if (!root || !currentCommand) return
root.render(
<SlashMenu items={currentItems} command={currentCommand} selectedIndex={selectedIndex} />,
)
}
return {
onStart: (props: SuggestionProps<SlashCommandItem, SlashCommandItem>) => {
container = document.createElement("div")
container.className = "slash-command-container"
document.body.appendChild(container)
root = createRoot(container)
const rect = props.clientRect?.()
if (rect && container) {
container.style.position = "fixed"
container.style.left = `${rect.left}px`
container.style.top = `${rect.bottom + 4}px`
container.style.zIndex = "50"
}
selectedIndex = 0
currentItems = props.items
currentCommand = props.command
renderMenu()
},
onUpdate: (props: SuggestionProps<SlashCommandItem, SlashCommandItem>) => {
if (!root || !container) return
const rect = props.clientRect?.()
if (rect && container) {
container.style.left = `${rect.left}px`
container.style.top = `${rect.bottom + 4}px`
}
currentItems = props.items
currentCommand = props.command
selectedIndex = 0
renderMenu()
},
onExit: () => {
root?.unmount()
container?.remove()
container = null
root = null
},
onKeyDown: (props: SuggestionKeyDownProps) => {
const { key } = props.event
if (key === "Escape") {
root?.unmount()
container?.remove()
container = null
root = null
return true
}
if (key === "ArrowDown") {
selectedIndex = (selectedIndex + 1) % currentItems.length
renderMenu()
return true
}
if (key === "ArrowUp") {
selectedIndex = (selectedIndex - 1 + currentItems.length) % currentItems.length
renderMenu()
return true
}
if (key === "Enter") {
if (currentItems[selectedIndex] && currentCommand) {
currentCommand(currentItems[selectedIndex])
}
return true
}
return false
},
}
},
command: ({
editor,
range,
props,
}: {
editor: Editor
range: { from: number; to: number }
props: SlashCommandItem
}) => {
// Delete the slash command text
editor.chain().focus().deleteRange(range).run()
if (props.type === "textBlock") {
// Already inside a textBlock paragraph — nothing to do
return
}
const { from } = editor.state.selection
const id = generateBlockId()
const newNode = { type: props.type, attrs: { ...props.attrs, id } }
// Check if we're inside a textBlock
const $pos = editor.state.doc.resolve(from)
const textBlockDepth = findTextBlockDepth($pos)
if (textBlockDepth === null) {
// Not inside a textBlock — insert directly
editor.chain().focus().insertContentAt(from, newNode).run()
return
}
// Inside a textBlock — split it and insert the custom block between halves
const textBlockPos = $pos.before(textBlockDepth)
const textBlockNode = editor.state.doc.nodeAt(textBlockPos)
if (!textBlockNode) return
// Find which child contains the cursor
let childOffset = textBlockPos + 1
let splitAfter = -1
for (let i = 0; i < textBlockNode.childCount; i++) {
const child = textBlockNode.child(i)
const childEnd = childOffset + child.nodeSize
if (from >= childOffset && from <= childEnd) {
// If the paragraph is empty (just deleted the slash), split before it
const curChild = textBlockNode.child(i)
if (curChild.content.size === 0 && i > 0) {
splitAfter = i - 1
} else if (curChild.content.size === 0 && i === 0) {
splitAfter = -1 // cursor in empty first child
} else {
splitAfter = i
}
break
}
childOffset = childEnd
}
const { schema } = editor.state
const textBlockType = schema.nodes.textBlock
const fragments: PmNode[] = []
// Build first textBlock (children 0..splitAfter) — skip if empty
if (splitAfter >= 0) {
const children = []
for (let i = 0; i <= splitAfter; i++) {
children.push(textBlockNode.child(i))
}
// Skip if all children are empty paragraphs
const hasContent = children.some(c => c.content.size > 0)
if (hasContent) {
fragments.push(textBlockType.create(null, children))
}
}
// Insert the custom block
fragments.push(schema.nodes[props.type].create({ ...props.attrs, id }))
// Build second textBlock (children after splitAfter) — skip empty
const remaining = []
const startIdx = splitAfter + 1
for (let i = startIdx; i < textBlockNode.childCount; i++) {
remaining.push(textBlockNode.child(i))
}
// Filter out empty paragraphs at the edges
const nonEmpty = remaining.filter(c => c.content.size > 0)
if (nonEmpty.length > 0) {
fragments.push(textBlockType.create(null, remaining))
}
const tr = editor.state.tr
tr.replaceWith(textBlockPos, textBlockPos + textBlockNode.nodeSize, Fragment.from(fragments))
editor.view.dispatch(tr)
},
} satisfies Partial<SuggestionOptions<SlashCommandItem, SlashCommandItem>>,
}
},
addProseMirrorPlugins() {
return [
Suggestion({
editor: this.editor,
...this.options.suggestion,
}),
]
},
})
+16
View File
@@ -0,0 +1,16 @@
:root {
font-family: system-ui, -apple-system, sans-serif;
line-height: 1.5;
color: #213547;
background-color: #ffffff;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
}
+3
View File
@@ -0,0 +1,3 @@
export function generateBlockId(): string {
return crypto.randomUUID().slice(0, 8)
}
+14
View File
@@ -0,0 +1,14 @@
import Link from "@tiptap/extension-link"
import { MarkdownManager } from "@tiptap/markdown"
import StarterKit from "@tiptap/starter-kit"
let manager: MarkdownManager | null = null
export function getMarkdownManager(): MarkdownManager {
if (!manager) {
manager = new MarkdownManager({
extensions: [StarterKit, Link],
})
}
return manager
}
+168
View File
@@ -0,0 +1,168 @@
import type { JSONContent } from "@tiptap/core"
import type {
DocV1,
DocV1Block,
DocV1BlockCardGrid,
DocV1BlockDocument,
DocV1BlockEmbed,
DocV1BlockImage,
DocV1BlockText,
} from "../types"
import { generateBlockId } from "./id"
import { getMarkdownManager } from "./markdown"
// -- DocV1 -> Tiptap JSON --
function textBlockToTiptap(block: DocV1BlockText): JSONContent {
const manager = getMarkdownManager()
const parsed = manager.parse(block.text)
return {
type: "textBlock",
content: parsed.content ?? [],
}
}
function imageBlockToTiptap(block: DocV1BlockImage): JSONContent {
return {
type: "imageBlock",
attrs: {
id: block.id,
imageId: block.image,
wide: block.wide,
caption: block.caption,
},
}
}
function documentBlockToTiptap(block: DocV1BlockDocument): JSONContent {
return {
type: "documentBlock",
attrs: {
id: block.id,
fileId: block.file,
title: block.title,
},
}
}
function embedBlockToTiptap(block: DocV1BlockEmbed): JSONContent {
return {
type: "embedBlock",
attrs: {
id: block.id,
src: block.src,
},
}
}
function cardGridBlockToTiptap(block: DocV1BlockCardGrid): JSONContent {
return {
type: "cardGridBlock",
attrs: {
id: block.id,
items: JSON.stringify(block.items),
},
}
}
export function docToTiptap(doc: DocV1): JSONContent {
const content: JSONContent[] = []
for (const block of doc.blocks) {
switch (block.type) {
case "text":
content.push(textBlockToTiptap(block))
break
case "image":
content.push(imageBlockToTiptap(block))
break
case "document":
content.push(documentBlockToTiptap(block))
break
case "embed":
content.push(embedBlockToTiptap(block))
break
case "card-grid":
content.push(cardGridBlockToTiptap(block))
break
}
}
return {
type: "doc",
content,
}
}
// -- Tiptap JSON -> DocV1 --
function textNodesToMarkdown(nodes: JSONContent[]): string {
const manager = getMarkdownManager()
const doc: JSONContent = { type: "doc", content: nodes }
return manager.serialize(doc)
}
export function tiptapToDoc(content: JSONContent[]): DocV1 {
const blocks: DocV1Block[] = []
for (const node of content) {
switch (node.type) {
case "textBlock": {
const text = textNodesToMarkdown(node.content ?? [])
if (text.trim()) {
blocks.push({
type: "text",
id: generateBlockId(),
text,
})
}
break
}
case "imageBlock": {
const attrs = node.attrs ?? {}
blocks.push({
type: "image",
id: attrs.id ?? generateBlockId(),
image: attrs.imageId ?? "",
wide: attrs.wide ?? false,
caption: attrs.caption ?? "",
})
break
}
case "documentBlock": {
const attrs = node.attrs ?? {}
blocks.push({
type: "document",
id: attrs.id ?? generateBlockId(),
file: attrs.fileId ?? "",
title: attrs.title ?? "",
})
break
}
case "embedBlock": {
const attrs = node.attrs ?? {}
blocks.push({
type: "embed",
id: attrs.id ?? generateBlockId(),
src: attrs.src ?? "",
})
break
}
case "cardGridBlock": {
const attrs = node.attrs ?? {}
blocks.push({
type: "card-grid",
id: attrs.id ?? generateBlockId(),
items: JSON.parse(attrs.items ?? "[]"),
})
break
}
}
}
return { version: 1, blocks }
}
+13
View File
@@ -0,0 +1,13 @@
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import { App } from "./App"
import "./index.css"
const rootElement = document.getElementById("root")
if (!rootElement) throw new Error("Root element #root not found")
createRoot(rootElement).render(
<StrictMode>
<App />
</StrictMode>,
)
@@ -0,0 +1,90 @@
import { mergeAttributes, Node } from "@tiptap/core"
import type { NodeViewProps } from "@tiptap/react"
import { NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react"
import { useEffect, useMemo, useState } from "react"
import { BlockActions } from "../components/BlockActions"
import { BlockInsert } from "../components/BlockInsert"
import { pb } from "../pb"
import type { PbPage } from "../types"
type ResolvedItem = {
page: string
title: string | null
}
function CardGridBlockView({ node, editor, getPos }: NodeViewProps) {
const items = useMemo<Array<{ page: string }>>(() => JSON.parse(node.attrs.items || "[]"), [node.attrs.items])
const [resolved, setResolved] = useState<ResolvedItem[]>([])
const [loading, setLoading] = useState(false)
useEffect(() => {
if (items.length === 0) {
setResolved([])
return
}
setLoading(true)
Promise.all(
items.map(async item => {
try {
const page = await pb.collection("pages").getOne<PbPage>(item.page)
return { page: item.page, title: page.title }
} catch {
return { page: item.page, title: null }
}
}),
).then(results => {
setResolved(results)
setLoading(false)
})
}, [items])
return (
<>
<NodeViewWrapper className="node-view-block node-readonly-block">
<BlockActions editor={editor} getPos={getPos} />
<div className="node-view-content">
<div className="node-block-label">Card Grid ({items.length})</div>
{loading ? (
<div className="node-block-info">Loading...</div>
) : (
<ul className="node-cardgrid-list">
{resolved.map(item => (
<li key={item.page} className="node-cardgrid-item">
{item.title ?? item.page}
</li>
))}
</ul>
)}
</div>
</NodeViewWrapper>
<BlockInsert editor={editor} getPos={getPos} />
</>
)
}
export const CardGridBlock = Node.create({
name: "cardGridBlock",
group: "block",
atom: true,
draggable: true,
addAttributes() {
return {
id: { default: null },
items: { default: "[]" },
}
},
parseHTML() {
return [{ tag: "div[data-card-grid-block]" }]
},
renderHTML({ HTMLAttributes }) {
return ["div", mergeAttributes(HTMLAttributes, { "data-card-grid-block": "" })]
},
addNodeView() {
return ReactNodeViewRenderer(CardGridBlockView)
},
})
@@ -0,0 +1,103 @@
import { mergeAttributes, Node } from "@tiptap/core"
import type { NodeViewProps } from "@tiptap/react"
import { NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react"
import { useEffect, useState } from "react"
import { BlockActions } from "../components/BlockActions"
import { BlockInsert } from "../components/BlockInsert"
import { FilePicker } from "../components/FilePicker"
import { pb } from "../pb"
import type { PbFile } from "../types"
function DocumentBlockView({ node, updateAttributes, editor, getPos }: NodeViewProps) {
const { fileId, title } = node.attrs
const [filename, setFilename] = useState<string | null>(null)
const [showPicker, setShowPicker] = useState(false)
useEffect(() => {
if (!fileId) return
pb.collection("files")
.getOne<PbFile>(fileId)
.then(f => {
setFilename(f.filename)
})
.catch(() => {
setFilename(null)
})
}, [fileId])
function handleSelect(newFileId: string) {
updateAttributes({ fileId: newFileId })
setShowPicker(false)
}
return (
<>
<NodeViewWrapper className="node-view-block node-document-block">
<BlockActions editor={editor} getPos={getPos} />
<div className="node-view-content">
<div className="node-block-label">File</div>
{fileId ? (
<button
type="button"
className="node-document-file"
onClick={() => setShowPicker(true)}
style={{ cursor: "pointer" }}
>
📎 {filename ?? fileId}
</button>
) : (
<button
type="button"
className="node-document-placeholder"
onClick={() => setShowPicker(true)}
style={{ cursor: "pointer" }}
>
Click to select file
</button>
)}
<div className="node-document-controls">
<input
type="text"
placeholder="Title"
value={title || ""}
onChange={e => updateAttributes({ title: e.target.value })}
className="node-document-title"
/>
<button type="button" className="node-image-pick-btn" onClick={() => setShowPicker(true)}>
Pick
</button>
</div>
{showPicker && <FilePicker onSelect={handleSelect} onClose={() => setShowPicker(false)} />}
</div>
</NodeViewWrapper>
<BlockInsert editor={editor} getPos={getPos} />
</>
)
}
export const DocumentBlock = Node.create({
name: "documentBlock",
group: "block",
atom: true,
draggable: true,
addAttributes() {
return {
id: { default: null },
fileId: { default: "" },
title: { default: "" },
}
},
parseHTML() {
return [{ tag: "div[data-document-block]" }]
},
renderHTML({ HTMLAttributes }) {
return ["div", mergeAttributes(HTMLAttributes, { "data-document-block": "" })]
},
addNodeView() {
return ReactNodeViewRenderer(DocumentBlockView)
},
})
@@ -0,0 +1,48 @@
import { mergeAttributes, Node } from "@tiptap/core"
import type { NodeViewProps } from "@tiptap/react"
import { NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react"
import { BlockActions } from "../components/BlockActions"
import { BlockInsert } from "../components/BlockInsert"
function EmbedBlockView({ node, editor, getPos }: NodeViewProps) {
return (
<>
<NodeViewWrapper className="node-view-block node-readonly-block">
<BlockActions editor={editor} getPos={getPos} />
<div className="node-view-content">
<div className="node-block-label">Embed</div>
<div className="node-block-info">
<code>{node.attrs.src}</code>
</div>
</div>
</NodeViewWrapper>
<BlockInsert editor={editor} getPos={getPos} />
</>
)
}
export const EmbedBlock = Node.create({
name: "embedBlock",
group: "block",
atom: true,
draggable: true,
addAttributes() {
return {
id: { default: null },
src: { default: "" },
}
},
parseHTML() {
return [{ tag: "div[data-embed-block]" }]
},
renderHTML({ HTMLAttributes }) {
return ["div", mergeAttributes(HTMLAttributes, { "data-embed-block": "" })]
},
addNodeView() {
return ReactNodeViewRenderer(EmbedBlockView)
},
})
@@ -0,0 +1,113 @@
import { mergeAttributes, Node } from "@tiptap/core"
import type { NodeViewProps } from "@tiptap/react"
import { NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react"
import { useEffect, useState } from "react"
import { BlockActions } from "../components/BlockActions"
import { BlockInsert } from "../components/BlockInsert"
import { ImagePicker } from "../components/ImagePicker"
import { pb } from "../pb"
import type { PbImage } from "../types"
function ImageBlockView({ node, updateAttributes, editor, getPos }: NodeViewProps) {
const { imageId, wide, caption } = node.attrs
const [thumbnail, setThumbnail] = useState<string | null>(null)
const [showPicker, setShowPicker] = useState(false)
useEffect(() => {
if (!imageId) return
pb.collection("images")
.getOne<PbImage>(imageId)
.then(img => {
const url = pb.files.getURL(img, img.file, { thumb: "300x200" })
setThumbnail(url)
})
.catch(() => {
setThumbnail(null)
})
}, [imageId])
function handleSelect(newImageId: string) {
updateAttributes({ imageId: newImageId })
setShowPicker(false)
}
return (
<>
<NodeViewWrapper className="node-view-block node-image-block">
<BlockActions editor={editor} getPos={getPos} />
<div className="node-view-content">
<div className="node-block-label">Image</div>
{thumbnail ? (
<button
type="button"
className="node-image-thumb-button"
onClick={() => setShowPicker(true)}
style={{ cursor: "pointer", padding: 0, border: 0, background: "none" }}
>
<img src={thumbnail} alt={caption || "image"} className="node-image-thumb" />
</button>
) : (
<button
type="button"
className="node-image-placeholder"
onClick={() => setShowPicker(true)}
style={{ cursor: "pointer" }}
>
{imageId ? "Loading..." : "Click to select image"}
</button>
)}
<div className="node-image-controls">
<label>
<input
type="checkbox"
checked={wide}
onChange={e => updateAttributes({ wide: e.target.checked })}
/>
Wide
</label>
<input
type="text"
placeholder="Caption"
value={caption || ""}
onChange={e => updateAttributes({ caption: e.target.value })}
className="node-image-caption"
/>
<button type="button" className="node-image-pick-btn" onClick={() => setShowPicker(true)}>
Pick
</button>
</div>
{showPicker && <ImagePicker onSelect={handleSelect} onClose={() => setShowPicker(false)} />}
</div>
</NodeViewWrapper>
<BlockInsert editor={editor} getPos={getPos} />
</>
)
}
export const ImageBlock = Node.create({
name: "imageBlock",
group: "block",
atom: true,
draggable: true,
addAttributes() {
return {
id: { default: null },
imageId: { default: "" },
wide: { default: false },
caption: { default: "" },
}
},
parseHTML() {
return [{ tag: "div[data-image-block]" }]
},
renderHTML({ HTMLAttributes }) {
return ["div", mergeAttributes(HTMLAttributes, { "data-image-block": "" })]
},
addNodeView() {
return ReactNodeViewRenderer(ImageBlockView)
},
})
@@ -0,0 +1,37 @@
import { mergeAttributes, Node } from "@tiptap/core"
import type { NodeViewProps } from "@tiptap/react"
import { NodeViewContent, NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react"
import { BlockActions } from "../components/BlockActions"
import { BlockInsert } from "../components/BlockInsert"
function TextBlockView({ editor, getPos }: NodeViewProps) {
return (
<>
<NodeViewWrapper className="node-view-block node-text-block">
<BlockActions editor={editor} getPos={getPos} />
<NodeViewContent className="node-view-content" />
</NodeViewWrapper>
<BlockInsert editor={editor} getPos={getPos} />
</>
)
}
export const TextBlock = Node.create({
name: "textBlock",
group: "block",
content: "(paragraph | heading | bulletList | orderedList | blockquote | codeBlock | horizontalRule)+",
draggable: true,
defining: true,
parseHTML() {
return [{ tag: "div[data-text-block]" }]
},
renderHTML({ HTMLAttributes }) {
return ["div", mergeAttributes(HTMLAttributes, { "data-text-block": "" }), 0]
},
addNodeView() {
return ReactNodeViewRenderer(TextBlockView)
},
})
@@ -0,0 +1,7 @@
import { Node } from "@tiptap/core"
export const WriterDocument = Node.create({
name: "doc",
topNode: true,
content: "(textBlock | imageBlock | documentBlock | embedBlock | cardGridBlock)+",
})
+6
View File
@@ -0,0 +1,6 @@
export { CardGridBlock } from "./CardGridBlock"
export { DocumentBlock } from "./DocumentBlock"
export { EmbedBlock } from "./EmbedBlock"
export { ImageBlock } from "./ImageBlock"
export { TextBlock } from "./TextBlock"
export { WriterDocument } from "./WriterDocument"
+109
View File
@@ -0,0 +1,109 @@
.node-block-label {
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #888;
margin-bottom: 4px;
}
.node-image-block > .node-view-content,
.node-readonly-block > .node-view-content,
.node-document-block > .node-view-content {
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 12px;
background: #fafafa;
}
.node-image-thumb {
max-width: 100%;
max-height: 200px;
border-radius: 4px;
object-fit: cover;
}
.node-image-placeholder {
height: 100px;
display: flex;
align-items: center;
justify-content: center;
background: #f0f0f0;
border-radius: 4px;
color: #888;
}
.node-image-controls {
display: flex;
gap: 12px;
align-items: center;
margin-top: 8px;
}
.node-image-caption {
flex: 1;
padding: 4px 8px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 0.9rem;
}
.node-block-info {
display: flex;
gap: 8px;
align-items: center;
}
.node-block-info code {
font-size: 0.8rem;
color: #666;
}
.node-image-pick-btn {
padding: 2px 8px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
font-size: 0.85rem;
}
.node-document-file {
padding: 8px;
background: #f0f0f0;
border-radius: 4px;
font-size: 0.9rem;
}
.node-document-placeholder {
padding: 8px;
background: #f0f0f0;
border-radius: 4px;
color: #888;
text-align: center;
}
.node-document-controls {
display: flex;
gap: 12px;
align-items: center;
margin-top: 8px;
}
.node-document-title {
flex: 1;
padding: 4px 8px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 0.9rem;
}
.node-cardgrid-list {
margin: 4px 0 0;
padding-left: 20px;
font-size: 0.9rem;
}
.node-cardgrid-item {
color: #444;
line-height: 1.6;
}
+7
View File
@@ -0,0 +1,7 @@
import PocketBase from "pocketbase"
// Default to same origin; override via env for dev
const url = import.meta.env.VITE_PB_URL ?? "http://127.0.0.1:8090"
export const pb = new PocketBase(url)
pb.autoCancellation(false)
+85
View File
@@ -0,0 +1,85 @@
// -- PocketBase record base --
export type PbRecord = {
id: string
collectionId: string
collectionName: string
created: string
updated: string
}
// -- PocketBase collection types --
export type PbImage = PbRecord & {
file: string
filename: string
width: number
height: number
blurhash: string
alt: string
caption: string
}
export type PbFile = PbRecord & {
file: string
filename: string
}
export type PbPage = PbRecord & {
title: string
slug: string
excerpt: string
date: string
cover: string
doc: DocV1
tags: string[]
published: boolean
draft: DocV1 | null
}
// -- DocV1 document format --
export type DocV1BlockText = {
type: "text"
id: string
text: string
}
export type DocV1BlockImage = {
type: "image"
id: string
image: string
wide: boolean
caption: string
}
export type DocV1BlockDocument = {
type: "document"
id: string
file: string
title: string
}
export type DocV1BlockEmbed = {
type: "embed"
id: string
src: string
}
export type DocV1BlockCardGridItem = {
page: string
layout: "small" | "medium" | "big"
}
export type DocV1BlockCardGrid = {
type: "card-grid"
id: string
items: DocV1BlockCardGridItem[]
}
export type DocV1Block = DocV1BlockText | DocV1BlockImage | DocV1BlockDocument | DocV1BlockEmbed | DocV1BlockCardGrid
export type DocV1 = {
version: 1
blocks: DocV1Block[]
}
+1
View File
@@ -0,0 +1 @@
/// <reference types="vite/client" />
+13
View File
@@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"allowImportingTsExtensions": true,
"isolatedModules": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src", "vite.config.ts"]
}
+6
View File
@@ -0,0 +1,6 @@
import { defineConfig } from "vite"
import react from "@vitejs/plugin-react"
export default defineConfig({
plugins: [react()],
})
+5
View File
@@ -0,0 +1,5 @@
modules
.vercel
.next
.github
node_modules
+3
View File
@@ -0,0 +1,3 @@
APP_CARD_DEFAULT_IMAGE=https://art.shlisselburg.org/static/img/main.jpg
NEXT_PUBLIC_YMETRIKA_ACCOUNT=XXX
POCKETBASE_URL=http://127.0.0.1:8090
+1
View File
@@ -0,0 +1 @@
POCKETBASE_URL=http://127.0.0.1:8090
+59
View File
@@ -0,0 +1,59 @@
FROM node:24.12.0-alpine AS base
# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
# Copy workspace manifests (root + every workspace) to leverage npm ci caching.
COPY package.json package-lock.json ./
COPY apps/hudozka/package.json ./apps/hudozka/
COPY apps/hudozka-writer/package.json ./apps/hudozka-writer/
COPY apps/migrate-to-pocketbase/package.json ./apps/migrate-to-pocketbase/
COPY packages/ ./packages/
RUN npm ci
RUN npm install --os=linux --libc=musl --cpu=x64 sharp --workspace apps/hudozka
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build -w apps/hudozka
# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder --chown=nextjs:nodejs /app/apps/hudozka/public ./apps/hudozka/public
# Set the correct permission for prerender cache
RUN mkdir -p apps/hudozka/.next
RUN chown nextjs:nodejs apps/hudozka/.next
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/apps/hudozka/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/apps/hudozka/.next/static ./apps/hudozka/.next/static
USER nextjs
EXPOSE 3000
ENV PORT=3000
# server.js is created by next build from the standalone output
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
ENV HOSTNAME="0.0.0.0"
WORKDIR /app/apps/hudozka
CMD ["node", "server.js"]
+6
View File
@@ -0,0 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/dev/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
+18
View File
@@ -0,0 +1,18 @@
import type { NextConfig } from "next"
import path from "node:path"
const config: NextConfig = {
output: "standalone",
outputFileTracingRoot: path.join(process.cwd(), "../../"),
trailingSlash: false,
images: {
unoptimized: true,
remotePatterns: [
{ hostname: "hudozka.shlisselburg.org" },
{ hostname: "images.weserv.nl" },
{ hostname: "127.0.0.1" },
],
},
}
export default config
+43
View File
@@ -0,0 +1,43 @@
{
"name": "hudozka",
"private": true,
"version": "7.0.0",
"type": "module",
"description": "",
"scripts": {
"start": "next start",
"dev": "next dev --turbo",
"build": "next build",
"lint": "biome check",
"format": "biome check --write",
"test": "vitest run"
},
"repository": {
"type": "git",
"url": "https://github.com/tmshv/hudozka"
},
"author": "Roman Timashev",
"license": "ISC",
"dependencies": {
"@hudozka/hooks": "*",
"@hudozka/text": "*",
"@hudozka/ui": "*",
"@hudozka/utils": "*",
"@radix-ui/react-navigation-menu": "^1.2.0",
"@radix-ui/react-tooltip": "^1.2.0",
"classnames": "^2.5.0",
"dangerously-set-html-content": "^1.1.0",
"next": "^16.3.0",
"pocketbase": "^0.26.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-icons": "^5.5.0",
"sharp": "^0.34.0",
"valtio": "^2.3.0"
},
"overrides": {
"dangerously-set-html-content": {
"react": "$react"
}
}
}
File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

+1
View File
@@ -0,0 +1 @@
.likely,.likely__widget{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:0;text-indent:0!important;list-style:none!important;font-weight:400;font-family:Helvetica Neue,Arial,sans-serif}.likely{display:inline-block}.likely__widget{margin:0;font-size:inherit}.likely{opacity:0;font-size:0!important}.likely_visible{opacity:1;transition:opacity .1s ease-in}.likely>*{display:inline-block;visibility:hidden}.likely_visible>*{visibility:inherit}.likely__widget{position:relative;white-space:nowrap}.likely__button,.likely__widget{display:inline-block}.likely__button,.likely__counter{text-decoration:none;text-rendering:optimizeLegibility;margin:0;outline:0}.likely__button{position:relative;user-select:none}.likely__counter{display:none;position:relative;font-weight:400}.likely_ready .likely__counter{display:inline-block}.likely_ready .likely__counter_empty{display:none}.likely__button,.likely__counter,.likely__icon,.likely__widget{vertical-align:top}.likely__widget{transition:background .33s ease-out,color .33s ease-out,fill .33s ease-out}.likely__widget:active,.likely__widget:focus,.likely__widget:hover{transition:none;cursor:pointer}@media (hover:none){.likely__widget:active,.likely__widget:focus,.likely__widget:hover{transition:background .33s ease-out,color .33s ease-out,fill .33s ease-out;cursor:unset}}.likely__icon{position:relative;text-align:left;display:inline-block}.likely svg{position:absolute;left:3px;top:3px;width:16px;height:16px}.likely__button,.likely__counter{line-height:inherit;cursor:inherit}.likely__button:empty{display:none}.likely__counter{text-align:center}.likely .likely__widget{color:#000;background:rgba(231,231,231,.8)}.likely .likely__counter{background-size:1px 1px;background-repeat:repeat-y;background-image:linear-gradient(to right,rgba(0,0,0,.2) 0,rgba(0,0,0,0) .5px,rgba(0,0,0,0) 100%)}.likely-light .likely__widget{color:#fff;fill:#fff;background:rgba(236,236,236,.16);text-shadow:rgba(0,0,0,.2) 0 0 .33em}.likely-light .likely__counter{background-image:linear-gradient(to right,rgba(255,255,255,.4) 0,rgba(255,255,255,0) .5px,rgba(255,255,255,0) 100%)}.likely__widget_facebook{fill:#425497}.likely__widget_facebook:active,.likely__widget_facebook:focus,.likely__widget_facebook:hover{background:rgba(207,212,229,.8)}@media (hover:none){.likely__widget_facebook:active,.likely__widget_facebook:focus,.likely__widget_facebook:hover{background:rgba(231,231,231,.8)}}.likely-light .likely__widget_facebook:active,.likely-light .likely__widget_facebook:focus,.likely-light .likely__widget_facebook:hover{text-shadow:#425497 0 0 .25em;background:rgba(66,84,151,.7)}@media (hover:none){.likely-light .likely__widget_facebook:active,.likely-light .likely__widget_facebook:focus,.likely-light .likely__widget_facebook:hover{text-shadow:rgba(0,0,0,.2) 0 0 .33em;background:rgba(236,236,236,.16)}}.likely__widget_twitter{fill:#00b7ec}.likely__widget_twitter:active,.likely__widget_twitter:focus,.likely__widget_twitter:hover{background:rgba(191,237,250,.8)}@media (hover:none){.likely__widget_twitter:active,.likely__widget_twitter:focus,.likely__widget_twitter:hover{background:rgba(231,231,231,.8)}}.likely-light .likely__widget_twitter:active,.likely-light .likely__widget_twitter:focus,.likely-light .likely__widget_twitter:hover{text-shadow:#00b7ec 0 0 .25em;background:rgba(0,183,236,.7)}@media (hover:none){.likely-light .likely__widget_twitter:active,.likely-light .likely__widget_twitter:focus,.likely-light .likely__widget_twitter:hover{text-shadow:rgba(0,0,0,.2) 0 0 .33em;background:rgba(236,236,236,.16)}}.likely__widget_gplus{fill:#dd4241}.likely__widget_gplus:active,.likely__widget_gplus:focus,.likely__widget_gplus:hover{background:rgba(246,207,207,.8)}@media (hover:none){.likely__widget_gplus:active,.likely__widget_gplus:focus,.likely__widget_gplus:hover{background:rgba(231,231,231,.8)}}.likely-light .likely__widget_gplus:active,.likely-light .likely__widget_gplus:focus,.likely-light .likely__widget_gplus:hover{text-shadow:#dd4241 0 0 .25em;background:rgba(221,66,65,.7)}@media (hover:none){.likely-light .likely__widget_gplus:active,.likely-light .likely__widget_gplus:focus,.likely-light .likely__widget_gplus:hover{text-shadow:rgba(0,0,0,.2) 0 0 .33em;background:rgba(236,236,236,.16)}}.likely__widget_vkontakte{fill:#526e8f}.likely__widget_vkontakte:active,.likely__widget_vkontakte:focus,.likely__widget_vkontakte:hover{background:rgba(211,218,227,.8)}@media (hover:none){.likely__widget_vkontakte:active,.likely__widget_vkontakte:focus,.likely__widget_vkontakte:hover{background:rgba(231,231,231,.8)}}.likely-light .likely__widget_vkontakte:active,.likely-light .likely__widget_vkontakte:focus,.likely-light .likely__widget_vkontakte:hover{text-shadow:#526e8f 0 0 .25em;background:rgba(82,110,143,.7)}@media (hover:none){.likely-light .likely__widget_vkontakte:active,.likely-light .likely__widget_vkontakte:focus,.likely-light .likely__widget_vkontakte:hover{text-shadow:rgba(0,0,0,.2) 0 0 .33em;backLine truncated
+8
View File
@@ -0,0 +1,8 @@
/*!
* Likely 2.2.1 by Ilya Birman (ilyabirman.net)
* Rewritten sans jQuery by Evgeny Steblinsky (volter9.github.io)
* Supported by Ivan Akulov (iamakulov.com), Viktor Karpov (vitkarpov.com), and contributors
* Inspired by Social Likes by Artem Sapegin (sapegin.me)
*/
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.likely=n():t.likely=n()}(this,function(){return function(t){function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=20)}([function(t,n,e){"use strict";e.d(n,"c",function(){return o}),e.d(n,"i",function(){return c}),e.d(n,"d",function(){return u}),e.d(n,"e",function(){return a}),e.d(n,"f",function(){return s}),e.d(n,"k",function(){return l}),e.d(n,"g",function(){return h}),e.d(n,"a",function(){return p}),e.d(n,"h",function(){return f}),e.d(n,"b",function(){return v}),e.d(n,"j",function(){return d});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r={yes:!0,no:!1},o=function(t,n){for(var e in t)t.hasOwnProperty(e)&&n(t[e],e)},c=function(t){return Array.prototype.slice.call(t)},u=function(){for(var t={},n=Array.prototype.slice.call(arguments),e=0;e<n.length;e++){var i=n[e];if(i)for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r])}return t},a=function(t,n){for(var e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t},s=function(t){if("object"===i(t.dataset))return t.dataset;var n=void 0,e={},r=t.attributes,o=void 0,c=void 0,u=function(t){return t.charAt(1).toUpperCase()};for(n=r.length-1;n>=0;n--)o=r[n],o&&o.name&&/^data-\w[\w\-]*$/.test(o.name)&&(c=o.name.substr(5).replace(/-./g,u),e[c]=o.value);return e},l=function(t){var n={},e=s(t);for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];n[i]=r[o]||o}return n},h=function(t,n){return t?t.replace(/\{([^\}]+)\}/g,function(t,e){return e in n?n[e]:t}):""},p=function(t,n){for(var e in n)n.hasOwnProperty(e)&&(n[e]=encodeURIComponent(n[e]));return h(t,n)},f=function t(n){var e=encodeURIComponent,t=[];for(var r in n)"object"!==i(n[r])&&t.push(e(r)+"="+e(n[r]));return t.join("&")},v=function(t,n,e){var i=n.split("."),r=null;i.forEach(function(n,e){"undefined"==typeof t[n]&&(t[n]={}),e!==i.length-1&&(t=t[n]),r=n}),t[r]=e},d=function(){var t=document.querySelector('link[rel="canonical"]');return t?t.href:window.location.href.replace(window.location.hash,"")}},function(t,n,e){"use strict";e.d(n,"d",function(){return o}),e.d(n,"f",function(){return c}),e.d(n,"b",function(){return u}),e.d(n,"a",function(){return a}),e.d(n,"e",function(){return s}),e.d(n,"c",function(){return l}),e.d(n,"g",function(){return h});var i=document.createElement("div"),r=0,o=function(t){return'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M'+t+'z"/></svg>'},c=function(t){return i.innerHTML=t,i.children[0]},u=function(t){var n=document.createElement("script"),e=document.head;n.type="text/javascript",n.src=t,e.appendChild(n),e.removeChild(n)},a=function(t,n){var e=encodeURIComponent("random_fun_"+ ++r),i=t.replace(/callback=(\?)/,"callback="+e);window[e]=n,u(i)},s=function(t,n){return(n||document).querySelector(t)},l=function(t,n){return Array.prototype.slice.call((n||document).querySelectorAll(t))},h=function(t,n,e,i){var r=Math.round(screen.width/2-e/2),o=0;screen.height>i&&(o=Math.round(screen.height/3-i/2));var c="left="+r+",top="+o+",width="+e+",height="+i+",personalbar=0,toolbar=0,scrollbars=1,resizable=1",u=window.open(t,n,c);return u?(u.focus(),u):(location.href=t,null)}},function(t,n,e){"use strict";n.a={name:"likely",prefix:"likely__"}},function(t,n,e){"use strict";var i=e(9),r=e(0),o=e(18),c=e(10),u=e(11),a=e(12),s=e(13),l=e(14),h=e(15),p=e(16),f=e(17),v={facebook:c.a,gplus:u.a,linkedin:a.a,odnoklassniki:s.a,pinterest:l.a,telegram:h.a,twitter:p.a,vkontakte:f.a};e.i(r.c)(v,function(t,n){e.i(i.a)(t),t.svgi=o.a[n],t.name=n}),n.a=v},function(t,n,e){"use strict";function i(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var r=e(0),o=e(19),c=e(2),u=e(1),a=e(8),s=function(){function t(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(n,e,i){return e&&t(n.prototype,e),i&&t(n,i),n}}(),l=function(t,n){var i=n||{},u={counters:!0,timeout:1e3,zeroes:!1,title:document.title,wait:500,url:e.i(r.j)()},a=t[c.a.name],s=e.i(r.d)({},u,i,e.i(r.k)(t));return a?a.update(s):t[c.a.name]=new o.a(t,s),a},h=function(){function t(){return i(this,t),console.warn("likely function is DEPRECATED and will be removed in 3.0. Use likely.initiate instead."),t.initiate.apply(t,arguments)}return s(t,null,[{keyLine truncated
//# sourceMappingURL=likely.js.map
@@ -0,0 +1,713 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg>
<metadata>
Created by FontForge 20090622 at Wed May 4 16:42:32 2016
By deploy user
</metadata>
<defs>
<font id="Shadow-Regular" horiz-adv-x="729" >
<font-face
font-family="Shadow"
font-weight="400"
font-stretch="normal"
units-per-em="1000"
panose-1="0 0 0 0 0 0 0 0 0 0"
ascent="750"
descent="-250"
x-height="635"
cap-height="638.5"
bbox="-64.1538 -251 1003 860"
underline-thickness="50"
underline-position="-50"
unicode-range="U+000D-U+20B4"
/>
<missing-glyph horiz-adv-x="500"
/>
<glyph glyph-name=".notdef" horiz-adv-x="500"
/>
<glyph glyph-name="NULL" horiz-adv-x="0"
/>
<glyph glyph-name="NULL" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" unicode="&#xd;" horiz-adv-x="500"
/>
<glyph glyph-name="space" unicode=" " horiz-adv-x="323"
/>
<glyph glyph-name="uni0418" unicode="&#x418;" horiz-adv-x="750"
d="M7 616q0 18 4.5 21.5t23.5 1.5q20 -2 40.5 -1.5t40.5 -0.5q12 0 24.5 1t25.5 -1q15 -2 20.5 -8.5t5.5 -22.5q1 -5 0.5 -9.5t-0.5 -9.5v-264v-13.5t1 -13.5q0 -7 5 -9q6 0 9 5q4 3 7 7t5 8q51 71 100.5 148.5t99.5 147.5q12 20 28 28.5t43 7.5q26 -3 53.5 -2t53.5 0
q24 -2 31 -9t6 -31q-2 -102 -1.5 -209.5t-1.5 -209.5q-1 -39 0 -73.5t2 -73.5q0 -7 0.5 -12t-0.5 -12q-1 -9 -6 -14.5t-15 -3.5q-32 1 -65 2.5t-66 0.5q-7 0 -14 0.5t-13 3.5q-4 2 -7.5 7t-3.5 10q2 37 0 80t0 80q1 37 1 73.5t1 73.5q0 2 -1 6t-5 4q-3 0 -4.5 -2t-3.5 -4
q-48 -59 -96 -127.5t-88 -134.5l-15.5 -24l-15.5 -24q-9 -15 -22 -19t-29 -6q-12 -1 -23.5 -0.5t-23.5 0.5q-20 1 -40.5 -0.5t-40.5 0.5q-23 2 -27.5 8t-3.5 30q2 37 2.5 73.5t0.5 73.5q0 38 -1 75.5l-2 75.5l0.5 15t0.5 39v55v63.5v63.5v55z" />
<glyph glyph-name="uni0413" unicode="&#x413;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q21 0 54.5 0.5t73 0.5h81h77.5t63.5 -0.5t38.5 -0.5q18 0 22 -4t6 -22q3 -31 2 -58.5t2 -58.5q2 -16 -2 -21.5t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17
q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni041F" unicode="&#x41f;" horiz-adv-x="688"
d="M561 353q-2 -58 -3 -115l-2 -114q-1 -26 0.5 -47.5t2.5 -47.5q0 -15 -3.5 -19.5t-17.5 -5.5l-65.5 -4t-65.5 -3q-19 -1 -19 23q0 38 0.5 70.5t0.5 70.5q0 63 0.5 124.5t-0.5 123.5q0 27 -1 39t-6 16.5t-17 4t-34 0.5q-29 1 -58 1.5t-58 -0.5q-19 0 -23.5 -4.5t-4.5 -21.5
v-175q1 -58 1.5 -116t1.5 -116q0 -5 -1 -8q-1 -13 -2 -20t-5 -10t-11 -3.5t-20 -0.5q-28 1 -56 1.5t-56 3.5q-22 2 -27 8.5t-5 28.5v450v133q0 14 3 16t18 1q48 -2 94.5 -1.5t94.5 0.5q66 -1 129 2t127 0q16 0 31 -0.5t31 -0.5q15 0 18.5 -3t3.5 -18v-93q0 -21 0.5 -50
l1 -56t1.5 -45.5z" />
<glyph glyph-name="uni0422" unicode="&#x422;" horiz-adv-x="614"
d="M468 637q7 -1 13.5 -1t13.5 -2q20 -3 25 -8t5 -26q0 -26 -0.5 -47t-1.5 -47q-1 -17 -5 -21t-20 -3q-12 0 -30.5 -0.5t-36.5 -0.5t-32.5 -0.5t-17.5 -0.5q-15 0 -23.5 -1t-12 -5t-4 -12t0.5 -23v-32.5t-1 -75.5t-1.5 -97.5t-1.5 -97.5t-1.5 -75t-0.5 -31q-3 -30 -32 -31
h-21.5h-26t-22.5 0.5t-12 0.5q-16 0 -25 0.5t-13 4.5t-5 12.5t-1 24.5v33t0.5 60t1 77l1 83t0.5 77.5v61.5v27q1 17 -19 19q-13 0 -34 1t-41.5 1.5t-37 1.5t-19.5 1q-15 1 -20 6t-5 20v39t1 39v12q0 9 -1 19t4 16q3 5 13.5 3.5t19.5 -1.5q13 0 46.5 0.5t76.5 0.5t91 -0.5
t91 -0.5t76 -0.5t45 -0.5z" />
<glyph glyph-name="uni0428" unicode="&#x428;" horiz-adv-x="969"
d="M255 -2q-51 1 -101 1.5t-101 1.5q-10 0 -15 1q-17 2 -22.5 8.5t-5.5 23.5q-2 69 -1 136t0 136q-1 55 -0.5 110t0.5 111q1 23 0 37t-2 37q0 7 1 13t2 13q5 15 20 14q10 -1 26 -1.5t32.5 -0.5t30 0.5t16.5 0.5q13 1 21 0t12.5 -4.5t6.5 -11t3 -20.5q5 -62 4 -118t1 -119
q1 -42 -1 -86t0 -86q1 -14 4.5 -17.5t18.5 -4.5q25 -2 54 -0.5t53 0.5t29 3.5t4 27.5q0 38 -1 75.5t-1 75.5q0 54 0.5 106.5t0.5 106.5q0 16 1 26.5t-1 26.5q-2 20 16 20q34 -2 65.5 0t65.5 -1q14 -2 18 -7t4 -22q1 -87 1 -172.5v-172.5q0 -19 0.5 -37.5t1.5 -36.5
q1 -14 5.5 -18t18.5 -4q27 -1 54 -0.5t55 0.5q17 0 17 16v55q-1 41 -0.5 81t-1.5 82q-2 50 -2.5 98.5t-2.5 98.5q0 4 -0.5 7.5t-0.5 8.5q0 11 4.5 15.5t16.5 4.5h60t61 -1q11 -1 17 -6t7 -22q3 -97 4.5 -193.5t-3.5 -194.5q-2 -45 -0.5 -87.5t1.5 -87.5q0 -31 -8.5 -39
t-38.5 -8q-17 0 -59.5 -0.5t-97 -0.5h-115.5h-113.5t-90.5 0.5t-48 0.5z" />
<glyph glyph-name="uni0420" unicode="&#x420;" horiz-adv-x="614"
d="M6 483q1 36 1.5 63.5t1.5 62.5q0 10 0.5 16t3.5 9t8.5 4t15.5 2q8 1 15.5 0.5t15.5 -0.5q11 0 23 0.5t23 0.5q7 0 23 0.5t34 2t34.5 2t23.5 0.5q20 -2 39 -3.5t38 -3.5q45 -5 81.5 -25t70.5 -47q5 -4 8.5 -8t8.5 -9q24 -22 35.5 -43.5t13.5 -44.5t-3 -48t-14 -55
q-21 -67 -60 -104t-102 -56q-35 -11 -70.5 -13t-72.5 0q-23 2 -28 -2.5t-6 -27.5q-1 -34 -0.5 -68t0.5 -68q0 -20 -5 -25t-26 -4l-55.5 2l-56.5 2q-19 1 -20 23q-1 27 -1 54v54v202v17v41t0.5 50.5t1.5 46.5zM230 495q-8 0 -17 -0.5t-17 -0.5q-9 -1 -14.5 -4.5t-6.5 -13.5
q0 -29 -0.5 -60t-1.5 -60q0 -15 16 -17q36 -4 70 0.5t66 21.5q18 10 28 26q8 12 10 28.5t-3 31.5t-16 26.5t-29 14.5q-11 2 -25 3.5t-27.5 2.5t-23 1h-9.5z" />
<glyph glyph-name="uni041C" unicode="&#x41c;" horiz-adv-x="979"
d="M5 622q0 12 3.5 16t16.5 5q15 1 40.5 1t51 -1t45 -1t24.5 1q18 4 25 -12q28 -58 52.5 -103l47 -84.5l44.5 -77.5l45 -81q8 -15 17 -26q7 -11 15 0l102 165l23.5 40l31.5 56l29 53.5l17 32.5q16 36 55 33q30 -2 60 -2.5t60 -1.5q10 0 19 -3q8 -2 13 -6.5t5 -14.5
q0 -41 1 -81.5l2 -81.5q2 -66 2.5 -132t2.5 -132l2 -81l2 -82q1 -18 -7 -25t-25 -6l-105 3q-12 0 -19 1t-10 4t-3.5 9t-0.5 18q0 68 -0.5 131.5t-0.5 132.5v9.5t-1 9.5t-1.5 11t-4.5 6q-3 1 -9.5 -7.5t-8.5 -10.5l-85.5 -128.5t-78.5 -131.5q-2 -3 -3.5 -6.5t-3.5 -6.5
q-10 -16 -15 -25t-11 -12.5t-16 -4t-30 -0.5q-30 1 -59 0q-26 -3 -34 23l-5.5 15t-5.5 14q-11 25 -22 46t-22 46l-16.5 35.5l-16.5 35.5q-6 13 -11.5 26.5t-12.5 26.5q-5 11 -13.5 26t-12.5 15q-1 0 -1.5 -14.5t-0.5 -38v-53.5t0.5 -60l1 -57.5t0.5 -47.5v-11t-1 -12
q-3 -21 -24 -19q-32 1 -63.5 0t-63.5 1q-18 1 -22.5 5.5t-5.5 21.5q-1 29 -1 53t-1 53q-1 39 -1.5 77.5t-0.5 77.5q0 13 0.5 25.5t0.5 24.5v15v39.5v56v64.5t-0.5 64t-0.5 56z" />
<glyph glyph-name="uni041E" unicode="&#x41e;"
d="M654 323q-2 -46 -20 -97.5t-51 -101.5q-35 -51 -83 -82t-103 -52q-16 -6 -34.5 -10t-37.5 -5.5t-37.5 -0.5t-34.5 5q-18 4 -46 15.5t-60 29t-64 41.5t-58 54q-23 27 -34.5 59.5t-13.5 68.5q-3 54 4.5 106t30.5 102q12 26 32 54.5t51 54.5t74 48t102 36q29 6 65.5 5
t74.5 -11q28 -7 56.5 -22t53.5 -33t44 -36.5t30 -32.5q31 -40 44.5 -86t14.5 -109zM302 154q27 -1 48.5 2.5t41.5 14.5q51 32 73 79t11 106q-5 29 -20.5 53t-38.5 41t-50.5 25t-56.5 4t-55.5 -12.5t-45.5 -31.5q-37 -42 -51 -91.5t1 -106.5q3 -10 10.5 -20t15.5 -17
q27 -22 56.5 -35t60.5 -11z" />
<glyph glyph-name="uni0429" unicode="&#x429;" horiz-adv-x="1083"
d="M340 617q0 15 3 19.5t18 4.5q30 1 60 0.5t60 -1.5q17 0 17 -20q0 -44 0.5 -84t-0.5 -84q0 -66 -0.5 -132t-0.5 -132q-1 -17 2.5 -21t20.5 -5q29 -1 58.5 -1h58.5q13 0 20 1t10.5 4.5t4 10.5t0.5 19q0 42 -0.5 83.5t-0.5 83.5q-1 61 -1 122v122q0 11 0.5 17.5t3.5 10
t9 4.5t17 1q30 1 60 -0.5t60 -3.5q12 0 14 -15q2 -20 3.5 -40.5t1.5 -40.5q1 -80 0 -159t2 -159l1.5 -41t5.5 -17.5t17 -4t36 -0.5l36.5 -2t36.5 -3q19 -2 20 -19q0 -7 1.5 -13.5t2.5 -13.5q2 -47 2.5 -93t2.5 -93q0 -6 -1 -11.5l-2 -11.5q-3 -18 -21 -18q-27 1 -54 1t-54 1
q-19 0 -24 5t-7 23q-5 33 -6 66q-1 11 -5.5 16t-15.5 5q-20 0 -39 0.5t-39 0.5q-105 1 -209 1.5t-210 1.5q-67 0 -133.5 0.5t-133.5 0.5h-12t-11 2q-11 2 -17 9t-3 18q-2 21 -2 39v34.5t0.5 32.5t0.5 33q-2 52 0 103t-1 103q-4 60 -3.5 113.5t1.5 113.5v16q1 17 4.5 21
t20.5 3q17 0 34.5 -1t34.5 -1q15 -1 29.5 -1.5t28.5 0.5q19 0 19 -18q-1 -23 -1.5 -40t-0.5 -40q1 -69 1.5 -138t0.5 -138q1 -17 0.5 -33t-0.5 -33q0 -21 3 -25.5t23 -5.5l52.5 -4t52.5 -2q15 0 22.5 1t10.5 4.5t3.5 11t0.5 20.5q-1 52 -1 104t-1 105l0.5 22.5t0.5 54.5
v67.5v62.5z" />
<glyph glyph-name="uni0427" unicode="&#x427;" horiz-adv-x="656"
d="M550 471q-1 -107 -0.5 -213t-0.5 -213q0 -11 -0.5 -16.5l-1.5 -16.5q-2 -14 -6.5 -18t-18.5 -3q-30 2 -60 0t-60 2q-26 3 -26 36v117q0 14 -1 28.5l-2 29.5q-1 17 -17 9q-5 -2 -10.5 -5.5t-10.5 -5.5l-41.5 -16t-41.5 -14q-52 -14 -96.5 0t-85.5 44q-24 18 -39.5 42.5
t-17.5 55.5l-4 67.5t-3 68.5v43t0.5 39l1 39t0.5 43q0 22 20 22q5 0 21.5 0.5t36.5 0.5h39h30q12 -1 19 -2t10 -4t3.5 -9.5t0.5 -17.5q-1 -42 -2.5 -74.5t-2.5 -73.5q0 -17 1 -33t5 -33q5 -24 21 -38.5t45 -14.5q50 -1 90 29q14 11 21.5 23.5t7.5 32.5q-2 48 -1 93t1 93v8
q1 17 5.5 22t21.5 5h19h33.5h36h28.5q20 1 25 -5t7 -26q1 -17 1 -41.5v-46.5t-0.5 -37.5z" />
<glyph glyph-name="uni0426" unicode="&#x426;"
d="M6 611q-1 16 2.5 20t20.5 7q4 0 19.5 0.5t35.5 0.5t40 -0.5t32 -0.5q11 0 14.5 -4.5t3.5 -14.5q1 -28 1.5 -68t0.5 -85t-0.5 -90.5t-0.5 -84.5t-0.5 -67.5t0.5 -38.5q0 -22 24 -22h73.5t73.5 -1q20 0 18 20q-1 16 -1 47.5v72t-0.5 85.5t-0.5 87t-1 77.5t-2 56.5v10t1 10
q3 15 19 15q30 -2 60 -2.5t60 -2.5q16 -2 19.5 -5.5t4.5 -20.5q1 -24 2 -58t1.5 -73t0.5 -78.5t0.5 -73.5t0.5 -59v-34q1 -11 1 -21.5t1 -21.5q1 -17 2 -25.5t5.5 -13t13 -5.5t25.5 -1q3 0 6 0.5t5 -0.5q18 -1 27 -2t12 -5t3 -12t1 -21q4 -43 5 -83t0 -87q0 -15 -6 -23.5
t-21 -9.5q-26 0 -49 0.5t-49 -0.5q-22 0 -25 20q-2 14 -1 28.5t-1 28.5q-2 17 -17 18q-9 1 -19 1.5t-19 -1.5q-17 0 -46 -0.5t-63.5 -0.5t-71 -1t-69 -1t-58 -0.5t-37.5 -0.5h-31q-10 1 -21 0.5t-18 4.5q-5 4 -4.5 15t-0.5 21q-3 97 1 192t0 192l-2 68q-1 29 -1 61.5v60.5z
" />
<glyph glyph-name="uni042C" unicode="&#x42c;" horiz-adv-x="594"
d="M146 -2q-30 1 -52.5 1.5t-42.5 1.5q-16 0 -31 3q-7 2 -11.5 6.5t-2.5 12.5q0 48 -0.5 98t0.5 99v61.5v77v81.5v76v60v34q0 5 -0.5 9.5t0.5 9.5q3 20 24 20q30 -2 60 -3t60 -3q14 -1 22 -2t11.5 -5t4.5 -12t1 -22q1 -34 0.5 -59.5t1.5 -59.5q0 -18 3 -22t20 -5
q22 -2 49 -1.5t49 -1.5q84 -6 142 -64q48 -49 54 -122q5 -83 -38 -156q-22 -36 -53 -60.5t-73 -35.5q-52 -14 -103 -18t-95 1zM191 251q2 -10 2 -29q0 -9 0.5 -18.5t0.5 -19.5q1 -26 6.5 -32t31.5 -4q15 1 30 6q14 4 28 10t25.5 16t18.5 23.5t7 33.5q0 19 -8 31t-21.5 19.5
t-30 10.5t-34.5 5q-1 1 -4 1q-19 2 -29.5 2t-15.5 -5t-6 -16.5t-1 -33.5z" />
<glyph glyph-name="uni042A" unicode="&#x42a;" horiz-adv-x="666"
d="M76 324q-1 39 0.5 77.5t-0.5 77.5q-2 18 -6 21.5t-23 4.5q-23 1 -37.5 0t-23 3t-11 16t-1.5 39q1 14 0 27t-1 27q1 14 5 18.5t18 5.5h37.5t63.5 -0.5l69 -1t54 -1.5q3 1 9.5 1t12.5 -2.5t10.5 -8.5t4.5 -16v-28v-39v-42v-38q0 -22 20 -22q37 0 73 -3q51 -5 94 -24.5
t76 -58.5q32 -38 41 -81t-2 -91q-14 -60 -50.5 -100t-94.5 -63q-41 -16 -81.5 -19t-82.5 -5q-37 -2 -74 0l-74 4q-18 1 -21 4t-3 20q-1 48 -1.5 95t-1.5 95v12v28.5t0.5 35t0.5 32.5zM302 136q7 1 16.5 1.5t19.5 2.5q8 2 16.5 6t13.5 10q19 20 25.5 43t-2.5 50
q-15 49 -65 58q-21 4 -42 6q-17 2 -21.5 -2t-4.5 -22q-2 -66 0 -132q0 -14 3.5 -17t19.5 -4h21z" />
<glyph glyph-name="uni042B" unicode="&#x42b;" horiz-adv-x="823"
d="M7 283q1 36 1.5 89l1 104t0.5 90v48q-1 18 3 22t23 5h23t40 -0.5l43 -1t32 -0.5q16 -1 19 -3t5 -18q2 -34 0.5 -67.5t0.5 -67.5q0 -13 1 -20.5t4 -11t10 -5t21 -3.5q10 -1 19.5 -1t19.5 -2q60 -10 105 -41t72 -88q18 -38 23 -77t-7 -81q-11 -40 -36 -74.5t-66 -50.5
q-42 -17 -81.5 -20.5l-83.5 -7.5q-5 0 -24 -0.5t-44 -0.5t-50 -0.5t-40 -1.5q-23 -1 -28.5 4.5t-5.5 28.5q0 66 -0.5 130.5t-0.5 122.5zM194 167q0 -8 3 -13.5t11 -5.5q10 0 24.5 0.5t28.5 3.5t26.5 7.5t20.5 12.5t12.5 20t6 25t-0.5 26t-7 23t-18.5 18.5t-29.5 14t-33 8
t-29 1.5q-14 -2 -15 -14v-127zM543 615q0 14 3.5 19.5t17.5 4.5h62t62 -2q17 -1 20.5 -5.5t3.5 -22.5q2 -42 2.5 -79t0.5 -79v-194t-2 -194q0 -30 0.5 -43.5t-5 -18t-20 -3.5t-44.5 1q-19 -1 -37 0t-37 1q-18 0 -24 5t-6 24v150.5t-1 151.5l1 30.5t1.5 74.5t1 93t0.5 86z
" />
<glyph glyph-name="uni0411" unicode="&#x411;" horiz-adv-x="677"
d="M156 -12q-31 1 -61.5 1t-62.5 2q-17 1 -22 6t-5 22q1 34 1.5 67.5t1.5 68.5v135v246q0 44 -3 89q0 11 4 14.5t14 3.5h38.5h60.5t71.5 -0.5t73 -0.5h65.5t47 1q11 1 21.5 1.5t21.5 -0.5q18 -1 25 -8t6 -26q-1 -25 -3 -47.5t-4 -47.5q-1 -8 -2 -13t-3.5 -7t-7.5 -2.5
t-14 -0.5q-35 -1 -69.5 -0.5t-69.5 -0.5q-22 0 -45 -0.5t-44 -0.5q-16 0 -18 -16q-2 -17 -0.5 -33t0.5 -34q0 -9 5 -12t13 -3q28 -3 55.5 -2.5t56.5 0.5q29 -1 57 -7.5t56 -15.5q35 -12 60.5 -35t42.5 -55q14 -26 13 -51t-7 -62q-9 -56 -38 -90.5t-66.5 -53.5t-77.5 -25
t-73 -6h-21.5h-39h-37t-16.5 -1zM233 256q-8 2 -17 1t-19 0q-20 2 -21 -17q0 -23 -0.5 -44.5t-0.5 -44.5q0 -17 18 -20q57 -12 110 11q14 6 22.5 17t11.5 24t-0.5 25.5t-14.5 22.5q-10 8 -22.5 12.5t-25.5 7.5q-9 3 -19.5 4t-21.5 1z" />
<glyph glyph-name="uni041A" unicode="&#x41a;" horiz-adv-x="677"
d="M7 611q0 15 4 19.5t18 3.5q24 0 45 -1t46 -2q5 -1 11 -1h12q20 0 24 -3.5t5 -23.5q2 -32 2.5 -64t1.5 -64q1 -6 0 -11.5t0 -11.5l2 -10.5t3 -10.5q5 2 9 4.5t7 5.5l89 86.5l88 87.5q11 10 22 16.5t25 5.5q38 -1 75.5 -1.5t75.5 -1.5q3 0 7 -3t5 -5q1 -3 -1 -7.5t-4 -6.5
l-76 -77.5l-76 -77.5q-14 -14 -28.5 -26.5t-28.5 -26.5q-14 -13 -14.5 -18t9.5 -21l41.5 -67.5l42.5 -67.5l61 -96.5l61 -96.5q8 -12 3.5 -22t-18.5 -12q-5 -1 -11 -1h-12q-21 -1 -42.5 -1t-42.5 -2q-23 -2 -39.5 6.5t-29.5 26.5q-14 20 -31 47t-31 47l-42 60.5l-42 60.5
q-8 12 -13.5 12.5t-16.5 -9.5q-20 -16 -19 -44q2 -45 2.5 -89t1.5 -89q1 -20 -3.5 -25.5t-23.5 -5.5q-30 0 -64.5 1t-64.5 3q-23 1 -24 25q-1 18 -1 63v103.5v124v124.5v105v65z" />
<glyph glyph-name="uni041B" unicode="&#x41b;" horiz-adv-x="751"
d="M635 356q0 -48 -0.5 -95t0.5 -95q1 -42 2 -76t3 -76q1 -17 -13 -17q-35 1 -70 1.5t-70 1.5q-10 0 -12 5t-2 13v54.5t-1 55.5l-3 213q-1 25 0 50t0 51q0 11 -1 17.5t-4.5 9.5t-10 4t-18.5 2h-8q-10 0 -15.5 -0.5t-9 -2.5t-6 -7.5t-5.5 -14.5l-23.5 -84t-25.5 -83
q-15 -45 -32 -89.5t-39 -86.5q-12 -23 -31.5 -42.5l-39.5 -38.5q-17 -17 -39 -23.5t-46 -7.5q-33 -2 -64 5t-61 18q-14 5 -17.5 11.5t-1.5 21.5q6 29 11.5 59t12.5 59q4 21 25 15l9 -3.5l9 -3.5q31 -11 59.5 -2.5t46.5 35.5q8 12 14.5 25t10.5 27l27 91.5t24 91.5
q11 42 19 85t17 85q3 17 7.5 21.5t21.5 6.5q4 0 8 0.5t7 -0.5q17 0 43 0.5t56.5 0.5h62.5h61h52h35q18 -1 21.5 -5t3.5 -23q0 -47 -0.5 -93t-1.5 -93v-21.5t0.5 -24t1 -20z" />
<glyph glyph-name="uni042F" unicode="&#x42f;" horiz-adv-x="687"
d="M571 34v-23q-2 -20 -21 -18h-127q-18 1 -24 7t-6 23v54.5t1 54.5q0 17 0.5 34.5t0.5 35.5q0 15 -3.5 18t-18.5 5q-30 6 -46 -20l-57.5 -85t-55.5 -86q-7 -12 -12.5 -19.5t-13 -12.5t-19.5 -7t-31 -2h-34t-38 1q-21 0 -44 1q-6 2 -10 5q-8 6 -1 16q14 20 30 39.5t31 40.5
l48 67.5l48 68.5q9 14 8.5 18.5t-14.5 10.5q-35 16 -55 43.5t-34 60.5q-14 35 -18.5 70.5t6.5 73.5q5 18 16 32.5t25 26.5q49 41 113 57q45 11 87 11.5t82 1.5q17 -1 42.5 -1t49 0.5t40.5 0.5h19q21 -3 28 -11t7 -29v-48v-87t0.5 -111t0.5 -119v-111.5v-87.5zM407 438
q-1 4 -1 12.5t-1 17.5q-2 15 -14 16q-15 1 -43.5 2.5t-56 -1t-48.5 -12t-22 -30.5q-1 -37 17 -53.5t41 -21.5t44.5 -3.5t29.5 0.5q22 -2 32.5 1t14.5 11t4.5 23t2.5 38z" />
<glyph glyph-name="uni0414" unicode="&#x414;" horiz-adv-x="791"
d="M570 179q1 -20 4.5 -24.5t23.5 -5.5q13 -1 25.5 -1t24.5 -1q15 0 21 -4t9 -18q1 -6 1 -12v-11q0 -33 0.5 -66t0.5 -66v-11.5t-1 -11.5q-3 -17 -22 -17q-21 0 -42.5 -0.5t-42.5 -0.5q-20 0 -17 20v3q0 17 -1 26t-5 13.5t-13 5.5t-25 1q-12 0 -42 0.5t-69 1t-82.5 1
t-82 0.5h-67.5t-39 -1q-4 -1 -8 -6t-5 -10q-2 -11 -1.5 -27t0.5 -27q0 -6 -2.5 -11t-10.5 -5q-26 -1 -55 -2t-55 0q-14 0 -18 5t-5 19q-2 44 -1 87t-1 87q-1 14 2.5 17.5t17.5 1.5q22 -3 36 16l27.5 35t24.5 37q22 39 39.5 79.5t27.5 84.5q2 9 8 31.5t12 49t10 51.5t4 40
q-1 20 1.5 36.5t3.5 36.5q1 19 20 18q49 0 97 0.5t96 -0.5q72 0 143 -3q17 -1 20.5 -5t3.5 -21q0 -19 0.5 -53.5t1.5 -77l2 -88.5t1.5 -88t1.5 -76.5t2 -52.5zM400 314v18t-1 44t-1.5 55t-1.5 51q0 5 -2 11t-4 6q-11 1 -22.5 1t-22.5 -2q-9 -2 -8.5 -9t-0.5 -14
q-2 -16 -3 -29t-3 -30q-8 -65 -27.5 -128t-51.5 -121q-1 -3 -2 -5.5t-2 -5.5q-3 -6 -0.5 -9.5t8.5 -3.5q31 0 67.5 1t67.5 2q17 0 17 17v17.5t-1 17.5q-2 29 -3 58t-3 58z" />
<glyph glyph-name="uni0416" unicode="&#x416;" horiz-adv-x="928"
d="M352 369q2 0 3 12.5t2 29.5t1 36t-1 33q-2 38 -4.5 69.5t-4.5 69.5q-1 17 2.5 21t20.5 5q32 1 64 0.5t64 -0.5q11 0 13.5 -5t2.5 -15q0 -61 1 -116t2 -116v-8t2 -7q1 -2 4.5 -3t3.5 0q5 5 9 10t7 11l57.5 108t57.5 109q7 15 16.5 23t27.5 6q25 -2 50 -1t50 1q9 0 17 -1
t13 -12q4 -10 1 -17t-8 -15l-74.5 -114.5l-74.5 -114.5q-9 -15 -9 -29t8 -29l24 -46l30 -57l31.5 -60.5l28.5 -56l22 -44t12 -23.5q9 -19 -11 -22q-17 -3 -34 -3q-23 2 -46.5 1t-46.5 1q-19 1 -27 18l-59 114.5l-60 114.5q-2 3 -3.5 6.5t-3.5 7.5q-3 3 -6 3q-4 0 -4 -5
q-1 -7 -1.5 -13.5t-0.5 -13.5q2 -57 3 -111l2 -112q1 -10 -5 -16.5t-15 -3.5q-32 -1 -62 0.5t-61 -0.5q-17 -2 -20.5 2.5t-4.5 21.5l-2 114.5l-2 115.5v9.5t-1 9.5q0 5 -5 5q-5 2 -7 -2l-5.5 -7.5t-5.5 -8.5l-48.5 -81l-49.5 -82l-28 -44l-28 -44q-5 -8 -9.5 -9t-22.5 0
q-3 2 -18 2.5t-34.5 0.5h-39h-30.5q-29 2 -12 25q8 13 17 24t17 24l27.5 41.5l31.5 48.5l32 49.5l29 44.5l21 32.5t9 13.5q14 20 2 40l-21.5 39l-21.5 39q-23 38 -45 69t-45 69q-11 18 -21 36.5t-21 36.5q-10 17 11 17q13 0 33.5 -0.5t39.5 -0.5t33.5 -0.5t16.5 -0.5
q10 2 22 1.5t18 -4.5q9 -6 14.5 -17l10.5 -21l30 -55.5l30 -52l30 -51.5l31 -55q2 -3 4 -9t7 -6z" />
<glyph glyph-name="uni0425" unicode="&#x425;" horiz-adv-x="771"
d="M649 -3q-47 -2 -90.5 -1t-89.5 -1q-11 0 -17 4t-11 12q-14 18 -27.5 39t-27.5 40l-22.5 30.5l-22.5 30.5q-14 19 -19 19t-18 -19l-31.5 -47l-31.5 -48l-8 -10.5t-7 -11.5q-26 -54 -88 -48q-32 -1 -54.5 0t-48.5 1q-10 0 -22 5q-12 3 -5 15l48.5 73l48.5 73l49 75l50 74
q8 11 7 19.5t-8 17.5l-44.5 62.5l-43.5 62.5l-49.5 74l-49.5 74q-2 5 -4 9t-4 9q-3 12 10 12q41 1 81.5 1.5t81.5 1.5q8 0 12 -3.5t8 -9.5l50 -69.5l50 -69.5q2 -3 5 -6t5 -6q11 -14 21 0q5 8 10.5 15.5l11.5 15.5l38 54t37 56q15 21 38 21q33 0 66 0.5t67 1.5q9 0 12 -5
t2 -13q-3 -12 -10 -24l-55.5 -85l-54.5 -84l-28 -45.5l-29 -44.5q-6 -9 -3.5 -14.5t7.5 -12.5l48.5 -60.5l48.5 -61.5l54 -73.5l53 -74.5q5 -7 9 -14t8 -15q6 -12 3 -16.5t-16 -4.5z" />
<glyph glyph-name="uni0424" unicode="&#x424;" horiz-adv-x="812"
d="M457 646q4 -3 5 -14t1.5 -24t0.5 -23.5t2 -12.5q2 -5 7.5 -6l10.5 -2q88 -8 144 -38t76 -71q19 -41 30 -84q16 -66 -4 -121.5t-61 -103.5q-29 -35 -70 -53.5t-87 -24.5q-17 -3 -25.5 -5t-13 -6.5t-5 -13.5t-0.5 -25v-16q0 -18 -19 -21q-33 -3 -65.5 -3.5t-65.5 6.5
q-20 3 -20 23q-1 14 -2.5 28.5t-2.5 28.5q-14 3 -28 5.5t-28 5.5q-20 5 -39.5 9t-39.5 10q-26 9 -50.5 23t-45 35t-34.5 49t-20 64q-10 57 4.5 107.5t45.5 97.5q17 25 40 42t51 28q29 12 60.5 19t63.5 8q10 0 16 1t8.5 4t3 9.5t0.5 17.5v15q-3 27 5.5 33.5t33.5 8.5
q6 1 23.5 0.5t37 -1.5t36 -3.5t20.5 -5.5zM298 337h1q0 17 0.5 33t0.5 33q-1 17 -4 22t-21 3q-9 0 -26.5 -8.5t-34.5 -23t-29.5 -33.5t-11.5 -41q1 -32 13.5 -53.5t28 -34.5t32 -18t27.5 -5q9 1 15.5 3t7.5 16q0 27 0.5 53.5t0.5 53.5zM462 225q0 -17 15 -14q24 5 45.5 14.5
t35.5 29.5q20 26 21.5 56t-9.5 61q-11 26 -32 35t-44 14q-2 0 -8 2q-14 2 -18 -0.5t-5 -16.5q0 -11 -0.5 -36t-0.5 -53.5v-54v-37.5z" />
<glyph glyph-name="uni0423" unicode="&#x423;"
d="M159 641q14 0 22 -1.5t11.5 -5t3.5 -11t-2 -19.5q-5 -29 -0.5 -56t12.5 -54q16 -53 53 -81t84 -45q13 -5 17.5 -2t11.5 18l24 59l23 60l21 56l21 56q5 18 21 18l70 2t70 0q23 0 30 -9t-1 -32q-21 -62 -45 -120q-35 -94 -79 -181.5t-94 -173.5q-16 -28 -38 -49t-49 -38
q-28 -17 -57.5 -30.5t-64.5 -16.5q-20 -1 -40 -0.5t-40 7.5q-28 9 -55.5 17t-52.5 25q-15 10 -16.5 14.5t5.5 22.5q10 28 18.5 55.5t19.5 54.5q8 22 18.5 24.5t30.5 -11.5q11 -8 22.5 -14.5t24.5 -11.5q38 -14 74 2t57 47q11 14 -7 20l-39 16l-39 16q-38 17 -68.5 42.5
t-56.5 54.5q-27 31 -40.5 68t-20.5 77q-5 29 -8 54.5t-6 55.5q-1 14 2 17.5t17 3.5h28.5h40.5t39.5 -0.5t26.5 -0.5z" />
<glyph glyph-name="uni0401" unicode="&#x401;" horiz-adv-x="593"
d="M475 634q19 0 21 -18q0 -4 0.5 -20t0.5 -34t-0.5 -33t-0.5 -16q-1 -14 -4.5 -18t-18.5 -4q-16 0 -52.5 -0.5t-78 -1t-78.5 -1.5t-54 -1q-15 0 -20.5 -5.5t-6.5 -19.5q-2 -20 -2 -32v-31q0 -20 23 -20q21 0 41.5 -1l41.5 -2q19 -2 15 -21q-2 -14 -1.5 -28.5t-1.5 -28.5
q-2 -17 -7.5 -21.5t-22.5 -4.5t-33 0.5t-33 0.5q-14 -1 -19 -5t-5 -18q1 -20 0 -40.5t1 -40.5q2 -17 7.5 -20.5t21.5 -2.5q27 0 56 0.5t56 0.5q34 -1 68 -1.5t68 -2.5q18 -1 24 -7t5 -23v-24.5t0.5 -28.5t0.5 -24.5v-12.5q-1 -16 -6.5 -21t-22.5 -5h-40h-75.5h-93.5h-93.5
h-76h-40.5q-13 0 -20 0.5t-10.5 4t-4.5 10.5t-1 19q-1 61 -1 120t-1 120v89q1 43 2 78.5t2 78.5q1 24 0 48t0 48q0 17 3.5 20.5t20.5 3.5q47 1 93 0.5t93 -0.5l28.5 0.5t69 0t85 -1.5t77.5 -2zM127 695q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21
t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM396 831q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5z" />
<glyph glyph-name="uni0419" unicode="&#x419;" horiz-adv-x="708"
d="M6 621q0 16 6 23t21 5q35 -2 67.5 0t67.5 -2q22 -2 20 -23v-35.5v-61.5t0.5 -73.5t1 -71t1.5 -53.5t2 -21q11 0 15 6q14 17 26.5 34l25.5 34l45.5 65l45.5 65l39.5 55l39.5 56q5 7 8.5 11t9 6.5t13 3t21.5 0.5h78q16 0 24 -0.5t12 -3.5t4.5 -10.5t1.5 -20.5
q1 -25 1.5 -73t0.5 -106.5v-121t-0.5 -115t-0.5 -89.5v-45q0 -12 0.5 -20.5t-1.5 -20.5q-2 -13 -7 -17t-19 -3q-26 2 -52.5 0.5t-52.5 0.5q-9 1 -21.5 0t-15.5 2t-2 19t0 27q0 44 0.5 79t-0.5 79q0 23 -0.5 46.5t-1.5 46.5q0 7 -4 10q-4 2 -9 -3q-4 -4 -10 -12l-79 -103.5
l-79 -103.5q-14 -20 -28.5 -37t-28.5 -37q-10 -15 -29 -15q-35 2 -69.5 1t-69.5 1q-8 0 -10.5 4t-3.5 11v13.5t-1 13.5q0 70 -0.5 139.5t-1.5 140.5q-1 0 -1 21v52.5v69v71v57.5v29zM308 710q-15 0 -29 6t-24 15.5t-16 21.5t-5 25q2 29 25 48.5t55 18.5q65 -1 68 -72
q1 -12 -5.5 -23.5t-17 -20.5t-24 -14t-27.5 -5z" />
<glyph glyph-name="uni042E" unicode="&#x42e;" horiz-adv-x="969"
d="M184 23q-1 -16 -5 -20.5t-19 -4.5q-29 1 -59 1t-59 2q-13 0 -20 1t-10 4.5t-3.5 10t-0.5 18.5q-2 79 -0.5 157t-0.5 157q-1 32 -1.5 64.5t1.5 64.5q2 37 2 70.5t-2 71.5q-1 14 1.5 18t13.5 4q36 0 69 -0.5t69 -0.5q16 -2 16 -17q1 -14 1 -27v-27q1 -37 0 -70.5t1 -71.5
q0 -19 3.5 -22t21.5 -5q14 -1 27 -0.5t26 -0.5q17 -1 23 16q5 11 9.5 22.5t9.5 22.5q34 78 95 121t142 61q66 15 123 -1.5t107 -58.5q35 -31 60.5 -69t37.5 -86q9 -36 15 -72t2 -74q-5 -44 -17 -83.5t-38 -76.5q-19 -26 -40 -50t-49 -41q-53 -32 -109.5 -41.5t-117.5 -6.5
q-42 3 -79 18t-72 38q-33 22 -52.5 54t-30.5 69q-7 22 -11.5 44l-9.5 45q-4 17 -20 18q-18 1 -28 0t-15.5 -6.5t-7 -15.5t-1.5 -28q0 -11 0.5 -38t0.5 -57.5t0.5 -59t0.5 -41.5zM442 324q0 -6 -0.5 -12t-0.5 -11q0 -34 15 -59.5t36.5 -43t44.5 -26t38 -8.5q72 0 111 47.5
t39 125.5q0 12 -2 33.5t-13.5 44t-34.5 41t-65 26.5q-61 10 -104.5 -22t-59.5 -90q-2 -6 -2.5 -13.5l-1 -15t-0.5 -12.5v-5z" />
<glyph glyph-name="uni0412" unicode="&#x412;" horiz-adv-x="646"
d="M429 377q14 -5 25 -10l22 -10q9 -4 20 -16t20.5 -32t16 -48.5t6.5 -64.5q0 -29 -14 -58t-35.5 -54.5t-47.5 -45t-50 -28.5q-36 -14 -73.5 -19t-75.5 -6q-2 0 -4 0.5t-4 -0.5q-17 -2 -49.5 -1.5t-65.5 1.5q-39 1 -82 2q-7 0 -12 2t-9 5t-6 9q-5 17 -5 33q-1 79 -1 157.5
v157.5q0 44 0.5 87t0.5 87q1 29 0.5 57.5t-2.5 57.5q0 15 12 15q64 1 120.5 2t120.5 0q23 0 45.5 -5t45.5 -11q29 -8 53 -25.5t44 -40.5q12 -15 17 -37q4 -20 6 -39.5t0.5 -37.5t-7.5 -35.5t-19 -33.5q-2 -3 -5 -6.5t-8 -8.5zM186 205v-26q-2 -20 -2 -30t4.5 -14t14.5 -4
t28 -1q30 -2 57 8t51 27q40 27 14 70q-10 15 -28 27q-29 19 -59.5 19.5t-62.5 -3.5q-10 -2 -13 -7t-3 -14q0 -7 -0.5 -15.5t-0.5 -16.5v-20zM183 478v-41.5t6 -19.5t20 -4t43 4q12 2 23 6.5t22 10.5q14 8 20 21.5t5 29.5t-11 25.5t-24 13.5q-12 3 -24.5 4l-25.5 2
q-12 1 -24 0t-23 -1q-2 -13 -3.5 -25.5t-3.5 -25.5z" />
<glyph glyph-name="uni0421" unicode="&#x421;" horiz-adv-x="688"
d="M-20 334q0 53 15.5 96.5t40.5 77t55.5 59t61 42.5t57 27t42.5 13q94 20 179 -19q19 -8 37.5 -19.5l35.5 -22.5q11 -6 10.5 -10.5t-9.5 -13.5l-45.5 -41.5l-45.5 -41.5q-14 -13 -32 -6q-30 11 -58 9q-18 -1 -44.5 -11t-51 -30t-42 -51.5t-17.5 -75.5q0 -53 23 -84.5
t54 -47.5t62.5 -19.5t49.5 -0.5q32 5 57 22.5t45 43.5l9 10.5t6 4.5t7 -1.5t11 -7.5l39 -25t39 -26q14 -10 16 -16.5t-5 -21.5q-15 -34 -39 -60t-55 -46q-36 -23 -74.5 -39.5t-83.5 -18.5q-92 0 -153.5 26t-100.5 65t-58.5 84.5t-28 84.5t-9 65z" />
<glyph glyph-name="uni042D" unicode="&#x42d;" horiz-adv-x="719"
d="M624 300q1 -40 -9 -80.5t-31 -78.5t-54 -62q-34 -25 -68.5 -44.5t-75.5 -32.5q-73 -23 -141.5 -11.5t-135.5 40.5q-52 22 -95 62q-5 5 -8.5 9.5t-0.5 12.5l27 65.5l27 64.5q5 13 17 19q18 9 34 -7q14 -14 29 -27t32 -24q49 -33 100 -32.5t103 23.5q41 18 55 64
q6 20 -14 20h-33t-58 -0.5t-58 -0.5h-34h-17t-17 1q-20 0 -20 21q0 11 -2 21t-2 21q-1 21 6.5 28.5t28.5 8.5q6 0 21.5 0.5t35.5 0.5h42.5h42.5t35.5 0.5t21.5 0.5q14 2 16 5.5t-2 16.5q-10 29 -32.5 44t-49.5 23q-92 26 -173 -18q-17 -9 -24.5 -5.5t-15.5 16.5l-24.5 39
l-23.5 39q-3 5 -6 9.5t-7 8.5q-10 12 -9.5 16t11.5 14q78 66 178 69q61 3 121 -6q56 -8 99.5 -37.5t78.5 -71.5q44 -52 64 -112.5t15 -132.5z" />
<glyph glyph-name="uni0417" unicode="&#x417;" horiz-adv-x="593"
d="M403 626q44 -21 65.5 -57.5t23.5 -75.5t-13.5 -74.5t-45.5 -54.5q-6 -4 -9 -7q-4 -4 -4 -6.5t6 -6.5q11 -7 21 -15l20 -16q18 -16 28 -41.5t12 -53.5t-4 -54.5t-19 -44.5q-39 -54 -90 -83.5t-115 -38.5q-16 -2 -31.5 -3t-30.5 -1q-29 -2 -54.5 4t-49.5 16.5t-47.5 23.5
l-46.5 27q-8 5 -11.5 13.5t0.5 18.5l22.5 52l22.5 52q2 4 8 6t11 1t9.5 -4.5t9.5 -5.5q35 -20 72.5 -34t79.5 -17q21 -2 38 6l34 16q5 3 8.5 10t5 15.5t1.5 17.5t-3 15q-17 42 -60 48q-14 2 -27.5 2t-27.5 1q-16 0 -16 15q-2 18 -3.5 36.5t-3.5 36.5q18 5 35.5 8.5t35.5 8.5
l24 8t23 12q14 10 20.5 23t5 26t-10 24.5t-24.5 19.5q-20 11 -41 13t-44 -6t-45 -16.5t-43 -20.5q-19 -11 -27 -9.5t-20 21.5q-13 20 -25 40.5t-23 41.5q-2 4 -1 10t4 10q5 5 11 9t13 7q44 24 87 32t91 20q6 2 24.5 3t43 -0.5t51 -6.5t49.5 -17z" />
<glyph glyph-name="one" unicode="1" horiz-adv-x="478"
d="M387 29q1 -6 0.5 -14.5t-2.5 -10.5q-5 -4 -9.5 -3.5t-10.5 0.5q-29 -1 -58 -1h-58q-14 0 -18.5 5t-5.5 21q-3 78 -3 157q-1 50 0 99t1 99v12t-1 11q-1 6 -4.5 8t-8.5 -3l-10.5 -8t-10.5 -9l-34.5 -29.5t-35.5 -29.5q-14 -11 -22.5 -10.5t-20.5 13.5q-17 19 -33 39l-33 40
q-13 16 2 31l21 19t20 20q36 38 76 70l82 65q10 8 20.5 13t23.5 4q30 0 58.5 1t58.5 -1q14 -1 17 -4t4 -19q0 -15 -0.5 -31t-0.5 -31q0 -35 0.5 -69t0.5 -68q-2 -105 -3 -189q0 -36 -0.5 -70.5t-1 -62t-0.5 -45v-19.5z" />
<glyph glyph-name="two" unicode="2" horiz-adv-x="541"
d="M225 0h-183q-14 0 -21.5 1t-11.5 5t-4.5 12t-0.5 22v39t-1 38q-2 28 19 44l40 32l40 31q40 30 74 65t62 77q11 16 14.5 33.5t-3.5 36.5q-11 37 -51 40q-23 2 -42.5 -5t-36.5 -21q-17 -16 -33 0l-36 35.5l-36 35.5q-7 6 -5.5 12t6.5 12q33 39 75 61q47 26 96 35.5
t103 -2.5q28 -6 51.5 -20.5t40.5 -33.5t28 -41t15 -44q16 -87 -13.5 -155t-91.5 -125l-30.5 -27.5l-30.5 -27.5q-2 -2 -2.5 -6t-0.5 -7q0 -1 3.5 -2.5t5.5 -1.5h144q5 0 9.5 0.5t9.5 0.5q14 2 16 -12q2 -28 0.5 -55t-0.5 -54q0 -17 -6 -22t-22 -7h-43q-20 0 -45 0.5l-48 1
t-38.5 0.5t-15.5 -1z" />
<glyph glyph-name="zero" unicode="0" horiz-adv-x="552"
d="M462 311q-3 -32 -4.5 -59.5t-5.5 -53.5q-8 -65 -36 -115t-82 -86q-30 -20 -68 -21.5t-72 5.5q-37 7 -68.5 25t-58.5 44q-20 19 -30.5 43t-15.5 50q-15 74 -17.5 147.5t12.5 148.5q7 34 17 65t34 57l26 28t27 25q42 32 92.5 35t98.5 -15q65 -23 97.5 -71t41.5 -114
q5 -36 7.5 -71.5zM318 298v34q0 14 0.5 29.5t0.5 26.5q0 23 -8 44.5t-21 40.5q-6 9 -15.5 15t-21.5 8.5t-24.5 0.5t-23.5 -11q-22 -17 -31 -38.5t-14 -45.5q-11 -51 -8 -101t11 -101q2 -13 6.5 -25.5t12.5 -23.5q9 -14 23.5 -21t30.5 -6t30.5 8.5t22.5 22.5q9 15 16 31t7 33
q0 20 3 39.5t3 39.5z" />
<glyph glyph-name="three" unicode="3" horiz-adv-x="594"
d="M226 -12q-22 0 -47.5 9t-48.5 18q-35 13 -66 34l-62 43q-5 4 -8.5 9t1.5 13l60 90q7 11 18 3l25 -18l24 -18q28 -15 55.5 -21.5t56.5 -7.5q22 -2 43.5 8.5t32.5 30.5q5 10 5 22.5t-4 24t-12 21t-18 14.5q-12 6 -25.5 7.5t-30.5 0.5q-8 3 -13 7t-6 14q-2 13 -1.5 26
t-1.5 27q-3 19 18 29l18.5 5.5l16.5 5t16 6t19 10.5q5 3 9.5 12t7.5 20t4 21.5t0 16.5q-2 6 -8 14.5t-17.5 14.5t-28 6t-38.5 -11q-13 -8 -26 -20.5t-24 -17.5q-13 -6 -20 -5.5t-18 10.5q-8 8 -15 17t-15 18q-12 14 -18.5 22.5t-6 15.5t7.5 14.5t22 20.5q42 35 88 58t103 23
q63 -1 105 -30.5t62 -87.5q15 -46 5.5 -89t-44.5 -79q-7 -8 -7 -13t10 -10q28 -15 43 -39.5t19 -52.5t-1 -57t-17 -52q-9 -17 -21.5 -43t-38.5 -50.5t-70.5 -42t-116.5 -17.5z" />
<glyph glyph-name="four" unicode="4" horiz-adv-x="593"
d="M472 329q0 -69 -1 -130.5t-1 -121.5q0 -16 1 -30.5t1 -30.5q1 -11 -4.5 -15t-19.5 -3q-27 1 -54.5 0t-54.5 -1q-20 1 -25 5t-5 24q-1 26 -1 53t-1 53q-1 17 -5.5 22t-21.5 7q-58 3 -116 2.5t-114 -0.5q-23 -3 -32.5 4.5t-11.5 29.5q-2 20 -2 39t-1 39q-1 19 13 35
l145 156.5l144 157.5q16 18 37 15q28 -2 55 -1t55 -1q21 0 21 -21q0 -20 1 -39t0 -39q-1 -54 -0.5 -108t-1.5 -101zM231 295h58q18 0 18 16q1 52 0 105q0 12 -6 14.5t-14 -5.5l-39.5 -38l-38.5 -39q-11 -11 -23.5 -22t-16.5 -28q7 -1 18 -1.5t20.5 -1t16.5 -0.5h7z" />
<glyph glyph-name="five" unicode="5" horiz-adv-x="583"
d="M233 640q39 1 77.5 1h77.5q17 0 20 -3t6 -19l8 -40.5l8 -40.5q1 -5 0.5 -9t-0.5 -9q-1 -15 -6 -19t-20 -4q-32 2 -65 2.5t-66 -0.5q-18 0 -23.5 -5.5t-8.5 -22.5q-2 -11 -6 -23.5t1 -20.5q3 -5 8 -5.5t10.5 1l11.5 3t12 1.5q42 -2 79.5 -14t70.5 -38q19 -14 30 -34
t19 -42q10 -26 10 -62.5t-8.5 -73t-25.5 -69.5t-41 -53q-21 -17 -44.5 -27.5t-49.5 -18.5q-66 -18 -130.5 -15t-129.5 23q-18 6 -35 17l-34 22q-21 13 -13 36l20 52.5t21 52.5q7 16 24 2q26 -23 56.5 -34.5t63.5 -16.5q29 -5 58 -3t56 17q10 6 19.5 14t16.5 18q9 13 11 28.5
t-2 30.5t-13.5 27.5t-24.5 20.5q-11 6 -24 10.5t-26 4.5q-27 0 -54 -1.5t-53 -15.5q-9 -7 -20 0q-24 16 -37.5 28t-18 25t-1.5 30.5t11 46.5l29 101.5l28 101.5q3 12 8 18t19 5q11 -1 26.5 -1h29.5h34z" />
<glyph glyph-name="six" unicode="6" horiz-adv-x="605"
d="M8 287q0 75 18 129.5t45 93t60 63t62 38.5t51 19.5t28 7.5q16 4 44 4t55.5 -2t48.5 -5.5t24 -7.5t6 -19.5t5 -34l4 -36.5l3 -27q1 -11 -2 -14t-14 -1q-8 1 -24.5 3.5t-37.5 4t-44 0.5t-42 -8q-12 -4 -28 -15t-31.5 -26.5t-29 -35t-19.5 -41.5q-1 -3 -1 -8t2 -6
q2 -2 7 -0.5t7 3.5q21 17 44.5 24.5t49.5 11.5q34 6 65.5 -1t62.5 -22q18 -9 32.5 -27t25.5 -42t17 -53t6 -59q0 -61 -26.5 -104t-91.5 -82q-47 -24 -92.5 -27.5t-87.5 8.5t-78.5 36.5t-63.5 56.5q-18 21 -29.5 48.5t-18 55.5t-9.5 53.5t-3 43.5zM285 148q7 0 10.5 -0.5
t5.5 -0.5q26 0 42.5 16.5t16.5 43.5q-1 52 -58 52q-33 -2 -53 -23l-11.5 -13t-10.5 -13q-13 -17 -8.5 -31t24.5 -22q11 -4 22.5 -5.5t19.5 -3.5z" />
<glyph glyph-name="seven" unicode="7" horiz-adv-x="573"
d="M225 637q39 0 78 -0.5t78 -1.5q17 -1 35.5 0.5t35.5 -0.5q12 -1 18 -7.5t7 -17.5q2 -16 0.5 -34t-0.5 -34q1 -4 -1.5 -8.5t-4.5 -8.5q-35 -54 -61.5 -111l-52.5 -115l-64 -137.5l-64 -137.5q-5 -10 -12 -17t-20 -7h-140q-17 0 -10 15l12.5 24l12.5 24l91.5 191.5
l91.5 191.5q12 25 9 30t-32 5h-100.5t-100.5 -1q-11 0 -17 3.5t-7 14.5q-2 29 -1.5 58.5t-0.5 58.5q-1 20 21 22h20q22 0 53 -0.5t59 -0.5t47.5 0.5z" />
<glyph glyph-name="eight" unicode="8" horiz-adv-x="541"
d="M245 653q41 0 74.5 -13.5t60.5 -45.5q16 -20 23.5 -45t7.5 -51.5t-6 -50.5t-18 -42q-9 -13 -8 -16.5t12 -14.5q43 -39 61.5 -87.5t16.5 -105.5q-2 -39 -22.5 -74.5t-51 -63.5t-68 -44.5t-73.5 -17.5q-61 2 -117 28t-92 68.5t-44.5 98t27.5 115.5q26 47 70 81
q9 7 11.5 13.5t-4.5 17.5q-9 14 -12 30.5l-6 33.5q-6 35 3 65t27 58q21 31 54.5 47t73.5 16zM309 186q0 11 -4.5 24t-11.5 25t-16 22t-19 15q-7 5 -17 1q-20 -10 -36 -23.5t-24 -34.5q-6 -13 -3 -28q2 -13 11.5 -24.5t22 -20t27 -11.5t27.5 0q8 2 16 8t14 13.5t9.5 16
t3.5 17.5zM248 522q-14 -1 -22 -6t-9 -15q-2 -23 4 -42.5t25 -33.5q2 -2 6 -2t6 2q12 14 19.5 30.5t5.5 36.5q-3 32 -35 30z" />
<glyph glyph-name="nine" unicode="9" horiz-adv-x="604"
d="M505 337q-2 -44 -7.5 -86t-20.5 -83q-38 -101 -132 -147q-145 -71 -286 15l-23 14t-23 15q-15 12 -4 31q14 23 27 47t27 47q5 8 9.5 10t14.5 -3q40 -24 83 -43q29 -14 58.5 -11t58.5 14q33 13 48 39t18 62q1 7 -3 9t-9 -2q-5 -2 -8.5 -5t-8.5 -5q-103 -60 -198 17
q-20 16 -36.5 33t-28.5 39q-13 22 -18.5 49.5t-3 55t12 53.5t25.5 46q22 27 52 52.5t62 36.5q12 6 35.5 8t50.5 0.5t53.5 -7t46.5 -15.5q52 -25 77 -68.5t37 -94.5q8 -30 9.5 -61t4.5 -62zM322 431q1 18 -5.5 33t-17 24.5t-25 13t-30.5 -0.5q-14 -4 -25 -12.5t-13 -22.5
q-3 -16 -6.5 -32.5t9.5 -33.5q11 -14 32.5 -21.5t40.5 -2.5q37 9 40 55z" />
<glyph glyph-name="hyphen" unicode="-" horiz-adv-x="302"
d="M125 293h95q11 0 9 -11l-3 -60q-1 -15 -5 -20t-19 -6q-20 -2 -39 -2h-39h-84q-17 0 -22.5 5t-10.5 20q-1 2 -1 3t-1 3q-2 26 -2.5 40t4.5 20t17.5 6h36.5h19t21 0.5t17 1z" />
<glyph glyph-name="equal" unicode="=" horiz-adv-x="396"
d="M29 308q-18 0 -20 20l-2 31.5t-1 31.5q0 11 4 14.5t15 4.5h17.5h39h52h55.5h50.5h36.5q19 0 20 -18q2 -12 4.5 -24.5t4.5 -24.5q3 -26 -22 -30q-4 -1 -21 -1.5t-41.5 -1t-53 -1l-55.5 -1t-49.5 -0.5h-33.5zM154 243h120q13 0 15 -2t1 -15q0 -17 0.5 -32.5t0.5 -31.5
q-1 -14 -5 -18t-18 -5h-11l-219 3q-19 0 -23.5 4t-6.5 23q-2 13 -1.5 26t0.5 27q-1 13 2.5 16.5t17.5 4.5h127z" />
<glyph glyph-name="parenleft" unicode="(" horiz-adv-x="323"
d="M246 -14q-5 -2 -9 -4t-9 -2q-22 0 -43.5 -0.5t-44.5 0.5q-13 2 -22 14l-23.5 33.5t-20.5 34.5l-28.5 63l-26.5 63q-11 25 -13 50t0 51q5 73 33.5 135t74.5 117q6 7 12 13t11 14q26 32 60.5 38t71.5 2q6 0 6.5 -4.5t-2.5 -8.5l-15 -20.5t-15 -18.5q-21 -23 -37 -49.5
t-29 -55.5q-26 -57 -31 -117t4 -121q6 -46 22 -87.5t37 -81.5q8 -15 17.5 -29z" />
<glyph glyph-name="parenright" unicode=")" horiz-adv-x="312"
d="M70 -20q-18 1 -27 2.5t-11.5 6t0.5 13.5t11 25l25 52l26 52q29 60 35.5 122t-4.5 127q-11 62 -36 116t-69 100q-6 7 -13 21q-5 11 -2 15t14 5h42t42 -1q5 -1 10.5 -4t9.5 -7q38 -36 65.5 -78.5t40.5 -93.5q14 -56 21.5 -112.5t-0.5 -115.5q-5 -41 -19 -79t-34 -73
q-11 -20 -24.5 -38.5t-24.5 -38.5q-11 -18 -32 -18h-35q-2 0 -4 1q-2 0 -3.5 0.5t-3.5 0.5z" />
<glyph glyph-name="period" unicode="." horiz-adv-x="229"
d="M84 -4q-4 1 -10.5 2t-14.5 2q-15 3 -26.5 12t-18.5 21.5t-9 28.5t3 32q8 26 34 38.5t55 3.5q18 -6 32 -15q42 -28 28 -73q-7 -23 -26.5 -37.5t-46.5 -14.5z" />
<glyph glyph-name="colon" unicode=":" horiz-adv-x="209"
d="M154 355q-5 -38 -38 -58q-13 -8 -30 -8.5t-32.5 5t-28.5 16t-18 24.5q-6 16 -2.5 31.5t13.5 29.5q13 19 36 28.5t44 2.5q24 -7 40 -27t16 -44zM75 0q-36 2 -54 20.5t-16 52.5q1 14 6.5 26.5t15 21.5t21.5 14t25 4q73 -5 70 -74q-1 -29 -20.5 -48t-47.5 -17z" />
<glyph glyph-name="comma" unicode="," horiz-adv-x="219"
d="M145 46q0 -20 -7.5 -40t-20 -37.5t-29.5 -30.5t-35 -18q-3 -1 -6.5 0t-6.5 1q1 3 1 6.5t1 6.5q2 6 5.5 12.5t5.5 12.5q4 14 2 18.5t-15 12.5q-24 15 -32 40t3 48q12 23 37 31.5t51 -1.5q14 -5 23 -10.5t14 -12t7 -16t2 -23.5z" />
<glyph glyph-name="semicolon" unicode=";" horiz-adv-x="239"
d="M159 49q0 -16 -4.5 -29.5t-12.5 -27.5q-15 -29 -39 -45t-53 -27q-5 -2 -9.5 0.5t-9.5 3.5q2 4 3.5 7.5t3.5 7.5q3 5 7 9.5t7 10.5q7 12 4.5 18.5t-13.5 15.5q-6 5 -11.5 9t-10.5 9q-12 13 -15 29.5t1.5 32.5t15 29t25.5 18q20 7 38.5 6.5t37.5 -5.5q19 -4 24 -24
q4 -11 6.5 -23.5t4.5 -24.5zM91 282q-17 0 -32 6t-27 16t-19.5 23t-7.5 27q0 15 6.5 29.5t17.5 26t25.5 18t29.5 6.5q36 0 60 -22.5t24 -54.5q-1 -33 -23 -54.5t-54 -20.5z" />
<glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="833"
/>
<glyph glyph-name="slash" unicode="/" horiz-adv-x="323"
d="M57 -3q-9 0 -17.5 -0.5t-17.5 -0.5q-14 1 -17 4.5t1 17.5q11 42 19.5 84l17 84.5l17.5 85t21 83.5q14 49 25 97.5l23 97.5q2 8 3.5 12.5t4.5 7t7.5 3t12.5 0.5q39 1 78 0q14 0 18 -5t1 -19q-5 -26 -9.5 -52t-11.5 -52l-47 -195l-48 -195q-2 -10 -5 -19l-6 -18
q-8 -24 -31 -23q-10 1 -19.5 1h-19.5v1z" />
<glyph glyph-name="backslash" unicode="\" horiz-adv-x="344"
d="M195 -6q-1 0 -4 -1t-6 -1q-15 -2 -24.5 -1t-15.5 5t-10 13t-8 24l-29.5 116.5l-29.5 116.5q-6 26 -13.5 52.5t-13.5 53.5q-4 19 -6 38t-6 38l-10 39.5l-10 39.5q-2 5 -3 10l-2 10q-2 8 1 13t11 5q26 1 51 1.5t51 0.5q6 0 8.5 -4.5t4.5 -9.5l63 -257.5l62 -257.5
q2 -5 2.5 -10t1.5 -10q4 -16 0 -21t-19 -5q-11 -1 -21.5 0t-24.5 2z" />
<glyph glyph-name="plus" unicode="+" horiz-adv-x="407"
d="M175 425q23 -1 35.5 -1.5t18 -6t6 -17.5t-0.5 -36q-1 -2 -0.5 -3.5t0.5 -3.5q0 -17 1 -25t5.5 -11t13 -2.5t25.5 0.5h42q17 0 17 -17q0 -37 3 -71q1 -18 -15 -18q-17 -1 -32.5 -1t-31.5 -1q-14 0 -17 -3t-4 -17q-1 -12 -1 -27.5v-27.5q0 -24 -18 -19q-17 4 -33.5 3
l-33.5 -2t-22 5t-6 24q-1 11 -1 26v26q-1 19 -20 19q-8 -1 -16 -1h-16q-7 0 -13 -1t-12 0q-14 1 -22 2t-13 4.5t-6.5 11.5t-1.5 25q0 10 -1.5 19t-1.5 19q1 12 5 16.5t17 5.5q15 1 30 0t30 -1t23.5 1t12 4.5t4 12t0.5 23.5q-1 14 -1.5 25.5t-1.5 25.5q0 17 18 17
q9 0 18 -0.5t17 -1.5z" />
<glyph glyph-name="uni0410" unicode="&#x410;" horiz-adv-x="760"
d="M259 135q-11 0 -16.5 -1t-9 -3.5t-6 -8.5t-5.5 -16q-5 -18 -11 -35.5t-11 -35.5q-7 -34 -40 -34q-36 -2 -71.5 -2t-71.5 -1q-16 0 -11 16l47.5 144.5l46.5 145.5q14 44 26 87.5t26 87.5l20.5 60t19.5 61q6 20 18 28t30 8q21 -1 41.5 -1.5t40.5 -0.5q23 0 46 0.5t46 0.5
q13 0 25.5 0.5t25.5 0.5q12 0 19 -1t11 -4t6.5 -9.5t5.5 -18.5l40 -155.5l41 -155.5l32.5 -116l33.5 -115q6 -24 8.5 -36.5t-1 -18.5t-14 -6.5t-30.5 0.5q-34 0 -67.5 1l-67.5 2q-18 1 -21 18q-2 15 -5 30.5l-6 30.5q-2 8 -4 15t-4 15q-5 20 -24 20q-13 -1 -25.5 -0.5
t-24.5 0.5l-12 0.5t-29 1t-36 1t-32 0.5zM360 481q-2 3 -6 -6.5t-6 -12.5l-27 -81l-23 -65l-23 -66q-5 -14 -1.5 -18t18.5 -4q24 -1 48 -1h48q19 1 22 4.5t-2 23.5q-8 41 -17 81l-18 81q-2 7 -3.5 18t-3.5 21l-3.5 17.5t-2.5 7.5z" />
<glyph glyph-name="uni041D" unicode="&#x41d;" horiz-adv-x="667"
d="M554 94q1 -26 1.5 -41.5t0.5 -41.5q0 -11 -4.5 -14.5t-17.5 -2.5q-29 1 -58 1.5t-58 0.5q-17 0 -20.5 3t-4.5 20q-2 47 -4.5 96t-4.5 96v11t-1 12q0 12 -15 14q-40 2 -79.5 0.5t-78.5 0.5q-20 1 -18 -19q1 -49 -1 -95t0 -99q1 -7 1.5 -13.5t-0.5 -13.5q0 -14 -14 -14
q-10 0 -19.5 0.5t-19.5 1.5q-27 2 -54 0.5t-54 0.5q-18 2 -23 6.5t-5 21.5q0 56 -1 104.5t0 104.5q1 89 2.5 176.5t3.5 176.5v31q0 19 19 19q14 0 28.5 0.5t29.5 -0.5q20 -1 38.5 -1.5t38.5 -2.5t24.5 -5.5t4.5 -23.5q1 -48 1 -85.5t-1 -84.5q0 -18 0.5 -28.5t5 -15.5
t14.5 -6t28 -1q32 0 62.5 1.5t61.5 2.5q20 0 20 17q-1 5 -0.5 10t0.5 10q-2 54 -3 98t-3 98q-2 16 12 16h123q11 0 16 -1q15 -2 19.5 -6.5t5.5 -20.5q3 -72 3 -143q0 -39 -1 -77.5l-2 -77.5v-24v-57.5t0.5 -71t0.5 -64.5z" />
<glyph glyph-name="uni0415" unicode="&#x415;" horiz-adv-x="594"
d="M88 -1h-54q-22 -1 -25.5 3t-3.5 27q0 25 0.5 50t0.5 50v227t1 226q0 5 -0.5 8.5t-0.5 7.5q0 15 0.5 23.5t5 13t13 6t24.5 1.5h38t71 -0.5t88 -1t89.5 -0.5h75t44.5 1q21 0 26.5 -6.5t5.5 -24.5q0 -26 -0.5 -49.5t0.5 -48.5q0 -22 -21 -22q-12 0 -23.5 1t-23.5 1h-147h-81
q-15 0 -19 -4t-3 -19q1 -20 2 -36t2 -36q1 -22 22 -22h19.5h26h26h19.5q23 2 21 -20v-66q0 -11 -16 -13q-7 0 -19.5 -0.5t-26 -1.5t-26 -1.5t-19.5 -0.5q-11 -1 -16 -5.5t-5 -15.5v-78q-2 -21 21 -21q11 0 21 0.5t21 0.5q40 -1 79.5 -1t79.5 -1q16 0 31 0.5t31 0.5
q14 0 19.5 -4t6.5 -17q2 -26 3.5 -51t1.5 -51q0 -21 -6.5 -27t-27.5 -5h-41.5h-63h-75.5t-76.5 0.5t-67.5 0.5t-48 1z" />
<glyph glyph-name="question" unicode="?" horiz-adv-x="552"
d="M231 184q-14 0 -27 -0.5t-27 0.5t-19.5 7t-5.5 20q0 31 10 58t35 47q18 15 37 27t42 20q21 7 30 22.5t13 35.5q6 36 -24 57q-8 6 -13 7q-17 4 -38 3t-40.5 -7.5t-35.5 -18.5t-23 -29q-3 -6 -5 -12.5t-13 -8.5q-11 -3 -20 -3.5t-20 6.5q-18 13 -36.5 24l-37.5 22
q-11 6 -10.5 11.5t4.5 13.5q32 63 82 102t121 52q39 7 76.5 4t75.5 -14q42 -12 68 -41.5t40 -69.5q16 -44 10.5 -85.5t-24.5 -81.5q-6 -13 -17.5 -23t-22.5 -18t-23 -14t-23 -13q-23 -13 -39 -31t-21 -44q-3 -14 -10.5 -18.5t-18.5 -4.5q-7 0 -15 -0.5t-16 -0.5
q-9 -1 -19 -1zM316 56q0 -14 -2 -22.5t-7 -14.5t-13 -11t-21 -10q-31 -11 -63.5 -2t-48.5 36q-11 20 -8 40q4 33 31 53t63 17q31 -2 50.5 -26.5t18.5 -59.5z" />
<glyph glyph-name="exclam" unicode="!" horiz-adv-x="270"
d="M157 636q13 -1 21.5 -2.5t12.5 -5.5t5 -12t1 -21q-1 -26 -3 -51.5t-5 -50.5l-15.5 -125.5l-15.5 -125.5q-1 -5 -1 -9.5t-1 -9.5q-3 -17 -8 -21t-23 -4q-21 0 -42 1t-42 1q-15 0 -15 12q-2 21 -3 41.5l-2 40.5q-4 78 -7 152t-7 152q0 4 -0.5 7.5t-0.5 7.5q1 14 5 19t18 4
h27h38h37.5h25.5zM87 0q-34 1 -58 22t-23 50q0 18 7.5 33.5t19.5 27.5t27.5 19t32.5 7q16 0 31 -6.5t25.5 -17.5t16 -25.5t4.5 -30.5q-2 -15 -7.5 -29.5t-15.5 -26t-24.5 -18t-35.5 -5.5z" />
<glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="510"
d="M390 301q15 0 18 -2.5t4 -16.5q2 -17 2 -32.5t1 -32.5q0 -18 -16 -19l-30 -2t-30 -1q-26 0 -72 -1t-92.5 -2.5t-84 -2.5t-47.5 -2q-19 -1 -28 3t-10 25q-2 20 -0.5 34.5t-0.5 31.5q-2 11 2.5 14.5t16.5 4.5h38h63h76.5h77.5t67 0.5t45 0.5z" />
<glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="375"
d="M154 296h120q13 0 15 -2t1 -16q0 -16 0.5 -31.5t0.5 -32.5q-1 -14 -5 -17.5t-18 -5.5h-11l-219 3q-19 0 -23.5 4t-6.5 23q-2 14 -1.5 27t0.5 26q-1 13 2.5 17t17.5 4q32 1 63.5 0.5t63.5 -0.5v1z" />
<glyph glyph-name="uni0430" unicode="&#x430;" horiz-adv-x="760"
d="M259 135q-11 0 -16.5 -1t-9 -3.5t-6 -8.5t-5.5 -16q-5 -18 -11 -35.5t-11 -35.5q-7 -34 -40 -34q-36 -2 -71.5 -2t-71.5 -1q-16 0 -11 16l47.5 144.5l46.5 145.5q14 44 26 87.5t26 87.5l20.5 60t19.5 61q6 20 18 28t30 8q21 -1 41.5 -1.5t40.5 -0.5q23 0 46 0.5t46 0.5
q13 0 25.5 0.5t25.5 0.5q12 0 19 -1t11 -4t6.5 -9.5t5.5 -18.5l40 -155.5l41 -155.5l32.5 -116l33.5 -115q6 -24 8.5 -36.5t-1 -18.5t-14 -6.5t-30.5 0.5q-34 0 -67.5 1l-67.5 2q-18 1 -21 18q-2 15 -5 30.5l-6 30.5q-2 8 -4 15t-4 15q-5 20 -24 20q-13 -1 -25.5 -0.5
t-24.5 0.5l-12 0.5t-29 1t-36 1t-32 0.5zM360 481q-2 3 -6 -6.5t-6 -12.5l-27 -81l-23 -65l-23 -66q-5 -14 -1.5 -18t18.5 -4q24 -1 48 -1h48q19 1 22 4.5t-2 23.5q-8 41 -17 81l-18 81q-2 7 -3.5 18t-3.5 21l-3.5 17.5t-2.5 7.5z" />
<glyph glyph-name="uni0431" unicode="&#x431;" horiz-adv-x="635"
d="M156 -12q-31 1 -61.5 1t-62.5 2q-17 1 -22 6t-5 22q1 34 1.5 67.5t1.5 68.5v135v246q0 44 -3 89q0 11 4 14.5t14 3.5h38.5h60.5t71.5 -0.5t73 -0.5h65.5t47 1q11 1 21.5 1.5t21.5 -0.5q18 -1 25 -8t6 -26q-1 -25 -3 -47.5t-4 -47.5q-1 -8 -2 -13t-3.5 -7t-7.5 -2.5
t-14 -0.5q-35 -1 -69.5 -0.5t-69.5 -0.5q-22 0 -45 -0.5t-44 -0.5q-16 0 -18 -16q-2 -17 -0.5 -33t0.5 -34q0 -9 5 -12t13 -3q28 -3 55.5 -2.5t56.5 0.5q29 -1 57 -7.5t56 -15.5q35 -12 60.5 -35t42.5 -55q14 -26 13 -51t-7 -62q-9 -56 -38 -90.5t-66.5 -53.5t-77.5 -25
t-73 -6h-21.5h-39h-37t-16.5 -1zM233 256q-8 2 -17 1t-19 0q-20 2 -21 -17q0 -23 -0.5 -44.5t-0.5 -44.5q0 -17 18 -20q57 -12 110 11q14 6 22.5 17t11.5 24t-0.5 25.5t-14.5 22.5q-10 8 -22.5 12.5t-25.5 7.5q-9 3 -19.5 4t-21.5 1z" />
<glyph glyph-name="uni0432" unicode="&#x432;" horiz-adv-x="646"
d="M429 377q14 -5 25 -10l22 -10q9 -4 20 -16t20.5 -32t16 -48.5t6.5 -64.5q0 -29 -14 -58t-35.5 -54.5t-47.5 -45t-50 -28.5q-36 -14 -73.5 -19t-75.5 -6q-2 0 -4 0.5t-4 -0.5q-17 -2 -49.5 -1.5t-65.5 1.5q-39 1 -82 2q-7 0 -12 2t-9 5t-6 9q-5 17 -5 33q-1 79 -1 157.5
v157.5q0 44 0.5 87t0.5 87q1 29 0.5 57.5t-2.5 57.5q0 15 12 15q64 1 120.5 2t120.5 0q23 0 45.5 -5t45.5 -11q29 -8 53 -25.5t44 -40.5q12 -15 17 -37q4 -20 6 -39.5t0.5 -37.5t-7.5 -35.5t-19 -33.5q-2 -3 -5 -6.5t-8 -8.5zM186 205v-26q-2 -20 -2 -30t4.5 -14t14.5 -4
t28 -1q30 -2 57 8t51 27q40 27 14 70q-10 15 -28 27q-29 19 -59.5 19.5t-62.5 -3.5q-10 -2 -13 -7t-3 -14q0 -7 -0.5 -15.5t-0.5 -16.5v-20zM183 478v-41.5t6 -19.5t20 -4t43 4q12 2 23 6.5t22 10.5q14 8 20 21.5t5 29.5t-11 25.5t-24 13.5q-12 3 -24.5 4l-25.5 2
q-12 1 -24 0t-23 -1q-2 -13 -3.5 -25.5t-3.5 -25.5z" />
<glyph glyph-name="uni0433" unicode="&#x433;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q21 0 54.5 0.5t73 0.5h81h77.5t63.5 -0.5t38.5 -0.5q18 0 22 -4t6 -22q3 -31 2 -58.5t2 -58.5q2 -16 -2 -21.5t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17
q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0434" unicode="&#x434;" horiz-adv-x="792"
d="M570 179q1 -20 4.5 -24.5t23.5 -5.5q13 -1 25.5 -1t24.5 -1q15 0 21 -4t9 -18q1 -6 1 -12v-11q0 -33 0.5 -66t0.5 -66v-11.5t-1 -11.5q-3 -17 -22 -17q-21 0 -42.5 -0.5t-42.5 -0.5q-20 0 -17 20v3q0 17 -1 26t-5 13.5t-13 5.5t-25 1q-12 0 -42 0.5t-69 1t-82.5 1
t-82 0.5h-67.5t-39 -1q-4 -1 -8 -6t-5 -10q-2 -11 -1.5 -27t0.5 -27q0 -6 -2.5 -11t-10.5 -5q-26 -1 -55 -2t-55 0q-14 0 -18 5t-5 19q-2 44 -1 87t-1 87q-1 14 2.5 17.5t17.5 1.5q22 -3 36 16l27.5 35t24.5 37q22 39 39.5 79.5t27.5 84.5q2 9 8 31.5t12 49t10 51.5t4 40
q-1 20 1.5 36.5t3.5 36.5q1 19 20 18q49 0 97 0.5t96 -0.5q72 0 143 -3q17 -1 20.5 -5t3.5 -21q0 -19 0.5 -53.5t1.5 -77l2 -88.5t1.5 -88t1.5 -76.5t2 -52.5zM400 314v18t-1 44t-1.5 55t-1.5 51q0 5 -2 11t-4 6q-11 1 -22.5 1t-22.5 -2q-9 -2 -8.5 -9t-0.5 -14
q-2 -16 -3 -29t-3 -30q-8 -65 -27.5 -128t-51.5 -121q-1 -3 -2 -5.5t-2 -5.5q-3 -6 -0.5 -9.5t8.5 -3.5q31 0 67.5 1t67.5 2q17 0 17 17v17.5t-1 17.5q-2 29 -3 58t-3 58z" />
<glyph glyph-name="uni0435" unicode="&#x435;" horiz-adv-x="594"
d="M88 -1h-54q-22 -1 -25.5 3t-3.5 27q0 25 0.5 50t0.5 50v227t1 226q0 5 -0.5 8.5t-0.5 7.5q0 15 0.5 23.5t5 13t13 6t24.5 1.5h38t71 -0.5t88 -1t89.5 -0.5h75t44.5 1q21 0 26.5 -6.5t5.5 -24.5q0 -26 -0.5 -49.5t0.5 -48.5q0 -22 -21 -22q-12 0 -23.5 1t-23.5 1h-147h-81
q-15 0 -19 -4t-3 -19q1 -20 2 -36t2 -36q1 -22 22 -22h19.5h26h26h19.5q23 2 21 -20v-66q0 -11 -16 -13q-7 0 -19.5 -0.5t-26 -1.5t-26 -1.5t-19.5 -0.5q-11 -1 -16 -5.5t-5 -15.5v-78q-2 -21 21 -21q11 0 21 0.5t21 0.5q40 -1 79.5 -1t79.5 -1q16 0 31 0.5t31 0.5
q14 0 19.5 -4t6.5 -17q2 -26 3.5 -51t1.5 -51q0 -21 -6.5 -27t-27.5 -5h-41.5h-63h-75.5t-76.5 0.5t-67.5 0.5t-48 1z" />
<glyph glyph-name="uni0451" unicode="&#x451;" horiz-adv-x="594"
d="M475 634q19 0 21 -18q0 -4 0.5 -20t0.5 -34t-0.5 -33t-0.5 -16q-1 -14 -4.5 -18t-18.5 -4q-16 0 -52.5 -0.5t-78 -1t-78.5 -1.5t-54 -1q-15 0 -20.5 -5.5t-6.5 -19.5q-2 -20 -2 -32v-31q0 -20 23 -20q21 0 41.5 -1l41.5 -2q19 -2 15 -21q-2 -14 -1.5 -28.5t-1.5 -28.5
q-2 -17 -7.5 -21.5t-22.5 -4.5t-33 0.5t-33 0.5q-14 -1 -19 -5t-5 -18q1 -20 0 -40.5t1 -40.5q2 -17 7.5 -20.5t21.5 -2.5q27 0 56 0.5t56 0.5q34 -1 68 -1.5t68 -2.5q18 -1 24 -7t5 -23v-24.5t0.5 -28.5t0.5 -24.5v-12.5q-1 -16 -6.5 -21t-22.5 -5h-40h-75.5h-93.5h-93.5
h-76h-40.5q-13 0 -20 0.5t-10.5 4t-4.5 10.5t-1 19q-1 61 -1 120t-1 120v89q1 43 2 78.5t2 78.5q1 24 0 48t0 48q0 17 3.5 20.5t20.5 3.5q47 1 93 0.5t93 -0.5l28.5 0.5t69 0t85 -1.5t77.5 -2zM127 695q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21
t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM396 831q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5z" />
<glyph glyph-name="uni0436" unicode="&#x436;" horiz-adv-x="927"
d="M352 369q2 0 3 12.5t2 29.5t1 36t-1 33q-2 38 -4.5 69.5t-4.5 69.5q-1 17 2.5 21t20.5 5q32 1 64 0.5t64 -0.5q11 0 13.5 -5t2.5 -15q0 -61 1 -116t2 -116v-8t2 -7q1 -2 4.5 -3t3.5 0q5 5 9 10t7 11l57.5 108t57.5 109q7 15 16.5 23t27.5 6q25 -2 50 -1t50 1q9 0 17 -1
t13 -12q4 -10 1 -17t-8 -15l-74.5 -114.5l-74.5 -114.5q-9 -15 -9 -29t8 -29l24 -46l30 -57l31.5 -60.5l28.5 -56l22 -44t12 -23.5q9 -19 -11 -22q-17 -3 -34 -3q-23 2 -46.5 1t-46.5 1q-19 1 -27 18l-59 114.5l-60 114.5q-2 3 -3.5 6.5t-3.5 7.5q-3 3 -6 3q-4 0 -4 -5
q-1 -7 -1.5 -13.5t-0.5 -13.5q2 -57 3 -111l2 -112q1 -10 -5 -16.5t-15 -3.5q-32 -1 -62 0.5t-61 -0.5q-17 -2 -20.5 2.5t-4.5 21.5l-2 114.5l-2 115.5v9.5t-1 9.5q0 5 -5 5q-5 2 -7 -2l-5.5 -7.5t-5.5 -8.5l-48.5 -81l-49.5 -82l-28 -44l-28 -44q-5 -8 -9.5 -9t-22.5 0
q-3 2 -18 2.5t-34.5 0.5h-39h-30.5q-29 2 -12 25q8 13 17 24t17 24l27.5 41.5l31.5 48.5l32 49.5l29 44.5l21 32.5t9 13.5q14 20 2 40l-21.5 39l-21.5 39q-23 38 -45 69t-45 69q-11 18 -21 36.5t-21 36.5q-10 17 11 17q13 0 33.5 -0.5t39.5 -0.5t33.5 -0.5t16.5 -0.5
q10 2 22 1.5t18 -4.5q9 -6 14.5 -17l10.5 -21l30 -55.5l30 -52l30 -51.5l31 -55q2 -3 4 -9t7 -6z" />
<glyph glyph-name="uni0437" unicode="&#x437;" horiz-adv-x="593"
d="M403 626q44 -21 65.5 -57.5t23.5 -75.5t-13.5 -74.5t-45.5 -54.5q-6 -4 -9 -7q-4 -4 -4 -6.5t6 -6.5q11 -7 21 -15l20 -16q18 -16 28 -41.5t12 -53.5t-4 -54.5t-19 -44.5q-39 -54 -90 -83.5t-115 -38.5q-16 -2 -31.5 -3t-30.5 -1q-29 -2 -54.5 4t-49.5 16.5t-47.5 23.5
l-46.5 27q-8 5 -11.5 13.5t0.5 18.5l22.5 52l22.5 52q2 4 8 6t11 1t9.5 -4.5t9.5 -5.5q35 -20 72.5 -34t79.5 -17q21 -2 38 6l34 16q5 3 8.5 10t5 15.5t1.5 17.5t-3 15q-17 42 -60 48q-14 2 -27.5 2t-27.5 1q-16 0 -16 15q-2 18 -3.5 36.5t-3.5 36.5q18 5 35.5 8.5t35.5 8.5
l24 8t23 12q14 10 20.5 23t5 26t-10 24.5t-24.5 19.5q-20 11 -41 13t-44 -6t-45 -16.5t-43 -20.5q-19 -11 -27 -9.5t-20 21.5q-13 20 -25 40.5t-23 41.5q-2 4 -1 10t4 10q5 5 11 9t13 7q44 24 87 32t91 20q6 2 24.5 3t43 -0.5t51 -6.5t49.5 -17z" />
<glyph glyph-name="uni0438" unicode="&#x438;" horiz-adv-x="750"
d="M7 616q0 18 4.5 21.5t23.5 1.5q20 -2 40.5 -1.5t40.5 -0.5q12 0 24.5 1t25.5 -1q15 -2 20.5 -8.5t5.5 -22.5q1 -5 0.5 -9.5t-0.5 -9.5v-264v-13.5t1 -13.5q0 -7 5 -9q6 0 9 5q4 3 7 7t5 8q51 71 100.5 148.5t99.5 147.5q12 20 28 28.5t43 7.5q26 -3 53.5 -2t53.5 0
q24 -2 31 -9t6 -31q-2 -102 -1.5 -209.5t-1.5 -209.5q-1 -39 0 -73.5t2 -73.5q0 -7 0.5 -12t-0.5 -12q-1 -9 -6 -14.5t-15 -3.5q-32 1 -65 2.5t-66 0.5q-7 0 -14 0.5t-13 3.5q-4 2 -7.5 7t-3.5 10q2 37 0 80t0 80q1 37 1 73.5t1 73.5q0 2 -1 6t-5 4q-3 0 -4.5 -2t-3.5 -4
q-48 -59 -96 -127.5t-88 -134.5l-15.5 -24l-15.5 -24q-9 -15 -22 -19t-29 -6q-12 -1 -23.5 -0.5t-23.5 0.5q-20 1 -40.5 -0.5t-40.5 0.5q-23 2 -27.5 8t-3.5 30q2 37 2.5 73.5t0.5 73.5q0 38 -1 75.5l-2 75.5l0.5 15t0.5 39v55v63.5v63.5v55z" />
<glyph glyph-name="uni0439" unicode="&#x439;" horiz-adv-x="708"
d="M6 621q0 16 6 23t21 5q35 -2 67.5 0t67.5 -2q22 -2 20 -23v-35.5v-61.5t0.5 -73.5t1 -71t1.5 -53.5t2 -21q11 0 15 6q14 17 26.5 34l25.5 34l45.5 65l45.5 65l39.5 55l39.5 56q5 7 8.5 11t9 6.5t13 3t21.5 0.5h78q16 0 24 -0.5t12 -3.5t4.5 -10.5t1.5 -20.5
q1 -25 1.5 -73t0.5 -106.5v-121t-0.5 -115t-0.5 -89.5v-45q0 -12 0.5 -20.5t-1.5 -20.5q-2 -13 -7 -17t-19 -3q-26 2 -52.5 0.5t-52.5 0.5q-9 1 -21.5 0t-15.5 2t-2 19t0 27q0 44 0.5 79t-0.5 79q0 23 -0.5 46.5t-1.5 46.5q0 7 -4 10q-4 2 -9 -3q-4 -4 -10 -12l-79 -103.5
l-79 -103.5q-14 -20 -28.5 -37t-28.5 -37q-10 -15 -29 -15q-35 2 -69.5 1t-69.5 1q-8 0 -10.5 4t-3.5 11v13.5t-1 13.5q0 70 -0.5 139.5t-1.5 140.5q-1 0 -1 21v52.5v69v71v57.5v29zM308 710q-15 0 -29 6t-24 15.5t-16 21.5t-5 25q2 29 25 48.5t55 18.5q65 -1 68 -72
q1 -12 -5.5 -23.5t-17 -20.5t-24 -14t-27.5 -5z" />
<glyph glyph-name="uni043A" unicode="&#x43a;" horiz-adv-x="677"
d="M7 611q0 15 4 19.5t18 3.5q24 0 45 -1t46 -2q5 -1 11 -1h12q20 0 24 -3.5t5 -23.5q2 -32 2.5 -64t1.5 -64q1 -6 0 -11.5t0 -11.5l2 -10.5t3 -10.5q5 2 9 4.5t7 5.5l89 86.5l88 87.5q11 10 22 16.5t25 5.5q38 -1 75.5 -1.5t75.5 -1.5q3 0 7 -3t5 -5q1 -3 -1 -7.5t-4 -6.5
l-76 -77.5l-76 -77.5q-14 -14 -28.5 -26.5t-28.5 -26.5q-14 -13 -14.5 -18t9.5 -21l41.5 -67.5l42.5 -67.5l61 -96.5l61 -96.5q8 -12 3.5 -22t-18.5 -12q-5 -1 -11 -1h-12q-21 -1 -42.5 -1t-42.5 -2q-23 -2 -39.5 6.5t-29.5 26.5q-14 20 -31 47t-31 47l-42 60.5l-42 60.5
q-8 12 -13.5 12.5t-16.5 -9.5q-20 -16 -19 -44q2 -45 2.5 -89t1.5 -89q1 -20 -3.5 -25.5t-23.5 -5.5q-30 0 -64.5 1t-64.5 3q-23 1 -24 25q-1 18 -1 63v103.5v124v124.5v105v65z" />
<glyph glyph-name="uni043B" unicode="&#x43b;" horiz-adv-x="750"
d="M635 356q0 -48 -0.5 -95t0.5 -95q1 -42 2 -76t3 -76q1 -17 -13 -17q-35 1 -70 1.5t-70 1.5q-10 0 -12 5t-2 13v54.5t-1 55.5l-3 213q-1 25 0 50t0 51q0 11 -1 17.5t-4.5 9.5t-10 4t-18.5 2h-8q-10 0 -15.5 -0.5t-9 -2.5t-6 -7.5t-5.5 -14.5l-23.5 -84t-25.5 -83
q-15 -45 -32 -89.5t-39 -86.5q-12 -23 -31.5 -42.5l-39.5 -38.5q-17 -17 -39 -23.5t-46 -7.5q-33 -2 -64 5t-61 18q-14 5 -17.5 11.5t-1.5 21.5q6 29 11.5 59t12.5 59q4 21 25 15l9 -3.5l9 -3.5q31 -11 59.5 -2.5t46.5 35.5q8 12 14.5 25t10.5 27l27 91.5t24 91.5
q11 42 19 85t17 85q3 17 7.5 21.5t21.5 6.5q4 0 8 0.5t7 -0.5q17 0 43 0.5t56.5 0.5h62.5h61h52h35q18 -1 21.5 -5t3.5 -23q0 -47 -0.5 -93t-1.5 -93v-21.5t0.5 -24t1 -20z" />
<glyph glyph-name="uni043C" unicode="&#x43c;" horiz-adv-x="979"
d="M5 622q0 12 3.5 16t16.5 5q15 1 40.5 1t51 -1t45 -1t24.5 1q18 4 25 -12q28 -58 52.5 -103l47 -84.5l44.5 -77.5l45 -81q8 -15 17 -26q7 -11 15 0l102 165l23.5 40l31.5 56l29 53.5l17 32.5q16 36 55 33q30 -2 60 -2.5t60 -1.5q10 0 19 -3q8 -2 13 -6.5t5 -14.5
q0 -41 1 -81.5l2 -81.5q2 -66 2.5 -132t2.5 -132l2 -81l2 -82q1 -18 -7 -25t-25 -6l-105 3q-12 0 -19 1t-10 4t-3.5 9t-0.5 18q0 68 -0.5 131.5t-0.5 132.5v9.5t-1 9.5t-1.5 11t-4.5 6q-3 1 -9.5 -7.5t-8.5 -10.5l-85.5 -128.5t-78.5 -131.5q-2 -3 -3.5 -6.5t-3.5 -6.5
q-10 -16 -15 -25t-11 -12.5t-16 -4t-30 -0.5q-30 1 -59 0q-26 -3 -34 23l-5.5 15t-5.5 14q-11 25 -22 46t-22 46l-16.5 35.5l-16.5 35.5q-6 13 -11.5 26.5t-12.5 26.5q-5 11 -13.5 26t-12.5 15q-1 0 -1.5 -14.5t-0.5 -38v-53.5t0.5 -60l1 -57.5t0.5 -47.5v-11t-1 -12
q-3 -21 -24 -19q-32 1 -63.5 0t-63.5 1q-18 1 -22.5 5.5t-5.5 21.5q-1 29 -1 53t-1 53q-1 39 -1.5 77.5t-0.5 77.5q0 13 0.5 25.5t0.5 24.5v15v39.5v56v64.5t-0.5 64t-0.5 56z" />
<glyph glyph-name="uni043D" unicode="&#x43d;" horiz-adv-x="667"
d="M554 94q1 -26 1.5 -41.5t0.5 -41.5q0 -11 -4.5 -14.5t-17.5 -2.5q-29 1 -58 1.5t-58 0.5q-17 0 -20.5 3t-4.5 20q-2 47 -4.5 96t-4.5 96v11t-1 12q0 12 -15 14q-40 2 -79.5 0.5t-78.5 0.5q-20 1 -18 -19q1 -49 -1 -95t0 -99q1 -7 1.5 -13.5t-0.5 -13.5q0 -14 -14 -14
q-10 0 -19.5 0.5t-19.5 1.5q-27 2 -54 0.5t-54 0.5q-18 2 -23 6.5t-5 21.5q0 56 -1 104.5t0 104.5q1 89 2.5 176.5t3.5 176.5v31q0 19 19 19q14 0 28.5 0.5t29.5 -0.5q20 -1 38.5 -1.5t38.5 -2.5t24.5 -5.5t4.5 -23.5q1 -48 1 -85.5t-1 -84.5q0 -18 0.5 -28.5t5 -15.5
t14.5 -6t28 -1q32 0 62.5 1.5t61.5 2.5q20 0 20 17q-1 5 -0.5 10t0.5 10q-2 54 -3 98t-3 98q-2 16 12 16h123q11 0 16 -1q15 -2 19.5 -6.5t5.5 -20.5q3 -72 3 -143q0 -39 -1 -77.5l-2 -77.5v-24v-57.5t0.5 -71t0.5 -64.5z" />
<glyph glyph-name="uni043E" unicode="&#x43e;"
d="M654 323q-2 -46 -20 -97.5t-51 -101.5q-35 -51 -83 -82t-103 -52q-16 -6 -34.5 -10t-37.5 -5.5t-37.5 -0.5t-34.5 5q-18 4 -46 15.5t-60 29t-64 41.5t-58 54q-23 27 -34.5 59.5t-13.5 68.5q-3 54 4.5 106t30.5 102q12 26 32 54.5t51 54.5t74 48t102 36q29 6 65.5 5
t74.5 -11q28 -7 56.5 -22t53.5 -33t44 -36.5t30 -32.5q31 -40 44.5 -86t14.5 -109zM302 154q27 -1 48.5 2.5t41.5 14.5q51 32 73 79t11 106q-5 29 -20.5 53t-38.5 41t-50.5 25t-56.5 4t-55.5 -12.5t-45.5 -31.5q-37 -42 -51 -91.5t1 -106.5q3 -10 10.5 -20t15.5 -17
q27 -22 56.5 -35t60.5 -11z" />
<glyph glyph-name="uni043F" unicode="&#x43f;" horiz-adv-x="688"
d="M561 353q-2 -58 -3 -115l-2 -114q-1 -26 0.5 -47.5t2.5 -47.5q0 -15 -3.5 -19.5t-17.5 -5.5l-65.5 -4t-65.5 -3q-19 -1 -19 23q0 38 0.5 70.5t0.5 70.5q0 63 0.5 124.5t-0.5 123.5q0 27 -1 39t-6 16.5t-17 4t-34 0.5q-29 1 -58 1.5t-58 -0.5q-19 0 -23.5 -4.5t-4.5 -21.5
v-175q1 -58 1.5 -116t1.5 -116q0 -5 -1 -8q-1 -13 -2 -20t-5 -10t-11 -3.5t-20 -0.5q-28 1 -56 1.5t-56 3.5q-22 2 -27 8.5t-5 28.5v450v133q0 14 3 16t18 1q48 -2 94.5 -1.5t94.5 0.5q66 -1 129 2t127 0q16 0 31 -0.5t31 -0.5q15 0 18.5 -3t3.5 -18v-93q0 -21 0.5 -50
l1 -56t1.5 -45.5z" />
<glyph glyph-name="uni0440" unicode="&#x440;" horiz-adv-x="615"
d="M6 483q1 36 1.5 63.5t1.5 62.5q0 10 0.5 16t3.5 9t8.5 4t15.5 2q8 1 15.5 0.5t15.5 -0.5q11 0 23 0.5t23 0.5q7 0 23 0.5t34 2t34.5 2t23.5 0.5q20 -2 39 -3.5t38 -3.5q45 -5 81.5 -25t70.5 -47q5 -4 8.5 -8t8.5 -9q24 -22 35.5 -43.5t13.5 -44.5t-3 -48t-14 -55
q-21 -67 -60 -104t-102 -56q-35 -11 -70.5 -13t-72.5 0q-23 2 -28 -2.5t-6 -27.5q-1 -34 -0.5 -68t0.5 -68q0 -20 -5 -25t-26 -4l-55.5 2l-56.5 2q-19 1 -20 23q-1 27 -1 54v54v202v17v41t0.5 50.5t1.5 46.5zM230 495q-8 0 -17 -0.5t-17 -0.5q-9 -1 -14.5 -4.5t-6.5 -13.5
q0 -29 -0.5 -60t-1.5 -60q0 -15 16 -17q36 -4 70 0.5t66 21.5q18 10 28 26q8 12 10 28.5t-3 31.5t-16 26.5t-29 14.5q-11 2 -25 3.5t-27.5 2.5t-23 1h-9.5z" />
<glyph glyph-name="uni0441" unicode="&#x441;" horiz-adv-x="688"
d="M-20 334q0 53 15.5 96.5t40.5 77t55.5 59t61 42.5t57 27t42.5 13q94 20 179 -19q19 -8 37.5 -19.5l35.5 -22.5q11 -6 10.5 -10.5t-9.5 -13.5l-45.5 -41.5l-45.5 -41.5q-14 -13 -32 -6q-30 11 -58 9q-18 -1 -44.5 -11t-51 -30t-42 -51.5t-17.5 -75.5q0 -53 23 -84.5
t54 -47.5t62.5 -19.5t49.5 -0.5q32 5 57 22.5t45 43.5l9 10.5t6 4.5t7 -1.5t11 -7.5l39 -25t39 -26q14 -10 16 -16.5t-5 -21.5q-15 -34 -39 -60t-55 -46q-36 -23 -74.5 -39.5t-83.5 -18.5q-92 0 -153.5 26t-100.5 65t-58.5 84.5t-28 84.5t-9 65z" />
<glyph glyph-name="uni0442" unicode="&#x442;" horiz-adv-x="615"
d="M468 637q7 -1 13.5 -1t13.5 -2q20 -3 25 -8t5 -26q0 -26 -0.5 -47t-1.5 -47q-1 -17 -5 -21t-20 -3q-12 0 -30.5 -0.5t-36.5 -0.5t-32.5 -0.5t-17.5 -0.5q-15 0 -23.5 -1t-12 -5t-4 -12t0.5 -23v-32.5t-1 -75.5t-1.5 -97.5t-1.5 -97.5t-1.5 -75t-0.5 -31q-3 -30 -32 -31
h-21.5h-26t-22.5 0.5t-12 0.5q-16 0 -25 0.5t-13 4.5t-5 12.5t-1 24.5v33t0.5 60t1 77l1 83t0.5 77.5v61.5v27q1 17 -19 19q-13 0 -34 1t-41.5 1.5t-37 1.5t-19.5 1q-15 1 -20 6t-5 20v39t1 39v12q0 9 -1 19t4 16q3 5 13.5 3.5t19.5 -1.5q13 0 46.5 0.5t76.5 0.5t91 -0.5
t91 -0.5t76 -0.5t45 -0.5z" />
<glyph glyph-name="uni0443" unicode="&#x443;"
d="M159 641q14 0 22 -1.5t11.5 -5t3.5 -11t-2 -19.5q-5 -29 -0.5 -56t12.5 -54q16 -53 53 -81t84 -45q13 -5 17.5 -2t11.5 18l24 59l23 60l21 56l21 56q5 18 21 18l70 2t70 0q23 0 30 -9t-1 -32q-21 -62 -45 -120q-35 -94 -79 -181.5t-94 -173.5q-16 -28 -38 -49t-49 -38
q-28 -17 -57.5 -30.5t-64.5 -16.5q-20 -1 -40 -0.5t-40 7.5q-28 9 -55.5 17t-52.5 25q-15 10 -16.5 14.5t5.5 22.5q10 28 18.5 55.5t19.5 54.5q8 22 18.5 24.5t30.5 -11.5q11 -8 22.5 -14.5t24.5 -11.5q38 -14 74 2t57 47q11 14 -7 20l-39 16l-39 16q-38 17 -68.5 42.5
t-56.5 54.5q-27 31 -40.5 68t-20.5 77q-5 29 -8 54.5t-6 55.5q-1 14 2 17.5t17 3.5h28.5h40.5t39.5 -0.5t26.5 -0.5z" />
<glyph glyph-name="uni0444" unicode="&#x444;" horiz-adv-x="812"
d="M457 646q4 -3 5 -14t1.5 -24t0.5 -23.5t2 -12.5q2 -5 7.5 -6l10.5 -2q88 -8 144 -38t76 -71q19 -41 30 -84q16 -66 -4 -121.5t-61 -103.5q-29 -35 -70 -53.5t-87 -24.5q-17 -3 -25.5 -5t-13 -6.5t-5 -13.5t-0.5 -25v-16q0 -18 -19 -21q-33 -3 -65.5 -3.5t-65.5 6.5
q-20 3 -20 23q-1 14 -2.5 28.5t-2.5 28.5q-14 3 -28 5.5t-28 5.5q-20 5 -39.5 9t-39.5 10q-26 9 -50.5 23t-45 35t-34.5 49t-20 64q-10 57 4.5 107.5t45.5 97.5q17 25 40 42t51 28q29 12 60.5 19t63.5 8q10 0 16 1t8.5 4t3 9.5t0.5 17.5v15q-3 27 5.5 33.5t33.5 8.5
q6 1 23.5 0.5t37 -1.5t36 -3.5t20.5 -5.5zM298 337h1q0 17 0.5 33t0.5 33q-1 17 -4 22t-21 3q-9 0 -26.5 -8.5t-34.5 -23t-29.5 -33.5t-11.5 -41q1 -32 13.5 -53.5t28 -34.5t32 -18t27.5 -5q9 1 15.5 3t7.5 16q0 27 0.5 53.5t0.5 53.5zM462 225q0 -17 15 -14q24 5 45.5 14.5
t35.5 29.5q20 26 21.5 56t-9.5 61q-11 26 -32 35t-44 14q-2 0 -8 2q-14 2 -18 -0.5t-5 -16.5q0 -11 -0.5 -36t-0.5 -53.5v-54v-37.5z" />
<glyph glyph-name="uni0445" unicode="&#x445;" horiz-adv-x="770"
d="M649 -3q-47 -2 -90.5 -1t-89.5 -1q-11 0 -17 4t-11 12q-14 18 -27.5 39t-27.5 40l-22.5 30.5l-22.5 30.5q-14 19 -19 19t-18 -19l-31.5 -47l-31.5 -48l-8 -10.5t-7 -11.5q-26 -54 -88 -48q-32 -1 -54.5 0t-48.5 1q-10 0 -22 5q-12 3 -5 15l48.5 73l48.5 73l49 75l50 74
q8 11 7 19.5t-8 17.5l-44.5 62.5l-43.5 62.5l-49.5 74l-49.5 74q-2 5 -4 9t-4 9q-3 12 10 12q41 1 81.5 1.5t81.5 1.5q8 0 12 -3.5t8 -9.5l50 -69.5l50 -69.5q2 -3 5 -6t5 -6q11 -14 21 0q5 8 10.5 15.5l11.5 15.5l38 54t37 56q15 21 38 21q33 0 66 0.5t67 1.5q9 0 12 -5
t2 -13q-3 -12 -10 -24l-55.5 -85l-54.5 -84l-28 -45.5l-29 -44.5q-6 -9 -3.5 -14.5t7.5 -12.5l48.5 -60.5l48.5 -61.5l54 -73.5l53 -74.5q5 -7 9 -14t8 -15q6 -12 3 -16.5t-16 -4.5z" />
<glyph glyph-name="uni0446" unicode="&#x446;"
d="M6 611q-1 16 2.5 20t20.5 7q4 0 19.5 0.5t35.5 0.5t40 -0.5t32 -0.5q11 0 14.5 -4.5t3.5 -14.5q1 -28 1.5 -68t0.5 -85t-0.5 -90.5t-0.5 -84.5t-0.5 -67.5t0.5 -38.5q0 -22 24 -22h73.5t73.5 -1q20 0 18 20q-1 16 -1 47.5v72t-0.5 85.5t-0.5 87t-1 77.5t-2 56.5v10t1 10
q3 15 19 15q30 -2 60 -2.5t60 -2.5q16 -2 19.5 -5.5t4.5 -20.5q1 -24 2 -58t1.5 -73t0.5 -78.5t0.5 -73.5t0.5 -59v-34q1 -11 1 -21.5t1 -21.5q1 -17 2 -25.5t5.5 -13t13 -5.5t25.5 -1q3 0 6 0.5t5 -0.5q18 -1 27 -2t12 -5t3 -12t1 -21q4 -43 5 -83t0 -87q0 -15 -6 -23.5
t-21 -9.5q-26 0 -49 0.5t-49 -0.5q-22 0 -25 20q-2 14 -1 28.5t-1 28.5q-2 17 -17 18q-9 1 -19 1.5t-19 -1.5q-17 0 -46 -0.5t-63.5 -0.5t-71 -1t-69 -1t-58 -0.5t-37.5 -0.5h-31q-10 1 -21 0.5t-18 4.5q-5 4 -4.5 15t-0.5 21q-3 97 1 192t0 192l-2 68q-1 29 -1 61.5v60.5z
" />
<glyph glyph-name="uni0447" unicode="&#x447;" horiz-adv-x="656"
d="M550 471q-1 -107 -0.5 -213t-0.5 -213q0 -11 -0.5 -16.5l-1.5 -16.5q-2 -14 -6.5 -18t-18.5 -3q-30 2 -60 0t-60 2q-26 3 -26 36v117q0 14 -1 28.5l-2 29.5q-1 17 -17 9q-5 -2 -10.5 -5.5t-10.5 -5.5l-41.5 -16t-41.5 -14q-52 -14 -96.5 0t-85.5 44q-24 18 -39.5 42.5
t-17.5 55.5l-4 67.5t-3 68.5v43t0.5 39l1 39t0.5 43q0 22 20 22q5 0 21.5 0.5t36.5 0.5h39h30q12 -1 19 -2t10 -4t3.5 -9.5t0.5 -17.5q-1 -42 -2.5 -74.5t-2.5 -73.5q0 -17 1 -33t5 -33q5 -24 21 -38.5t45 -14.5q50 -1 90 29q14 11 21.5 23.5t7.5 32.5q-2 48 -1 93t1 93v8
q1 17 5.5 22t21.5 5h19h33.5h36h28.5q20 1 25 -5t7 -26q1 -17 1 -41.5v-46.5t-0.5 -37.5z" />
<glyph glyph-name="uni0448" unicode="&#x448;" horiz-adv-x="969"
d="M255 -2q-51 1 -101 1.5t-101 1.5q-10 0 -15 1q-17 2 -22.5 8.5t-5.5 23.5q-2 69 -1 136t0 136q-1 55 -0.5 110t0.5 111q1 23 0 37t-2 37q0 7 1 13t2 13q5 15 20 14q10 -1 26 -1.5t32.5 -0.5t30 0.5t16.5 0.5q13 1 21 0t12.5 -4.5t6.5 -11t3 -20.5q5 -62 4 -118t1 -119
q1 -42 -1 -86t0 -86q1 -14 4.5 -17.5t18.5 -4.5q25 -2 54 -0.5t53 0.5t29 3.5t4 27.5q0 38 -1 75.5t-1 75.5q0 54 0.5 106.5t0.5 106.5q0 16 1 26.5t-1 26.5q-2 20 16 20q34 -2 65.5 0t65.5 -1q14 -2 18 -7t4 -22q1 -87 1 -172.5v-172.5q0 -19 0.5 -37.5t1.5 -36.5
q1 -14 5.5 -18t18.5 -4q27 -1 54 -0.5t55 0.5q17 0 17 16v55q-1 41 -0.5 81t-1.5 82q-2 50 -2.5 98.5t-2.5 98.5q0 4 -0.5 7.5t-0.5 8.5q0 11 4.5 15.5t16.5 4.5h60t61 -1q11 -1 17 -6t7 -22q3 -97 4.5 -193.5t-3.5 -194.5q-2 -45 -0.5 -87.5t1.5 -87.5q0 -31 -8.5 -39
t-38.5 -8q-17 0 -59.5 -0.5t-97 -0.5h-115.5h-113.5t-90.5 0.5t-48 0.5z" />
<glyph glyph-name="uni0449" unicode="&#x449;" horiz-adv-x="1083"
d="M340 617q0 15 3 19.5t18 4.5q30 1 60 0.5t60 -1.5q17 0 17 -20q0 -44 0.5 -84t-0.5 -84q0 -66 -0.5 -132t-0.5 -132q-1 -17 2.5 -21t20.5 -5q29 -1 58.5 -1h58.5q13 0 20 1t10.5 4.5t4 10.5t0.5 19q0 42 -0.5 83.5t-0.5 83.5q-1 61 -1 122v122q0 11 0.5 17.5t3.5 10
t9 4.5t17 1q30 1 60 -0.5t60 -3.5q12 0 14 -15q2 -20 3.5 -40.5t1.5 -40.5q1 -80 0 -159t2 -159l1.5 -41t5.5 -17.5t17 -4t36 -0.5l36.5 -2t36.5 -3q19 -2 20 -19q0 -7 1.5 -13.5t2.5 -13.5q2 -47 2.5 -93t2.5 -93q0 -6 -1 -11.5l-2 -11.5q-3 -18 -21 -18q-27 1 -54 1t-54 1
q-19 0 -24 5t-7 23q-5 33 -6 66q-1 11 -5.5 16t-15.5 5q-20 0 -39 0.5t-39 0.5q-105 1 -209 1.5t-210 1.5q-67 0 -133.5 0.5t-133.5 0.5h-12t-11 2q-11 2 -17 9t-3 18q-2 21 -2 39v34.5t0.5 32.5t0.5 33q-2 52 0 103t-1 103q-4 60 -3.5 113.5t1.5 113.5v16q1 17 4.5 21
t20.5 3q17 0 34.5 -1t34.5 -1q15 -1 29.5 -1.5t28.5 0.5q19 0 19 -18q-1 -23 -1.5 -40t-0.5 -40q1 -69 1.5 -138t0.5 -138q1 -17 0.5 -33t-0.5 -33q0 -21 3 -25.5t23 -5.5l52.5 -4t52.5 -2q15 0 22.5 1t10.5 4.5t3.5 11t0.5 20.5q-1 52 -1 104t-1 105l0.5 22.5t0.5 54.5
v67.5v62.5z" />
<glyph glyph-name="uni044A" unicode="&#x44a;" horiz-adv-x="667"
d="M76 324q-1 39 0.5 77.5t-0.5 77.5q-2 18 -6 21.5t-23 4.5q-23 1 -37.5 0t-23 3t-11 16t-1.5 39q1 14 0 27t-1 27q1 14 5 18.5t18 5.5h37.5t63.5 -0.5l69 -1t54 -1.5q3 1 9.5 1t12.5 -2.5t10.5 -8.5t4.5 -16v-28v-39v-42v-38q0 -22 20 -22q37 0 73 -3q51 -5 94 -24.5
t76 -58.5q32 -38 41 -81t-2 -91q-14 -60 -50.5 -100t-94.5 -63q-41 -16 -81.5 -19t-82.5 -5q-37 -2 -74 0l-74 4q-18 1 -21 4t-3 20q-1 48 -1.5 95t-1.5 95v12v28.5t0.5 35t0.5 32.5zM302 136q7 1 16.5 1.5t19.5 2.5q8 2 16.5 6t13.5 10q19 20 25.5 43t-2.5 50
q-15 49 -65 58q-21 4 -42 6q-17 2 -21.5 -2t-4.5 -22q-2 -66 0 -132q0 -14 3.5 -17t19.5 -4h21z" />
<glyph glyph-name="uni044B" unicode="&#x44b;" horiz-adv-x="823"
d="M7 283q1 36 1.5 89l1 104t0.5 90v48q-1 18 3 22t23 5h23t40 -0.5l43 -1t32 -0.5q16 -1 19 -3t5 -18q2 -34 0.5 -67.5t0.5 -67.5q0 -13 1 -20.5t4 -11t10 -5t21 -3.5q10 -1 19.5 -1t19.5 -2q60 -10 105 -41t72 -88q18 -38 23 -77t-7 -81q-11 -40 -36 -74.5t-66 -50.5
q-42 -17 -81.5 -20.5l-83.5 -7.5q-5 0 -24 -0.5t-44 -0.5t-50 -0.5t-40 -1.5q-23 -1 -28.5 4.5t-5.5 28.5q0 66 -0.5 130.5t-0.5 122.5zM194 167q0 -8 3 -13.5t11 -5.5q10 0 24.5 0.5t28.5 3.5t26.5 7.5t20.5 12.5t12.5 20t6 25t-0.5 26t-7 23t-18.5 18.5t-29.5 14t-33 8
t-29 1.5q-14 -2 -15 -14v-127zM543 615q0 14 3.5 19.5t17.5 4.5h62t62 -2q17 -1 20.5 -5.5t3.5 -22.5q2 -42 2.5 -79t0.5 -79v-194t-2 -194q0 -30 0.5 -43.5t-5 -18t-20 -3.5t-44.5 1q-19 -1 -37 0t-37 1q-18 0 -24 5t-6 24v150.5t-1 151.5l1 30.5t1.5 74.5t1 93t0.5 86z
" />
<glyph glyph-name="uni044C" unicode="&#x44c;" horiz-adv-x="593"
d="M146 -2q-30 1 -52.5 1.5t-42.5 1.5q-16 0 -31 3q-7 2 -11.5 6.5t-2.5 12.5q0 48 -0.5 98t0.5 99v61.5v77v81.5v76v60v34q0 5 -0.5 9.5t0.5 9.5q3 20 24 20q30 -2 60 -3t60 -3q14 -1 22 -2t11.5 -5t4.5 -12t1 -22q1 -34 0.5 -59.5t1.5 -59.5q0 -18 3 -22t20 -5
q22 -2 49 -1.5t49 -1.5q84 -6 142 -64q48 -49 54 -122q5 -83 -38 -156q-22 -36 -53 -60.5t-73 -35.5q-52 -14 -103 -18t-95 1zM191 251q2 -10 2 -29q0 -9 0.5 -18.5t0.5 -19.5q1 -26 6.5 -32t31.5 -4q15 1 30 6q14 4 28 10t25.5 16t18.5 23.5t7 33.5q0 19 -8 31t-21.5 19.5
t-30 10.5t-34.5 5q-1 1 -4 1q-19 2 -29.5 2t-15.5 -5t-6 -16.5t-1 -33.5z" />
<glyph glyph-name="uni044D" unicode="&#x44d;"
d="M624 300q1 -40 -9 -80.5t-31 -78.5t-54 -62q-34 -25 -68.5 -44.5t-75.5 -32.5q-73 -23 -141.5 -11.5t-135.5 40.5q-52 22 -95 62q-5 5 -8.5 9.5t-0.5 12.5l27 65.5l27 64.5q5 13 17 19q18 9 34 -7q14 -14 29 -27t32 -24q49 -33 100 -32.5t103 23.5q41 18 55 64
q6 20 -14 20h-30t-51 -0.5t-51 -0.5h-31h-17t-17 1q-20 0 -20 21q0 11 -2 21t-2 21q-1 21 6.5 28.5t28.5 8.5q9 0 34.5 0.5t55 0.5t55 0.5t34.5 0.5q14 2 16 5.5t-2 16.5q-10 29 -32.5 44t-49.5 23q-92 26 -173 -18q-17 -9 -24.5 -5.5t-15.5 16.5l-24.5 39l-23.5 39
q-3 5 -6 9.5t-7 8.5q-10 12 -9.5 16t11.5 14q78 66 178 69q61 3 121 -6q56 -8 99.5 -37.5t78.5 -71.5q44 -52 64 -112.5t15 -132.5z" />
<glyph glyph-name="uni044E" unicode="&#x44e;" horiz-adv-x="969"
d="M184 23q-1 -16 -5 -20.5t-19 -4.5q-29 1 -59 1t-59 2q-13 0 -20 1t-10 4.5t-3.5 10t-0.5 18.5q-2 79 -0.5 157t-0.5 157q-1 32 -1.5 64.5t1.5 64.5q2 37 2 70.5t-2 71.5q-1 14 1.5 18t13.5 4q36 0 69 -0.5t69 -0.5q16 -2 16 -17q1 -14 1 -27v-27q1 -37 0 -70.5t1 -71.5
q0 -19 3.5 -22t21.5 -5q14 -1 27 -0.5t26 -0.5q17 -1 23 16q5 11 9.5 22.5t9.5 22.5q34 78 95 121t142 61q66 15 123 -1.5t107 -58.5q35 -31 60.5 -69t37.5 -86q9 -36 15 -72t2 -74q-5 -44 -17 -83.5t-38 -76.5q-19 -26 -40 -50t-49 -41q-53 -32 -109.5 -41.5t-117.5 -6.5
q-42 3 -79 18t-72 38q-33 22 -52.5 54t-30.5 69q-7 22 -11.5 44l-9.5 45q-4 17 -20 18q-18 1 -28 0t-15.5 -6.5t-7 -15.5t-1.5 -28q0 -11 0.5 -38t0.5 -57.5t0.5 -59t0.5 -41.5zM442 324q0 -6 -0.5 -12t-0.5 -11q0 -34 15 -59.5t36.5 -43t44.5 -26t38 -8.5q72 0 111 47.5
t39 125.5q0 12 -2 33.5t-13.5 44t-34.5 41t-65 26.5q-61 10 -104.5 -22t-59.5 -90q-2 -6 -2.5 -13.5l-1 -15t-0.5 -12.5v-5z" />
<glyph glyph-name="uni044F" unicode="&#x44f;" horiz-adv-x="688"
d="M571 34v-23q-2 -20 -21 -18h-127q-18 1 -24 7t-6 23v54.5t1 54.5q0 17 0.5 34.5t0.5 35.5q0 15 -3.5 18t-18.5 5q-30 6 -46 -20l-57.5 -85t-55.5 -86q-7 -12 -12.5 -19.5t-13 -12.5t-19.5 -7t-31 -2h-34t-38 1q-21 0 -44 1q-6 2 -10 5q-8 6 -1 16q14 20 30 39.5t31 40.5
l48 67.5l48 68.5q9 14 8.5 18.5t-14.5 10.5q-35 16 -55 43.5t-34 60.5q-14 35 -18.5 70.5t6.5 73.5q5 18 16 32.5t25 26.5q49 41 113 57q45 11 87 11.5t82 1.5q17 -1 42.5 -1t49 0.5t40.5 0.5h19q21 -3 28 -11t7 -29v-48v-87t0.5 -111t0.5 -119v-111.5v-87.5zM407 438
q-1 4 -1 12.5t-1 17.5q-2 15 -14 16q-15 1 -43.5 2.5t-56 -1t-48.5 -12t-22 -30.5q-1 -37 17 -53.5t41 -21.5t44.5 -3.5t29.5 0.5q22 -2 32.5 1t14.5 11t4.5 23t2.5 38z" />
<glyph glyph-name="A" unicode="A" horiz-adv-x="708"
d="M436 638q18 1 23.5 -3t9.5 -21q8 -33 14.5 -64t14.5 -64l34 -142l34 -141l15.5 -64.5l15.5 -64.5l6 -25.5l6 -24.5q6 -23 -16 -27h-7q-36 -2 -72 -0.5t-71 -0.5q-15 0 -18.5 5t-5.5 22q-3 44 -16 88q-2 10 -8.5 11t-11.5 1q-36 1 -72 0l-71 -2q-8 0 -12 -4t-6 -11
q-6 -23 -12.5 -43t-12.5 -43q-3 -11 -7.5 -15.5t-18.5 -4.5h-31h-50t-47.5 0.5t-22.5 0.5q-24 2 -16 25l20 60l21 59l42 133.5l43 133.5l17 56l19.5 64l16.5 53t8 24q3 10 4.5 16t5 9t11 4t21.5 1q12 0 40.5 -0.5t60 -0.5h60.5h42zM361 243q16 1 12 17l-16.5 71l-16.5 71
q-1 3 -3 6.5t-6 3.5t-4.5 -3t-1.5 -5l-22 -64.5l-22 -64.5q-5 -15 -7 -22.5t0.5 -10.5t10 -3h21.5l6.5 0.5t15 1t18 1t15.5 1.5z" />
<glyph glyph-name="a" unicode="a" horiz-adv-x="708"
d="M436 638q18 1 23.5 -3t9.5 -21q8 -33 14.5 -64t14.5 -64l34 -142l34 -141l15.5 -64.5l15.5 -64.5l6 -25.5l6 -24.5q6 -23 -16 -27h-7q-36 -2 -72 -0.5t-71 -0.5q-15 0 -18.5 5t-5.5 22q-3 44 -16 88q-2 10 -8.5 11t-11.5 1q-36 1 -72 0l-71 -2q-8 0 -12 -4t-6 -11
q-6 -23 -12.5 -43t-12.5 -43q-3 -11 -7.5 -15.5t-18.5 -4.5h-31h-50t-47.5 0.5t-22.5 0.5q-24 2 -16 25l20 60l21 59l42 133.5l43 133.5l17 56l19.5 64l16.5 53t8 24q3 10 4.5 16t5 9t11 4t21.5 1q12 0 40.5 -0.5t60 -0.5h60.5h42zM361 243q16 1 12 17l-16.5 71l-16.5 71
q-1 3 -3 6.5t-6 3.5t-4.5 -3t-1.5 -5l-22 -64.5l-22 -64.5q-5 -15 -7 -22.5t0.5 -10.5t10 -3h21.5l6.5 0.5t15 1t18 1t15.5 1.5z" />
<glyph glyph-name="B" unicode="B" horiz-adv-x="636"
d="M3 604q0 14 5 21t19 10q8 1 16 1h16q37 -2 75 0q51 1 101.5 -1.5t101.5 -8.5q31 -4 54.5 -18t42.5 -37q6 -7 10.5 -19.5t8.5 -25.5t6.5 -23t2.5 -11q4 -35 -9.5 -64.5t-36.5 -54.5q-9 -10 -8 -12.5t14 -8.5l27.5 -13.5t25.5 -15.5q46 -36 48 -96q1 -89 -54 -163
q-8 -11 -20.5 -19.5l-24.5 -16.5q-18 -12 -38.5 -18t-42.5 -8q-17 -1 -44 -1.5t-58.5 -0.5h-64.5t-61.5 0.5t-49.5 1t-29 0.5q-20 1 -26.5 8.5t-6.5 27.5v283l0.5 31t0.5 75t-0.5 92.5t-0.5 84.5zM171 140q0 -18 17 -17q12 1 24 0.5t23 1.5q20 4 39 10.5t35 21.5
q23 23 19.5 48.5t-32.5 39.5q-26 11 -54.5 14.5t-57.5 2.5q-16 0 -16 -19q0 -6 0.5 -20.5l1 -30.5l1 -30.5t0.5 -21.5zM170 424q0 -19 16 -18q17 1 34 1.5t34 2.5q15 3 28 10.5t16 25.5q8 37 -21 57q-34 25 -77 24q-20 0 -24 -4t-5 -24v-13t-0.5 -22t-0.5 -23v-17z" />
<glyph glyph-name="b" unicode="b" horiz-adv-x="636"
d="M3 604q0 14 5 21t19 10q8 1 16 1h16q37 -2 75 0q51 1 101.5 -1.5t101.5 -8.5q31 -4 54.5 -18t42.5 -37q6 -7 10.5 -19.5t8.5 -25.5t6.5 -23t2.5 -11q4 -35 -9.5 -64.5t-36.5 -54.5q-9 -10 -8 -12.5t14 -8.5l27.5 -13.5t25.5 -15.5q46 -36 48 -96q1 -89 -54 -163
q-8 -11 -20.5 -19.5l-24.5 -16.5q-18 -12 -38.5 -18t-42.5 -8q-17 -1 -44 -1.5t-58.5 -0.5h-64.5t-61.5 0.5t-49.5 1t-29 0.5q-20 1 -26.5 8.5t-6.5 27.5v283l0.5 31t0.5 75t-0.5 92.5t-0.5 84.5zM171 140q0 -18 17 -17q12 1 24 0.5t23 1.5q20 4 39 10.5t35 21.5
q23 23 19.5 48.5t-32.5 39.5q-26 11 -54.5 14.5t-57.5 2.5q-16 0 -16 -19q0 -6 0.5 -20.5l1 -30.5l1 -30.5t0.5 -21.5zM170 424q0 -19 16 -18q17 1 34 1.5t34 2.5q15 3 28 10.5t16 25.5q8 37 -21 57q-34 25 -77 24q-20 0 -24 -4t-5 -24v-13t-0.5 -22t-0.5 -23v-17z" />
<glyph glyph-name="C" unicode="C" horiz-adv-x="687"
d="M-17 288q0 64 16 120.5t47 108.5q14 23 32.5 40.5t41.5 31.5q55 34 114 49t124 9q39 -4 75 -18.5l71 -29.5q25 -10 7 -34l-40.5 -49l-41.5 -49q-7 -8 -15 -9.5t-19 0.5q-21 4 -42.5 5t-41.5 -2q-30 -3 -53.5 -16t-40 -33t-24.5 -46t-6 -55l4 -34.5t7 -33.5
q9 -28 27.5 -45.5t49.5 -21.5q20 -3 40 -5t40 3q28 7 46 20.5t38 39.5q14 29 38 12l51 -34t50 -36q15 -11 11 -20.5t-15 -26.5q-6 -8 -26 -26.5t-47 -38t-57 -37t-56 -24.5q-33 -9 -66 -11t-68 2q-45 6 -85.5 22.5t-75.5 45.5q-6 5 -16.5 14.5t-22 22t-23 27.5t-18.5 32
t-12.5 33t-10.5 33q-4 17 -4.5 33.5t-2.5 30.5z" />
<glyph glyph-name="c" unicode="c" horiz-adv-x="708"
d="M3 288q0 64 16 120.5t47 108.5q14 23 32.5 40.5t41.5 31.5q55 34 114 49t124 9q39 -4 75 -18.5l71 -29.5q25 -10 7 -34l-40.5 -49l-41.5 -49q-7 -8 -15 -9.5t-19 0.5q-21 4 -42.5 5t-41.5 -2q-30 -3 -53.5 -16t-40 -33t-24.5 -46t-6 -55l4 -34.5t7 -33.5
q9 -28 27.5 -45.5t49.5 -21.5q20 -3 40 -5t40 3q28 7 46 20.5t38 39.5q14 29 38 12l51 -34t50 -36q15 -11 11 -20.5t-15 -26.5q-6 -8 -26 -26.5t-47 -38t-57 -37t-56 -24.5q-33 -9 -66 -11t-68 2q-45 6 -85.5 22.5t-75.5 45.5q-6 5 -16.5 14.5t-22 22t-23 27.5t-18.5 32
t-12.5 33t-10.5 33q-4 17 -4.5 33.5t-2.5 30.5z" />
<glyph glyph-name="D" unicode="D" horiz-adv-x="709"
d="M4 576q0 21 1 32.5t6.5 17t16.5 7t32 2.5q11 0 44 0.5t72 0.5t76 -1t57 -3q24 -2 48 -4.5t47 -10.5q21 -7 41.5 -18t38.5 -25q30 -20 52.5 -53.5t38 -68.5t24.5 -66t12 -47q13 -72 -9 -131t-71 -110q-34 -35 -74 -57t-89 -29q-63 -9 -124.5 -12.5t-124.5 -1.5
q-26 0 -50.5 2t-49.5 2q-11 -1 -13.5 4t-2.5 13q0 4 -0.5 7.5t-0.5 7.5q0 71 0.5 141.5t0.5 141.5l0.5 28t0.5 68.5v85v77.5zM202 315q0 -33 -0.5 -66t-1.5 -66q0 -20 20 -21q43 -4 82 6t74 36q17 13 30 28t18 36q7 28 4.5 56t-11.5 56q-8 21 -22 37.5t-36 25.5
q-32 14 -64.5 16t-65.5 2q-20 0 -23.5 -4t-3.5 -24q-1 -15 -0.5 -35t0.5 -39v-44z" />
<glyph glyph-name="d" unicode="d" horiz-adv-x="708"
d="M4 576q0 21 1 32.5t6.5 17t16.5 7t32 2.5q11 0 44 0.5t72 0.5t76 -1t57 -3q24 -2 48 -4.5t47 -10.5q21 -7 41.5 -18t38.5 -25q30 -20 52.5 -53.5t38 -68.5t24.5 -66t12 -47q13 -72 -9 -131t-71 -110q-34 -35 -74 -57t-89 -29q-63 -9 -124.5 -12.5t-124.5 -1.5
q-26 0 -50.5 2t-49.5 2q-11 -1 -13.5 4t-2.5 13q0 4 -0.5 7.5t-0.5 7.5q0 71 0.5 141.5t0.5 141.5l0.5 28t0.5 68.5v85v77.5zM202 315q0 -33 -0.5 -66t-1.5 -66q0 -20 20 -21q43 -4 82 6t74 36q17 13 30 28t18 36q7 28 4.5 56t-11.5 56q-8 21 -22 37.5t-36 25.5
q-32 14 -64.5 16t-65.5 2q-20 0 -23.5 -4t-3.5 -24q-1 -15 -0.5 -35t0.5 -39v-44z" />
<glyph glyph-name="E" unicode="E" horiz-adv-x="583"
d="M9 431q0 38 -1.5 75.5t-3.5 75.5q0 5 -0.5 10.5t-0.5 11.5q0 17 4 25t27 7q26 -1 65.5 -1h83h88.5t82.5 0.5t64.5 0.5h36q20 0 21 -19q1 -26 1 -57v-57q0 -3 -4.5 -7t-7.5 -4q-14 -2 -27.5 -3.5t-27.5 -1.5q-49 -1 -95 -1t-95 -1q-17 0 -26.5 -1t-13.5 -5.5t-4 -14
t1 -27.5q0 -10 -0.5 -13t0.5 -12q1 -12 2 -19t4 -10.5t10 -4.5t20 -2q10 -2 27.5 -1t28.5 0q12 -1 17.5 -3.5t7.5 -7.5t1.5 -13t-0.5 -20q0 -4 -0.5 -7.5t0.5 -7.5q0 -18 -18 -18q-30 -2 -59 0q-16 0 -25 -0.5t-12.5 -4.5t-4 -12.5t-0.5 -23.5v-74q1 -21 21 -21h243
q18 2 25 -2.5t8 -22.5q2 -28 2.5 -62t-0.5 -62q0 -4 -4.5 -8.5t-8.5 -5.5q-6 -1 -27.5 -1h-52t-66.5 0.5l-71 1t-66 0.5h-50q-23 -1 -47 0l-47 2q-19 1 -24.5 6.5t-5.5 24.5v66t1 66q0 23 0.5 44.5t1.5 44.5q-1 0 -0.5 19.5t1 47t1 58t0.5 52.5z" />
<glyph glyph-name="e" unicode="e" horiz-adv-x="583"
d="M9 431q0 38 -1.5 75.5t-3.5 75.5q0 5 -0.5 10.5t-0.5 11.5q0 17 4 25t27 7q26 -1 65.5 -1h83h88.5t82.5 0.5t64.5 0.5h36q20 0 21 -19q1 -26 1 -57v-57q0 -3 -4.5 -7t-7.5 -4q-14 -2 -27.5 -3.5t-27.5 -1.5q-49 -1 -95 -1t-95 -1q-17 0 -26.5 -1t-13.5 -5.5t-4 -14
t1 -27.5q0 -10 -0.5 -13t0.5 -12q1 -12 2 -19t4 -10.5t10 -4.5t20 -2q10 -2 27.5 -1t28.5 0q12 -1 17.5 -3.5t7.5 -7.5t1.5 -13t-0.5 -20q0 -4 -0.5 -7.5t0.5 -7.5q0 -18 -18 -18q-30 -2 -59 0q-16 0 -25 -0.5t-12.5 -4.5t-4 -12.5t-0.5 -23.5v-74q1 -21 21 -21h243
q18 2 25 -2.5t8 -22.5q2 -28 2.5 -62t-0.5 -62q0 -4 -4.5 -8.5t-8.5 -5.5q-6 -1 -27.5 -1h-52t-66.5 0.5l-71 1t-66 0.5h-50q-23 -1 -47 0l-47 2q-19 1 -24.5 6.5t-5.5 24.5v66t1 66q0 23 0.5 44.5t1.5 44.5q-1 0 -0.5 19.5t1 47t1 58t0.5 52.5z" />
<glyph glyph-name="F" unicode="F" horiz-adv-x="635"
d="M440 638q20 -1 40.5 -1.5t41.5 -0.5q11 0 13.5 -5t2.5 -14q1 -28 1 -56t1 -55q0 -19 -4 -24.5t-24 -5.5h-72t-72 1q-26 0 -51 0.5t-51 0.5q-10 0 -19.5 0.5t-19.5 -0.5q-21 -2 -25.5 -7t-5.5 -25q-1 -19 -1.5 -34t-1.5 -34q0 -23 4 -28.5t28 -7.5q29 -3 58.5 -1.5
t58.5 -0.5q11 -1 23 -0.5t23 -0.5q18 -2 26.5 -2t11.5 -3.5t3 -11.5t2 -24q2 -20 2 -41t-1 -41q0 -13 -4 -16.5t-17 -3.5q-45 -1 -90 -1t-90 -1q-4 0 -7.5 0.5t-7.5 0.5q-18 0 -21.5 -3t-3.5 -20q-1 -27 -1 -61t-1 -61q0 -20 -1.5 -30.5t-6.5 -15t-15 -5t-29 -0.5
q-25 1 -49 1.5t-49 1.5q-20 2 -25 6.5t-6 22.5q-1 50 -1 99.5t-1 99.5q0 19 -1 64.5t-1 97.5t0.5 99.5t2.5 70.5q2 15 1.5 25.5t1.5 26.5q1 18 5 21.5t23 4.5h16q16 -1 46.5 -1h68h78.5h78.5t68 -0.5t46.5 -0.5z" />
<glyph glyph-name="f" unicode="f" horiz-adv-x="635"
d="M440 638q20 -1 40.5 -1.5t41.5 -0.5q11 0 13.5 -5t2.5 -14q1 -28 1 -56t1 -55q0 -19 -4 -24.5t-24 -5.5h-72t-72 1q-26 0 -51 0.5t-51 0.5q-10 0 -19.5 0.5t-19.5 -0.5q-21 -2 -25.5 -7t-5.5 -25q-1 -19 -1.5 -34t-1.5 -34q0 -23 4 -28.5t28 -7.5q29 -3 58.5 -1.5
t58.5 -0.5q11 -1 23 -0.5t23 -0.5q18 -2 26.5 -2t11.5 -3.5t3 -11.5t2 -24q2 -20 2 -41t-1 -41q0 -13 -4 -16.5t-17 -3.5q-45 -1 -90 -1t-90 -1q-4 0 -7.5 0.5t-7.5 0.5q-18 0 -21.5 -3t-3.5 -20q-1 -27 -1 -61t-1 -61q0 -20 -1.5 -30.5t-6.5 -15t-15 -5t-29 -0.5
q-25 1 -49 1.5t-49 1.5q-20 2 -25 6.5t-6 22.5q-1 50 -1 99.5t-1 99.5q0 19 -1 64.5t-1 97.5t0.5 99.5t2.5 70.5q2 15 1.5 25.5t1.5 26.5q1 18 5 21.5t23 4.5h16q16 -1 46.5 -1h68h78.5h78.5t68 -0.5t46.5 -0.5z" />
<glyph glyph-name="G" unicode="G" horiz-adv-x="718"
d="M475 362h58t58 -1q17 -1 20.5 -4t6.5 -19q5 -32 -0.5 -62.5t-15.5 -59.5q-12 -37 -33 -68t-47 -59q-32 -35 -71 -58t-87 -31q-50 -8 -98.5 -6t-96.5 24q-26 11 -49 22t-45 29q-13 11 -22 24t-20 27q-7 14 -15.5 29.5t-13.5 31.5q-31 89 -18 171.5t60 160.5q27 45 69 73
t93 43q55 17 109.5 16.5t109.5 -11.5q26 -5 48 -17t45 -23q8 -4 8 -10t-6 -11l-50.5 -45.5l-50.5 -45.5q-4 -3 -10.5 -5t-8.5 0q-20 14 -41.5 12l-42.5 -4q-17 -2 -33.5 -6t-31.5 -11q-29 -14 -51.5 -41.5t-32.5 -62t-5.5 -72.5t29.5 -74q23 -33 56.5 -47t74.5 -9q19 2 37 7
t33 18q7 5 13 11t11 13q5 8 10 18.5t3 18.5q-1 5 -4.5 7t-8.5 2t-10.5 -0.5t-9.5 0.5q-7 1 -13 1t-13 1q-22 2 -28 8.5t-7 28.5q-1 13 -1 25t-2 24q-1 20 16 20q23 0 47 -0.5t47 -0.5q8 -1 15.5 -1.5t15.5 -0.5z" />
<glyph glyph-name="g" unicode="g" horiz-adv-x="719"
d="M474 362h58t58 -1q17 -1 20.5 -4t6.5 -19q5 -32 -0.5 -62.5t-15.5 -59.5q-12 -37 -33 -68t-47 -59q-32 -35 -71 -58t-87 -31q-50 -8 -98.5 -6t-96.5 24q-26 11 -49 22t-45 29q-13 11 -22 24t-20 27q-7 14 -15.5 29.5t-13.5 31.5q-31 89 -18 171.5t60 160.5q27 45 69 73
t93 43q55 17 109.5 16.5t109.5 -11.5q26 -5 48 -17t45 -23q8 -4 8 -10t-6 -11l-50.5 -45.5l-50.5 -45.5q-4 -3 -10.5 -5t-8.5 0q-20 14 -41.5 12l-42.5 -4q-17 -2 -33.5 -6t-31.5 -11q-29 -14 -51.5 -41.5t-32.5 -62t-5.5 -72.5t29.5 -74q23 -33 56.5 -47t74.5 -9q19 2 37 7
t33 18q7 5 13 11t11 13q5 8 10 18.5t3 18.5q-1 5 -4.5 7t-8.5 2t-10.5 -0.5t-9.5 0.5q-7 1 -13 1t-13 1q-22 2 -28 8.5t-7 28.5q-1 13 -1 25t-2 24q-1 20 16 20q23 0 47 -0.5t47 -0.5q8 -1 15.5 -1.5t15.5 -0.5z" />
<glyph glyph-name="H" unicode="H" horiz-adv-x="645"
d="M9 518q0 22 -0.5 49t-0.5 49q0 12 4 16.5t15 4.5h63t62 -1q30 -1 33 -32q1 -11 0.5 -25.5t-0.5 -25.5q-1 -30 -1.5 -60.5t-0.5 -60.5q0 -8 0.5 -16.5t2.5 -16.5q2 -5 7 -9t8 -4h15h106q18 0 28 0.5t15 5t6.5 14t1.5 27.5q2 41 1.5 84t-0.5 84q0 6 -0.5 11.5t1.5 10.5
q1 15 18 15q31 -2 61.5 -1.5t62.5 -1.5q14 -1 16 -4t2 -19q0 -26 0.5 -56.5t0.5 -56.5q-1 -24 -1.5 -47.5t-0.5 -47.5q-1 -28 -0.5 -55.5t0.5 -55.5q1 -60 1 -118v-118q0 -7 0.5 -13t-0.5 -13q-2 -17 -9 -23.5t-24 -6.5q-29 -1 -57 -0.5t-57 -0.5q-16 0 -16 16
q0 13 0.5 25.5t-0.5 25.5q-1 35 -1.5 68.5t-2.5 68.5q-1 10 -2 16t-4 8.5t-9 3.5t-16 1l-63 2t-62 -1q-10 -2 -15.5 -2.5t-8.5 -3.5t-4 -8.5t-1 -16.5q-1 -39 -1 -80.5v-80.5q0 -21 -7.5 -30t-29.5 -12q-1 -1 -3 -1q-29 0 -57 0.5t-57 0.5q-11 0 -15.5 5.5t-5.5 15.5
q-1 13 -1.5 25.5t-0.5 25.5v123.5t1 123.5l0.5 22t1 53l1 65t0.5 59z" />
<glyph glyph-name="h" unicode="h" horiz-adv-x="646"
d="M9 518q0 22 -0.5 49t-0.5 49q0 12 4 16.5t15 4.5h63t62 -1q30 -1 33 -32q1 -11 0.5 -25.5t-0.5 -25.5q-1 -30 -1.5 -60.5t-0.5 -60.5q0 -8 0.5 -16.5t2.5 -16.5q2 -5 7 -9t8 -4h15h106q18 0 28 0.5t15 5t6.5 14t1.5 27.5q2 41 1.5 84t-0.5 84q0 6 -0.5 11.5t1.5 10.5
q1 15 18 15q31 -2 61.5 -1.5t62.5 -1.5q14 -1 16 -4t2 -19q0 -26 0.5 -56.5t0.5 -56.5q-1 -24 -1.5 -47.5t-0.5 -47.5q-1 -28 -0.5 -55.5t0.5 -55.5q1 -60 1 -118v-118q0 -7 0.5 -13t-0.5 -13q-2 -17 -9 -23.5t-24 -6.5q-29 -1 -57 -0.5t-57 -0.5q-16 0 -16 16
q0 13 0.5 25.5t-0.5 25.5q-1 35 -1.5 68.5t-2.5 68.5q-1 10 -2 16t-4 8.5t-9 3.5t-16 1l-63 2t-62 -1q-10 -2 -15.5 -2.5t-8.5 -3.5t-4 -8.5t-1 -16.5q-1 -39 -1 -80.5v-80.5q0 -21 -7.5 -30t-29.5 -12q-1 -1 -3 -1q-29 0 -57 0.5t-57 0.5q-11 0 -15.5 5.5t-5.5 15.5
q-1 13 -1.5 25.5t-0.5 25.5v123.5t1 123.5l0.5 22t1 53l1 65t0.5 59z" />
<glyph glyph-name="I" unicode="I" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="i" unicode="i" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="J" unicode="J" horiz-adv-x="636"
d="M524 240q-8 -52 -27.5 -99t-53.5 -88q-19 -23 -42.5 -37.5t-53.5 -20.5q-20 -4 -38.5 -6.5t-38.5 -1.5q-6 0 -30.5 1.5t-56.5 10t-66.5 27.5t-60.5 55q-13 21 -22 44.5t-15 47.5q-7 29 -10.5 59.5t-7.5 60.5q-1 10 0 16.5t4 10.5t9 6.5t16 4.5h15.5h35.5t43 -0.5t38 -0.5
q17 0 17 -19q-1 -13 -1 -26t2 -26q5 -39 29 -57t64 -12q36 6 53.5 21.5t25.5 52.5q9 48 9 96q0 59 -1.5 112t-2.5 113q-1 17 0 27t5.5 15t13.5 7t26 2q45 2 92 0q25 -1 31.5 -8.5t8.5 -34.5v-34.5v-58t-1 -72l-2 -74.5t-2.5 -66.5t-4.5 -47.5z" />
<glyph glyph-name="j" unicode="j" horiz-adv-x="635"
d="M524 240q-8 -52 -27.5 -99t-53.5 -88q-19 -23 -42.5 -37.5t-53.5 -20.5q-20 -4 -38.5 -6.5t-38.5 -1.5q-6 0 -30.5 1.5t-56.5 10t-66.5 27.5t-60.5 55q-13 21 -22 44.5t-15 47.5q-7 29 -10.5 59.5t-7.5 60.5q-1 10 0 16.5t4 10.5t9 6.5t16 4.5h15.5h35.5t43 -0.5t38 -0.5
q17 0 17 -19q-1 -13 -1 -26t2 -26q5 -39 29 -57t64 -12q36 6 53.5 21.5t25.5 52.5q9 48 9 96q0 59 -1.5 112t-2.5 113q-1 17 0 27t5.5 15t13.5 7t26 2q45 2 92 0q25 -1 31.5 -8.5t8.5 -34.5v-34.5v-58t-1 -72l-2 -74.5t-2.5 -66.5t-4.5 -47.5z" />
<glyph glyph-name="K" unicode="K" horiz-adv-x="656"
d="M3 609q0 20 5.5 24.5t25.5 5.5h44t44 -1q26 -1 35 -12.5t8 -38.5q-2 -37 -0.5 -74t1.5 -74q0 -7 4 -9t10 2l63.5 55.5l63.5 56.5q18 16 38 39t38 40q11 11 23 14t27 2q55 -3 111 -3q8 0 16.5 -1t11.5 -10q6 -19 -11 -33q-20 -17 -41 -41t-41 -42l-62.5 -56.5l-62.5 -56.5
q-8 -7 -12 -11t-4.5 -7.5t1.5 -8.5t7 -13l58 -99l58 -98l39.5 -62.5l39.5 -61.5q4 -6 7 -11t-2 -12q-7 -13 -25 -13q-9 1 -28 0.5t-39.5 -0.5t-39 0.5t-26.5 3.5t-14 10.5t-11 17t-9.5 19t-8.5 16.5l-54 90.5l-52 91.5l-12 18q-8 13 -18 4q-9 -8 -17.5 -16.5t-17.5 -16.5
q-8 -7 -9 -16t-1 -18q0 -39 0.5 -77.5t0.5 -77.5v-26q-2 -20 -21 -20q-29 2 -57 0t-57 0q-16 2 -21.5 9t-5.5 24q-1 38 -1 79v79q0 33 0.5 66t0.5 66q-1 0 -1 31v75.5t0.5 93.5t0.5 84z" />
<glyph glyph-name="k" unicode="k" horiz-adv-x="656"
d="M3 609q0 20 5.5 24.5t25.5 5.5h44t44 -1q26 -1 35 -12.5t8 -38.5q-2 -37 -0.5 -74t1.5 -74q0 -7 4 -9t10 2l63.5 55.5l63.5 56.5q18 16 38 39t38 40q11 11 23 14t27 2q55 -3 111 -3q8 0 16.5 -1t11.5 -10q6 -19 -11 -33q-20 -17 -41 -41t-41 -42l-62.5 -56.5l-62.5 -56.5
q-8 -7 -12 -11t-4.5 -7.5t1.5 -8.5t7 -13l58 -99l58 -98l39.5 -62.5l39.5 -61.5q4 -6 7 -11t-2 -12q-7 -13 -25 -13q-9 1 -28 0.5t-39.5 -0.5t-39 0.5t-26.5 3.5t-14 10.5t-11 17t-9.5 19t-8.5 16.5l-54 90.5l-52 91.5l-12 18q-8 13 -18 4q-9 -8 -17.5 -16.5t-17.5 -16.5
q-8 -7 -9 -16t-1 -18q0 -39 0.5 -77.5t0.5 -77.5v-26q-2 -20 -21 -20q-29 2 -57 0t-57 0q-16 2 -21.5 9t-5.5 24q-1 38 -1 79v79q0 33 0.5 66t0.5 66q-1 0 -1 31v75.5t0.5 93.5t0.5 84z" />
<glyph glyph-name="L" unicode="L" horiz-adv-x="521"
d="M3 616q0 18 16 19q29 2 54.5 1.5t54.5 0.5q23 1 30 -6t8 -30q3 -71 3.5 -147.5t3.5 -147.5q1 -30 -0.5 -57t0.5 -56q1 -19 5 -23t24 -4q35 -2 70 -2h70h47t20.5 -6t6 -20t2.5 -42q2 -20 2.5 -38.5t2.5 -38.5q1 -20 -21 -20q-23 1 -47 1.5t-48 0.5h-124t-123 1h-11.5
t-10.5 1q-20 2 -27 9.5t-7 28.5q0 42 0.5 84.5t0.5 84.5v21v55t0.5 77.5t0 89l-1 88t-1.5 75.5z" />
<glyph glyph-name="l" unicode="l" horiz-adv-x="521"
d="M3 616q0 18 16 19q29 2 54.5 1.5t54.5 0.5q23 1 30 -6t8 -30q3 -71 3.5 -147.5t3.5 -147.5q1 -30 -0.5 -57t0.5 -56q1 -19 5 -23t24 -4q35 -2 70 -2h70h47t20.5 -6t6 -20t2.5 -42q2 -20 2.5 -38.5t2.5 -38.5q1 -20 -21 -20q-23 1 -47 1.5t-48 0.5h-124t-123 1h-11.5
t-10.5 1q-20 2 -27 9.5t-7 28.5q0 42 0.5 84.5t0.5 84.5v21v55t0.5 77.5t0 89l-1 88t-1.5 75.5z" />
<glyph glyph-name="M" unicode="M" horiz-adv-x="980"
d="M181 299q0 -7 -0.5 -8.5t0.5 -5.5l6 -131l6 -131q1 -14 -2 -17t-19 -5q-17 -2 -33 -2h-32h-45t-44 1q-15 0 -12 15q-1 57 -0.5 113.5t0.5 113.5q-3 184 -3 368q-1 17 3 21t20 5h26.5h39.5h40.5h28.5q16 2 25.5 -4t17.5 -20l59.5 -110.5l60.5 -109.5l72 -132
q8 -14 13 -13.5t13 14.5l27 45l27 45q20 34 41.5 66.5t41.5 67.5l34.5 61.5l32.5 62.5q8 14 17.5 22.5t26.5 6.5q6 -1 25.5 -1h41t39.5 0.5t20 0.5q17 0 26 -1t13.5 -5.5t5 -14t0.5 -27.5q0 -99 1 -197t3 -197q1 -44 0.5 -84.5t1.5 -83.5q1 -23 -2.5 -27t-25.5 -3
q-9 0 -27.5 0.5t-38.5 0.5h-38h-25q-14 -1 -18.5 3t-4.5 19q-1 69 -1.5 136t-1.5 136q0 8 -1 11q0 5 -4 9q-2 2 -3.5 0t-2.5 -3l-9 -13t-8 -13l-76.5 -131.5l-76.5 -132.5q-5 -8 -11 -14t-20 -6h-87q-22 0 -29 8.5t-15 25.5l-57 118l-59 117q-4 8 -8.5 16t-9.5 16
q-1 2 -3.5 3.5t-2.5 -5.5z" />
<glyph glyph-name="m" unicode="m" horiz-adv-x="979"
d="M181 299q0 -7 -0.5 -8.5t0.5 -5.5l6 -131l6 -131q1 -14 -2 -17t-19 -5q-17 -2 -33 -2h-32h-45t-44 1q-15 0 -12 15q-1 57 -0.5 113.5t0.5 113.5q-3 184 -3 368q-1 17 3 21t20 5h26.5h39.5h40.5h28.5q16 2 25.5 -4t17.5 -20l59.5 -110.5l60.5 -109.5l72 -132
q8 -14 13 -13.5t13 14.5l27 45l27 45q20 34 41.5 66.5t41.5 67.5l34.5 61.5l32.5 62.5q8 14 17.5 22.5t26.5 6.5q6 -1 25.5 -1h41t39.5 0.5t20 0.5q17 0 26 -1t13.5 -5.5t5 -14t0.5 -27.5q0 -99 1 -197t3 -197q1 -44 0.5 -84.5t1.5 -83.5q1 -23 -2.5 -27t-25.5 -3
q-9 0 -27.5 0.5t-38.5 0.5h-38h-25q-14 -1 -18.5 3t-4.5 19q-1 69 -1.5 136t-1.5 136q0 8 -1 11q0 5 -4 9q-2 2 -3.5 0t-2.5 -3l-9 -13t-8 -13l-76.5 -131.5l-76.5 -132.5q-5 -8 -11 -14t-20 -6h-87q-22 0 -29 8.5t-15 25.5l-57 118l-59 117q-4 8 -8.5 16t-9.5 16
q-1 2 -3.5 3.5t-2.5 -5.5z" />
<glyph glyph-name="n" unicode="n" horiz-adv-x="750"
d="M4 601v22q2 17 17 14q38 1 71.5 0t68.5 1q13 1 19.5 -3.5t13.5 -13.5q27 -39 54 -83l55.5 -87.5l58 -86t60.5 -78.5q7 -8 17 -18.5t14 -10.5t5 15t1 26q-1 33 -1.5 72t-1.5 78.5t-1.5 78.5t-1.5 72q-1 22 3.5 28t25.5 7q29 2 57 3t57 0q26 0 32 -6.5t6 -31.5
q0 -21 -0.5 -48l-1 -55l-1 -55t-0.5 -48q2 -55 3.5 -110t3.5 -111q2 -38 2 -75.5t1 -75.5q0 -13 -3 -16.5t-16 -3.5h-84.5t-85.5 2q-6 0 -13 3.5t-12 8.5q-29 27 -50 54q-11 13 -27 35t-33.5 48.5l-36 55l-34.5 52.5l-27.5 41.5l-15.5 23.5q-1 2 -4 2t-5 1q-1 -1 -1 -2
q-1 -1 -1 -5v-46.5t1 -46.5l2 -96t3 -96q0 -23 -7 -30t-30 -6l-31.5 2t-31.5 1q-16 -1 -37.5 0t-38.5 -2q-13 -3 -16 10q-2 8 -1 13t1 13q-3 68 -2 135t-1 134q-1 36 0 72t1 72l-0.5 17.5t-0.5 41.5t0.5 49.5t0.5 42.5z" />
<glyph glyph-name="N" unicode="N" horiz-adv-x="750"
d="M4 601v22q2 17 17 14q38 1 71.5 0t68.5 1q13 1 19.5 -3.5t13.5 -13.5q27 -39 54 -83l55.5 -87.5l58 -86t60.5 -78.5q7 -8 17 -18.5t14 -10.5t5 15t1 26q-1 33 -1.5 72t-1.5 78.5t-1.5 78.5t-1.5 72q-1 22 3.5 28t25.5 7q29 2 57 3t57 0q26 0 32 -6.5t6 -31.5
q0 -21 -0.5 -48l-1 -55l-1 -55t-0.5 -48q2 -55 3.5 -110t3.5 -111q2 -38 2 -75.5t1 -75.5q0 -13 -3 -16.5t-16 -3.5h-84.5t-85.5 2q-6 0 -13 3.5t-12 8.5q-29 27 -50 54q-11 13 -27 35t-33.5 48.5l-36 55l-34.5 52.5l-27.5 41.5l-15.5 23.5q-1 2 -4 2t-5 1q-1 -1 -1 -2
q-1 -1 -1 -5v-46.5t1 -46.5l2 -96t3 -96q0 -23 -7 -30t-30 -6l-31.5 2t-31.5 1q-16 -1 -37.5 0t-38.5 -2q-13 -3 -16 10q-2 8 -1 13t1 13q-3 68 -2 135t-1 134q-1 36 0 72t1 72l-0.5 17.5t-0.5 41.5t0.5 49.5t0.5 42.5z" />
<glyph glyph-name="O" unicode="O" horiz-adv-x="728"
d="M632 326q-5 -46 -15 -89t-29.5 -81.5t-49 -71t-71.5 -56.5q-33 -19 -68 -29t-73 -10q-62 0 -110.5 15.5t-85 40t-62 55t-42 60t-24.5 54.5t-9 40q-2 27 -4.5 54t2.5 55q10 49 33.5 96t60 85t86.5 64.5t112 33.5q37 5 73.5 -1t71.5 -19q60 -23 101 -64.5t67 -100.5
q14 -32 26 -63t10 -68zM466 330q0 12 -0.5 18.5t-1.5 10.5t-2 7.5t-2 9.5q-3 15 -16.5 32.5t-33 33t-43 26t-45.5 10.5q-45 0 -75.5 -18t-49 -44.5t-27.5 -57.5t-10 -57q-1 -17 8.5 -39.5t29 -43t48 -35t64.5 -14.5q40 0 69 16.5t48.5 40.5t29 52t9.5 52z" />
<glyph glyph-name="o" unicode="o"
d="M634 326q-5 -46 -15 -89t-29.5 -81.5t-49 -71t-71.5 -56.5q-33 -19 -68 -29t-73 -10q-62 0 -110.5 15.5t-85 40t-62 55t-42 60t-24.5 54.5t-9 40q-2 27 -4.5 54t2.5 55q10 49 33.5 96t60 85t86.5 64.5t112 33.5q37 5 73.5 -1t71.5 -19q60 -23 101 -64.5t67 -100.5
q14 -32 26 -63t10 -68zM468 330q0 12 -0.5 18.5t-1.5 10.5t-2 7.5t-2 9.5q-3 15 -16.5 32.5t-33 33t-43 26t-45.5 10.5q-45 0 -75.5 -18t-49 -44.5t-27.5 -57.5t-10 -57q-1 -17 8.5 -39.5t29 -43t48 -35t64.5 -14.5q40 0 69 16.5t48.5 40.5t29 52t9.5 52z" />
<glyph glyph-name="p" unicode="p" horiz-adv-x="635"
d="M11 527q1 17 0 34.5t-1 35.5q1 21 8 29t28 10q17 2 33 2h32q54 -1 108 -1t108 -2q56 -3 105 -21q14 -5 35.5 -21.5t41 -42t33.5 -58t14 -68.5q0 -56 -19 -95t-49 -66.5t-66.5 -45t-71.5 -28.5q-59 -18 -122 -12q-21 2 -25 -4t-4 -29q-1 -30 -0.5 -55.5t2.5 -54.5
q1 -21 -6 -30t-28 -8q-31 0 -65 -1.5t-65 0.5q-14 1 -18.5 6.5t-6.5 20.5q-2 27 -1 54t0 54q-2 51 -2.5 100.5t-2.5 100.5l0.5 21.5t1 52t1.5 64.5t2 58zM225 520q-20 -2 -24 -6t-3 -24q0 -27 0.5 -64t1.5 -64q1 -14 5 -19t17 -4q10 1 34.5 2t50 9t44.5 25t19 50
q0 26 -10.5 43.5t-26 28.5t-34 16t-34.5 6.5t-27 1t-13 -0.5z" />
<glyph glyph-name="P" unicode="P" horiz-adv-x="635"
d="M11 527q1 17 0 34.5t-1 35.5q1 21 8 29t28 10q17 2 33 2h32q54 -1 108 -1t108 -2q56 -3 105 -21q14 -5 35.5 -21.5t41 -42t33.5 -58t14 -68.5q0 -56 -19 -95t-49 -66.5t-66.5 -45t-71.5 -28.5q-59 -18 -122 -12q-21 2 -25 -4t-4 -29q-1 -30 -0.5 -55.5t2.5 -54.5
q1 -21 -6 -30t-28 -8q-31 0 -65 -1.5t-65 0.5q-14 1 -18.5 6.5t-6.5 20.5q-2 27 -1 54t0 54q-2 51 -2.5 100.5t-2.5 100.5l0.5 21.5t1 52t1.5 64.5t2 58zM225 520q-20 -2 -24 -6t-3 -24q0 -27 0.5 -64t1.5 -64q1 -14 5 -19t17 -4q10 1 34.5 2t50 9t44.5 25t19 50
q0 26 -10.5 43.5t-26 28.5t-34 16t-34.5 6.5t-27 1t-13 -0.5z" />
<glyph glyph-name="q" unicode="q" horiz-adv-x="792"
d="M679 27q13 -13 0 -21l-55 -38.5l-55 -37.5q-12 -8 -23 5l-27.5 33.5l-27.5 34.5q-12 17 -32 10q-16 -6 -32 -11t-33 -8q-42 -8 -82 -0.5t-79 21.5q-16 5 -31.5 12t-30.5 15q-47 23 -83.5 56.5t-55.5 83.5q-7 18 -12 39.5t-8.5 42.5t-5 40t-1.5 32q0 22 6.5 48t18.5 52.5
t29 52t38 46.5q50 50 110 76.5t127 34.5q45 6 88.5 -5t82.5 -36q66 -40 102 -97.5t51 -132.5q11 -58 -0.5 -110t-37.5 -103l-12 -26t-3.5 -16.5t7 -16t19.5 -22.5l24 -27.5zM471 256q14 42 11.5 84t-26.5 76q-22 30 -49 43.5t-51.5 17.5t-42 2.5t-20.5 -1.5
q-20 -5 -38.5 -17.5t-29.5 -30.5q-16 -25 -28 -55t-12 -56t5.5 -39.5l12.5 -30.5q20 -46 62 -64.5t93 -15.5q43 2 71 24.5t42 62.5z" />
<glyph glyph-name="Q" unicode="Q" horiz-adv-x="792"
d="M679 27q13 -13 0 -21l-55 -38.5l-55 -37.5q-12 -8 -23 5l-27.5 33.5l-27.5 34.5q-12 17 -32 10q-16 -6 -32 -11t-33 -8q-42 -8 -82 -0.5t-79 21.5q-16 5 -31.5 12t-30.5 15q-47 23 -83.5 56.5t-55.5 83.5q-7 18 -12 39.5t-8.5 42.5t-5 40t-1.5 32q0 22 6.5 48t18.5 52.5
t29 52t38 46.5q50 50 110 76.5t127 34.5q45 6 88.5 -5t82.5 -36q66 -40 102 -97.5t51 -132.5q11 -58 -0.5 -110t-37.5 -103l-12 -26t-3.5 -16.5t7 -16t19.5 -22.5l24 -27.5zM471 256q14 42 11.5 84t-26.5 76q-22 30 -49 43.5t-51.5 17.5t-42 2.5t-20.5 -1.5
q-20 -5 -38.5 -17.5t-29.5 -30.5q-16 -25 -28 -55t-12 -56t5.5 -39.5l12.5 -30.5q20 -46 62 -64.5t93 -15.5q43 2 71 24.5t42 62.5z" />
<glyph glyph-name="R" unicode="R" horiz-adv-x="656"
d="M235 638q54 -2 107.5 -6t105.5 -25q26 -11 47 -26.5t36 -38.5q23 -34 32 -71.5t6 -74t-16 -70t-34 -60.5q-10 -12 -24.5 -21.5l-28.5 -18.5q-8 -5 -9.5 -10t3.5 -13l34.5 -57.5l35.5 -57.5q7 -11 17 -30t18 -30q7 -12 2 -24q-3 -8 -8.5 -9t-12.5 -1q-32 2 -63 1t-63 -1
q-11 0 -16 4t-10 12l-41.5 78.5t-42.5 78.5q-4 7 -8 13l-8 12q-8 15 -27 15q-11 0 -20.5 1.5t-20.5 1.5q-16 1 -21.5 -3.5t-5.5 -21.5l2 -78l2 -78q1 -14 -3 -20t-17 -9q-5 -2 -11 -2h-11q-26 0 -50.5 -0.5t-50.5 -0.5q-8 0 -15 0.5t-15 1.5q-17 2 -20 19q-1 8 -2.5 16.5
t-1.5 16.5q1 40 1 80t2 80q1 38 1 74.5v74.5q1 61 0 121.5t-1 121.5q0 22 6 27.5t29 4.5h84l11.5 0.5t28.5 1.5t35 1.5t32 -0.5zM201 413q-1 -14 -1 -27v-41q0 -17 18 -17q20 2 39.5 2.5t39.5 2.5q20 3 38.5 11t33.5 24q11 12 14.5 29t0 33.5t-13.5 29t-25 16.5
q-68 17 -133 14q-3 -1 -6.5 -5.5t-3.5 -7.5q-1 -14 -1 -32v-32z" />
<glyph glyph-name="r" unicode="r" horiz-adv-x="656"
d="M235 638q54 -2 107.5 -6t105.5 -25q26 -11 47 -26.5t36 -38.5q23 -34 32 -71.5t6 -74t-16 -70t-34 -60.5q-10 -12 -24.5 -21.5l-28.5 -18.5q-8 -5 -9.5 -10t3.5 -13l34.5 -57.5l35.5 -57.5q7 -11 17 -30t18 -30q7 -12 2 -24q-3 -8 -8.5 -9t-12.5 -1q-32 2 -63 1t-63 -1
q-11 0 -16 4t-10 12l-41.5 78.5t-42.5 78.5q-4 7 -8 13l-8 12q-8 15 -27 15q-11 0 -20.5 1.5t-20.5 1.5q-16 1 -21.5 -3.5t-5.5 -21.5l2 -78l2 -78q1 -14 -3 -20t-17 -9q-5 -2 -11 -2h-11q-26 0 -50.5 -0.5t-50.5 -0.5q-8 0 -15 0.5t-15 1.5q-17 2 -20 19q-1 8 -2.5 16.5
t-1.5 16.5q1 40 1 80t2 80q1 38 1 74.5v74.5q1 61 0 121.5t-1 121.5q0 22 6 27.5t29 4.5h84l11.5 0.5t28.5 1.5t35 1.5t32 -0.5zM201 413q-1 -14 -1 -27v-41q0 -17 18 -17q20 2 39.5 2.5t39.5 2.5q20 3 38.5 11t33.5 24q11 12 14.5 29t0 33.5t-13.5 29t-25 16.5
q-68 17 -133 14q-3 -1 -6.5 -5.5t-3.5 -7.5q-1 -14 -1 -32v-32z" />
<glyph glyph-name="s" unicode="s" horiz-adv-x="584"
d="M384 631q26 -11 44 -30l37 -38q6 -6 4 -14t-7 -13l-36 -39.5l-37 -38.5q-8 -9 -20 -2l-20 16t-21 14l-28 15.5t-28 12.5q-17 6 -30.5 1.5t-20.5 -18.5q-6 -12 -3.5 -28.5t14.5 -25.5q16 -11 32.5 -20.5l33.5 -18.5l48.5 -27.5t47.5 -27.5t41.5 -33.5t35.5 -40.5
q20 -26 24.5 -56t0.5 -61q-14 -120 -131 -161q-46 -16 -90.5 -14.5t-90.5 14.5q-42 11 -77 31.5l-70 42.5q-6 3 -12 9q-9 8 -13.5 12.5t-5.5 9.5t1.5 11.5t8.5 17.5q11 21 20.5 43l19.5 44q4 8 7 15t8 14q3 5 8 6.5t10 -3.5l22 -22l22 -22q26 -25 57.5 -39.5t64.5 -25.5
q13 -4 30 -1q15 3 25 12t13.5 21t0.5 25t-14 24q-13 13 -28 23.5t-31 19.5q-26 16 -53 30.5t-55 27.5q-42 20 -65.5 52.5t-35.5 75.5q-15 62 21 112q14 20 28 33.5t44 28.5q41 20 80 25.5t71.5 3t58 -9.5t39.5 -13z" />
<glyph glyph-name="S" unicode="S" horiz-adv-x="584"
d="M384 631q26 -11 44 -30l37 -38q6 -6 4 -14t-7 -13l-36 -39.5l-37 -38.5q-8 -9 -20 -2l-20 16t-21 14l-28 15.5t-28 12.5q-17 6 -30.5 1.5t-20.5 -18.5q-6 -12 -3.5 -28.5t14.5 -25.5q16 -11 32.5 -20.5l33.5 -18.5l48.5 -27.5t47.5 -27.5t41.5 -33.5t35.5 -40.5
q20 -26 24.5 -56t0.5 -61q-14 -120 -131 -161q-46 -16 -90.5 -14.5t-90.5 14.5q-42 11 -77 31.5l-70 42.5q-6 3 -12 9q-9 8 -13.5 12.5t-5.5 9.5t1.5 11.5t8.5 17.5q11 21 20.5 43l19.5 44q4 8 7 15t8 14q3 5 8 6.5t10 -3.5l22 -22l22 -22q26 -25 57.5 -39.5t64.5 -25.5
q13 -4 30 -1q15 3 25 12t13.5 21t0.5 25t-14 24q-13 13 -28 23.5t-31 19.5q-26 16 -53 30.5t-55 27.5q-42 20 -65.5 52.5t-35.5 75.5q-15 62 21 112q14 20 28 33.5t44 28.5q41 20 80 25.5t71.5 3t58 -9.5t39.5 -13z" />
<glyph glyph-name="T" unicode="T" horiz-adv-x="646"
d="M350 32q0 -20 -5.5 -25.5t-25.5 -6.5q-26 0 -51.5 -0.5t-51.5 -0.5q-16 -1 -20 3t-5 20q-1 63 -1 125t-1 125q-1 35 -1.5 77.5t-2.5 77.5q-1 15 -1 22.5t-3 11t-11 4t-24 0.5h-103q-11 0 -17.5 1t-10 4t-5 9t-2.5 17q-2 30 -2.5 60.5t-0.5 60.5q0 10 6 13.5t14 3.5
q120 3 239 3t239 -4q17 -1 27 -9t11 -22q2 -30 2.5 -59.5t1.5 -58.5q0 -18 -19 -16l-39 2t-38 1q-39 1 -78 0q-14 -1 -17 -4.5t-3 -17.5v-50t-0.5 -74t0 -85.5t0 -85t-0.5 -73.5v-49z" />
<glyph glyph-name="t" unicode="t" horiz-adv-x="646"
d="M350 32q0 -20 -5.5 -25.5t-25.5 -6.5q-26 0 -51.5 -0.5t-51.5 -0.5q-16 -1 -20 3t-5 20q-1 63 -1 125t-1 125q-1 35 -1.5 77.5t-2.5 77.5q-1 15 -1 22.5t-3 11t-11 4t-24 0.5h-103q-11 0 -17.5 1t-10 4t-5 9t-2.5 17q-2 30 -2.5 60.5t-0.5 60.5q0 10 6 13.5t14 3.5
q120 3 239 3t239 -4q17 -1 27 -9t11 -22q2 -30 2.5 -59.5t1.5 -58.5q0 -18 -19 -16l-39 2t-38 1q-39 1 -78 0q-14 -1 -17 -4.5t-3 -17.5v-50t-0.5 -74t0 -85.5t0 -85t-0.5 -73.5v-49z" />
<glyph glyph-name="U" unicode="U" horiz-adv-x="656"
d="M6 611q0 18 4 22t24 4q30 -2 60 -0.5t60 0.5q17 -1 20 -3.5t3 -19.5l-2 -61.5l-2 -61.5q-1 -45 -0.5 -88.5t0.5 -87.5q0 -25 6 -48.5t20 -44.5q37 -61 105 -49q23 3 36 22q43 58 40 126q-2 60 -0.5 120t-0.5 120q0 5 -0.5 14.5t-1 20l-1 20.5t-0.5 15q0 6 17.5 7.5
t41.5 1.5t47.5 -1.5t35.5 -2.5q9 -1 14.5 -0.5t9 0t5 -4t2.5 -12.5q2 -26 3.5 -56.5t2.5 -55.5q2 -37 0.5 -73.5t-2.5 -73.5q0 -25 -1.5 -50t-5.5 -50q-11 -73 -43 -132.5t-97 -100.5q-20 -13 -45.5 -20t-50 -10t-45.5 -3t-33 1q-8 1 -27.5 4.5t-44 13.5t-51.5 27t-49 44
t-36.5 65.5t-14.5 91.5q-1 47 -1 93.5v93.5l-0.5 19.5t-1 48t-0.5 60v55.5z" />
<glyph glyph-name="u" unicode="u" horiz-adv-x="656"
d="M6 611q0 18 4 22t24 4q30 -2 60 -0.5t60 0.5q17 -1 20 -3.5t3 -19.5l-2 -61.5l-2 -61.5q-1 -45 -0.5 -88.5t0.5 -87.5q0 -25 6 -48.5t20 -44.5q37 -61 105 -49q23 3 36 22q43 58 40 126q-2 60 -0.5 120t-0.5 120q0 5 -0.5 14.5t-1 20l-1 20.5t-0.5 15q0 6 17.5 7.5
t41.5 1.5t47.5 -1.5t35.5 -2.5q9 -1 14.5 -0.5t9 0t5 -4t2.5 -12.5q2 -26 3.5 -56.5t2.5 -55.5q2 -37 0.5 -73.5t-2.5 -73.5q0 -25 -1.5 -50t-5.5 -50q-11 -73 -43 -132.5t-97 -100.5q-20 -13 -45.5 -20t-50 -10t-45.5 -3t-33 1q-8 1 -27.5 4.5t-44 13.5t-51.5 27t-49 44
t-36.5 65.5t-14.5 91.5q-1 47 -1 93.5v93.5l-0.5 19.5t-1 48t-0.5 60v55.5z" />
<glyph glyph-name="V" unicode="V" horiz-adv-x="719"
d="M177 635q9 0 12 -5.5t5 -10.5q5 -10 8 -20l6 -20l37 -137.5l37 -137.5q3 -10 8 -22q2 -2 4.5 -3t4.5 -3q2 0 5 5q4 10 6 14q29 76 61 151.5t55 153.5q11 35 44 35h40h49.5h43h20.5q14 -3 10 -17q0 -4 -1.5 -7.5t-3.5 -7.5l-21 -56t-21 -55l-60.5 -140.5l-59.5 -139.5
l-39 -94.5l-39 -95.5q-8 -20 -14 -21.5t-25 -1.5h-167q-9 1 -11 7t-4 13l-15.5 51.5l-14.5 51.5l-38.5 145.5l-38.5 144.5q-12 43 -25 85l-26 84q-2 6 -3.5 11.5t-3.5 11.5q-5 19 1 25t26 5q4 0 24 0.5t44.5 0.5h47.5h32z" />
<glyph glyph-name="v" unicode="v" horiz-adv-x="719"
d="M177 635q9 0 12 -5.5t5 -10.5q5 -10 8 -20l6 -20l37 -137.5l37 -137.5q3 -10 8 -22q2 -2 4.5 -3t4.5 -3q2 0 5 5q4 10 6 14q29 76 61 151.5t55 153.5q11 35 44 35h40h49.5h43h20.5q14 -3 10 -17q0 -4 -1.5 -7.5t-3.5 -7.5l-21 -56t-21 -55l-60.5 -140.5l-59.5 -139.5
l-39 -94.5l-39 -95.5q-8 -20 -14 -21.5t-25 -1.5h-167q-9 1 -11 7t-4 13l-15.5 51.5l-14.5 51.5l-38.5 145.5l-38.5 144.5q-12 43 -25 85l-26 84q-2 6 -3.5 11.5t-3.5 11.5q-5 19 1 25t26 5q4 0 24 0.5t44.5 0.5h47.5h32z" />
<glyph glyph-name="W" unicode="W" horiz-adv-x="927"
d="M604 308q2 0 3.5 4.5t2.5 11t1.5 13t1.5 10.5q11 63 21 130.5l20 130.5q1 5 2 9t2 9q3 12 16 12q35 -2 70 -1t70 -1q18 -2 21.5 -7.5t0.5 -23.5q-11 -57 -21.5 -122.5t-21.5 -122.5l-23.5 -133l-22.5 -132q-3 -17 -7.5 -34.5t-7.5 -33.5q-4 -16 -7 -19.5t-19 -4.5
q-35 -1 -69.5 0.5t-69.5 -0.5q-16 -1 -24.5 6t-13.5 21l-25.5 61.5l-25.5 60.5l-26 59.5l-26 59.5q-2 2 -3.5 5.5t-5.5 3.5q-3 0 -5 -4t-4 -7q-34 -59 -61.5 -121l-53.5 -125q-2 -10 -6 -13q-4 -4 -8 -7t-9 -3q-29 -2 -57 -0.5t-57 -0.5q-14 0 -18 14l-24.5 105.5
l-24.5 105.5l-22.5 103l-23.5 102q-4 18 -8 40l-8 45.5t-8.5 45.5l-8.5 40q-1 4 -2 7t-2 7q-2 14 4.5 19t20.5 4q9 -1 29 -1.5t42.5 -0.5t42 0.5t28.5 1.5q8 0 10.5 -3t4.5 -9q4 -14 7.5 -31l7 -35l7 -35.5t6.5 -30.5l19 -73.5t19 -72.5q1 -3 2.5 -6.5t6.5 -3.5q3 0 7 8
l42 69t40 70q17 35 55 32q21 -2 42 -0.5t43 0.5q8 0 12 -4t8 -12q19 -45 39 -87.5l40 -86.5q2 -5 5.5 -11.5t7.5 -6.5z" />
<glyph glyph-name="w" unicode="w" horiz-adv-x="927"
d="M604 308q2 0 3.5 4.5t2.5 11t1.5 13t1.5 10.5q11 63 21 130.5l20 130.5q1 5 2 9t2 9q3 12 16 12q35 -2 70 -1t70 -1q18 -2 21.5 -7.5t0.5 -23.5q-11 -57 -21.5 -122.5t-21.5 -122.5l-23.5 -133l-22.5 -132q-3 -17 -7.5 -34.5t-7.5 -33.5q-4 -16 -7 -19.5t-19 -4.5
q-35 -1 -69.5 0.5t-69.5 -0.5q-16 -1 -24.5 6t-13.5 21l-25.5 61.5l-25.5 60.5l-26 59.5l-26 59.5q-2 2 -3.5 5.5t-5.5 3.5q-3 0 -5 -4t-4 -7q-34 -59 -61.5 -121l-53.5 -125q-2 -10 -6 -13q-4 -4 -8 -7t-9 -3q-29 -2 -57 -0.5t-57 -0.5q-14 0 -18 14l-24.5 105.5
l-24.5 105.5l-22.5 103l-23.5 102q-4 18 -8 40l-8 45.5t-8.5 45.5l-8.5 40q-1 4 -2 7t-2 7q-2 14 4.5 19t20.5 4q9 -1 29 -1.5t42.5 -0.5t42 0.5t28.5 1.5q8 0 10.5 -3t4.5 -9q4 -14 7.5 -31l7 -35l7 -35.5t6.5 -30.5l19 -73.5t19 -72.5q1 -3 2.5 -6.5t6.5 -3.5q3 0 7 8
l42 69t40 70q17 35 55 32q21 -2 42 -0.5t43 0.5q8 0 12 -4t8 -12q19 -45 39 -87.5l40 -86.5q2 -5 5.5 -11.5t7.5 -6.5z" />
<glyph glyph-name="X" unicode="X" horiz-adv-x="698"
d="M107 639h73q18 0 25 -15q9 -21 21 -39.5t25.5 -36.5l27 -36.5t25.5 -37.5q6 -11 10 -10.5t11 11.5l42 66l41 67q4 8 7.5 13.5t8.5 9t13.5 5t23.5 1.5h75q14 0 32 0.5t32 -0.5q16 -1 14 -10t-10 -22l-53.5 -77l-52.5 -78l-41.5 -60.5l-41.5 -59.5q-8 -11 -7.5 -19.5
t6.5 -19.5l21 -34t22 -34l64.5 -88.5l65.5 -87.5q1 -2 5.5 -7t8.5 -11.5t6.5 -13t0.5 -11.5q-2 -3 -12.5 -4t-18.5 -1q-36 0 -71.5 1.5t-70.5 0.5q-14 -1 -22.5 4.5t-15.5 15.5l-75 117q-2 4 -4.5 8t-5.5 8q-9 9 -16 -1l-14 -18t-14 -19l-35.5 -52l-35.5 -52q-7 -10 -19 -12
h-72.5t-73.5 1q-7 0 -11 1q-25 6 -10 27l76.5 108l77.5 108q8 11 15 22t15 22q8 10 7 18t-7 17l-54 86l-54 87l-35 57l-36 57q-18 28 18 28h46h27z" />
<glyph glyph-name="x" unicode="x" horiz-adv-x="698"
d="M107 639h73q18 0 25 -15q9 -21 21 -39.5t25.5 -36.5l27 -36.5t25.5 -37.5q6 -11 10 -10.5t11 11.5l42 66l41 67q4 8 7.5 13.5t8.5 9t13.5 5t23.5 1.5h75q14 0 32 0.5t32 -0.5q16 -1 14 -10t-10 -22l-53.5 -77l-52.5 -78l-41.5 -60.5l-41.5 -59.5q-8 -11 -7.5 -19.5
t6.5 -19.5l21 -34t22 -34l64.5 -88.5l65.5 -87.5q1 -2 5.5 -7t8.5 -11.5t6.5 -13t0.5 -11.5q-2 -3 -12.5 -4t-18.5 -1q-36 0 -71.5 1.5t-70.5 0.5q-14 -1 -22.5 4.5t-15.5 15.5l-75 117q-2 4 -4.5 8t-5.5 8q-9 9 -16 -1l-14 -18t-14 -19l-35.5 -52l-35.5 -52q-7 -10 -19 -12
h-72.5t-73.5 1q-7 0 -11 1q-25 6 -10 27l76.5 108l77.5 108q8 11 15 22t15 22q8 10 7 18t-7 17l-54 86l-54 87l-35 57l-36 57q-18 28 18 28h46h27z" />
<glyph glyph-name="Y" unicode="Y" horiz-adv-x="677"
d="M169 637q8 0 12 -3.5t8 -9.5q23 -34 46 -77.5t46 -78.5l5.5 -7.5l5.5 -7.5q8 -11 18 0l9 12q12 14 30 39l34.5 49l28.5 42t13 19q9 18 20.5 21t28.5 3q13 0 33 -0.5t39.5 -0.5h34.5h18q7 -2 9.5 -8t-2.5 -13q-2 -5 -5.5 -10t-7.5 -9q-20 -23 -39.5 -50.5l-40 -56
l-40.5 -55.5t-39 -50l-44 -50q-20 -20 -19 -50q4 -60 2.5 -130t2.5 -130q0 -11 -4 -17t-16 -7q-30 -2 -57 -1.5t-56 -0.5q-14 0 -18.5 5.5t-6.5 19.5q0 9 -0.5 33.5t-1 54t-0.5 57.5v43q0 13 -1 30t-4 34t-8 32.5t-14 27.5q-23 32 -42.5 65.5t-40.5 65.5q-20 29 -40.5 66.5
t-40.5 66.5q-3 5 -7 8.5t-7 8.5q-6 8 -2.5 13.5t13.5 6.5h22t41 -0.5t46 -0.5t38 1z" />
<glyph glyph-name="y" unicode="y" horiz-adv-x="677"
d="M169 637q8 0 12 -3.5t8 -9.5q23 -34 46 -77.5t46 -78.5l5.5 -7.5l5.5 -7.5q8 -11 18 0l9 12q12 14 30 39l34.5 49l28.5 42t13 19q9 18 20.5 21t28.5 3q13 0 33 -0.5t39.5 -0.5h34.5h18q7 -2 9.5 -8t-2.5 -13q-2 -5 -5.5 -10t-7.5 -9q-20 -23 -39.5 -50.5l-40 -56
l-40.5 -55.5t-39 -50l-44 -50q-20 -20 -19 -50q4 -60 2.5 -130t2.5 -130q0 -11 -4 -17t-16 -7q-30 -2 -57 -1.5t-56 -0.5q-14 0 -18.5 5.5t-6.5 19.5q0 9 -0.5 33.5t-1 54t-0.5 57.5v43q0 13 -1 30t-4 34t-8 32.5t-14 27.5q-23 32 -42.5 65.5t-40.5 65.5q-20 29 -40.5 66.5
t-40.5 66.5q-3 5 -7 8.5t-7 8.5q-6 8 -2.5 13.5t13.5 6.5h22t41 -0.5t46 -0.5t38 1z" />
<glyph glyph-name="Z" unicode="Z" horiz-adv-x="666"
d="M521 635q8 0 15 -0.5t14 -1.5q14 -2 18 -6t3 -18q0 -11 0.5 -26t0.5 -31t-0.5 -31t-1.5 -26q1 -23 -22 -50t-55 -68q-17 -21 -47 -52.5l-61 -62.5l-58 -56.5l-38 -35.5q-6 -4 -6 -12q0 -5 5.5 -5h9.5q57 -1 114 -0.5t115 -0.5h9t9 -1q16 -3 20 -8t4 -21q1 -28 0.5 -53.5
t1.5 -53.5q1 -10 -3 -13t-13 -3q-51 2 -100 0t-99 -1q-78 2 -155 2t-155 2q-6 0 -11.5 0.5t-10.5 1.5q-16 2 -16 17q-1 60 0 118q0 6 5 12.5t10 10.5q10 8 31 29l48.5 49l58 60l59.5 62l54.5 54.5t42.5 38.5l4.5 4.5t2.5 6.5t-5 4h-8q-69 2 -136.5 0.5t-136.5 -0.5
q-21 0 -26.5 4.5t-5.5 26.5q-1 28 -0.5 55.5t1.5 54.5q2 16 7 21.5t18 4.5q22 -2 61 -2h87t100 1t99 1t85 -0.5t57 -1.5z" />
<glyph glyph-name="z" unicode="z" horiz-adv-x="667"
d="M521 635q8 0 15 -0.5t14 -1.5q14 -2 18 -6t3 -18q0 -11 0.5 -26t0.5 -31t-0.5 -31t-1.5 -26q1 -23 -22 -50t-55 -68q-17 -21 -47 -52.5l-61 -62.5l-58 -56.5l-38 -35.5q-6 -4 -6 -12q0 -5 5.5 -5h9.5q57 -1 114 -0.5t115 -0.5h9t9 -1q16 -3 20 -8t4 -21q1 -28 0.5 -53.5
t1.5 -53.5q1 -10 -3 -13t-13 -3q-51 2 -100 0t-99 -1q-78 2 -155 2t-155 2q-6 0 -11.5 0.5t-10.5 1.5q-16 2 -16 17q-1 60 0 118q0 6 5 12.5t10 10.5q10 8 31 29l48.5 49l58 60l59.5 62l54.5 54.5t42.5 38.5l4.5 4.5t2.5 6.5t-5 4h-8q-69 2 -136.5 0.5t-136.5 -0.5
q-21 0 -26.5 4.5t-5.5 26.5q-1 28 -0.5 55.5t1.5 54.5q2 16 7 21.5t18 4.5q22 -2 61 -2h87t100 1t99 1t85 -0.5t57 -1.5z" />
<glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="537"
d="M434 411h12.5t18.5 -1q4 0 8 -1.5t8 -2.5q-2 -4 -3 -8t-3 -7l-21 -26.5l-21 -25.5l-47.5 -55l-48.5 -54q-15 -18 -4 -38l96 -156q4 -7 9.5 -13.5t0.5 -14.5q-4 -5 -12 -7t-16 -3q-15 -2 -30 -2h-29q-4 0 -8.5 2t-6.5 5q-12 32 -33 58t-38 55q-13 23 -27.5 44l-28.5 42
q-5 8 -5.5 13.5t6.5 13.5l71 86l71 85q5 6 14 8.5t17 4.5q11 1 22 0t28 -2zM125 -1q-12 -3 -19 2.5t-11 14.5q-17 42 -40 80.5l-45 77.5q-8 16 -7.5 27.5t10.5 25.5q26 38 50 77.5l47 79.5q9 16 21 24.5t32 6.5q16 -2 31.5 0.5t31.5 1.5q28 0 13 -21l-33.5 -50l-33.5 -49
l-21.5 -34.5l-21.5 -34.5q-14 -21 -1 -46l40 -74.5l40 -74.5l6 -15t2 -12q-2 -4 -7.5 -5t-10.5 -3q-1 0 -11 0.5t-23 1t-24.5 0.5t-14.5 -1z" />
<glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="457"
d="M50 -2q-7 0 -13 0.5t-12 1.5q-18 1 -19.5 3.5t6.5 19.5l34 78l34 77q6 12 5 21.5t-8 20.5q-17 32 -33 65.5l-33 66.5q-6 13 -3.5 16.5t17.5 4.5q20 2 39 2.5t38 -0.5q4 0 8.5 -4t6.5 -8l29 -58.5l29 -58.5q6 -12 14 -24.5t8 -25.5q1 -13 -7 -26t-13 -26
q-11 -27 -23 -53.5t-22 -53.5q-9 -25 -25 -33.5t-40 -6.5q-5 1 -9 1h-8zM259 -3q-10 -1 -19.5 -1t-19.5 -1q-38 -3 -22 31l33 70.5l33 70.5q10 18 11 34.5t-9 35.5q-12 21 -23 43l-22 45l-6 10.5l-6 11.5q-9 23 16 26q14 2 26.5 2t26.5 2q12 2 20.5 -2t13.5 -16l36 -76.5
l37 -76.5q4 -9 1.5 -15t-5.5 -14l-35.5 -81l-34.5 -81q-5 -11 -10.5 -16t-17.5 -3q-6 1 -15 0.5t-9 0.5z" />
<glyph glyph-name="dollar" unicode="$" horiz-adv-x="584"
d="M7 412q-1 49 -1.5 97t-1.5 97q0 16 5 22t21 7q11 1 22.5 0.5t23.5 -0.5q42 -2 84.5 -3.5t84.5 -3.5l49.5 -2t49.5 -4q29 -3 56 -14t47 -35q26 -32 41 -68.5t5 -80.5l-9.5 -41.5t-12.5 -40.5q-37 -81 -127 -96l-70 -10t-71 0q-3 1 -6.5 0.5t-7.5 -0.5q-13 0 -13 -13v-21
q0 -18 17 -18q21 -1 42.5 -1.5t42.5 -1.5q19 -1 22 -4.5t4 -21.5q1 -17 0.5 -27t-5.5 -14.5t-14.5 -5.5t-26.5 -1h-70q-17 -2 -16 -19q1 -15 1.5 -30t0.5 -30q0 -17 -6 -24t-22 -7q-29 1 -58 1.5t-58 1.5q-15 0 -17.5 3t-3.5 17l-2 77t0 78q0 30 0.5 70.5t0.5 77.5v63t-1 26
zM176 442q1 -14 0.5 -26.5t1.5 -26.5q0 -12 5 -16t17 -4q10 1 19.5 1t18.5 2l39.5 10t34.5 21q15 15 17 34.5t-13 34.5q-8 9 -19.5 17t-23.5 11q-20 4 -40 4t-41 1q-16 1 -16 -18v-28v-17z" />
<glyph glyph-name="underscore" unicode="_" horiz-adv-x="494"
d="M274 -143q24 1 36.5 1t22.5 0.5t22 0.5t35 1q15 0 18 -2.5t4 -16.5q2 -17 2 -33t1 -33q0 -18 -16 -19l-30 -2t-30 -1q-26 0 -38.5 -0.5t-22.5 -1.5t-22 -1.5t-38 -0.5q-11 0 -34.5 0.5t-50 1t-50 0.5t-33.5 -1q-19 -1 -26.5 4.5t-11.5 23.5q-3 16 -4.5 30t-3.5 31
q-2 11 2.5 14.5t16.5 4.5q32 0 60.5 0.5t61.5 0.5q7 0 25.5 -0.5t39.5 -0.5t39.5 -0.5t24.5 -0.5z" />
<glyph glyph-name="at" unicode="@" horiz-adv-x="698"
d="M12 176q1 60 25.5 109t66.5 91q36 35 79 57.5t95 28.5q7 1 14 1t14 2q38 6 79.5 -2t79 -24t66.5 -36t41 -37q30 -43 38 -86.5t1 -82.5t-25 -71t-39 -51q-33 -30 -73 -33.5t-75 23.5q-10 8 -18 9.5t-20 -2.5q-27 -11 -55 -10t-54 15q-8 5 -16.5 11t-12.5 14
q-9 22 -14.5 45t1.5 48q1 3 1.5 6.5t2.5 6.5q28 93 131 104q22 3 40.5 -1.5t37.5 -14.5q23 -13 19 -37q-5 -23 -0.5 -44.5t9.5 -42.5q2 -5 3 -9t3 -8q5 -8 12 -10.5t15 2.5t15.5 12t11.5 15q5 11 7.5 23.5t0.5 24.5q-8 63 -44.5 102t-103.5 44q-135 12 -211 -102
q-7 -11 -11.5 -23.5t-8.5 -25.5q-11 -48 0 -91t43 -81q22 -26 51 -39.5t64 -8.5q21 2 31 2.5t15 -4t8.5 -14l9.5 -26.5q4 -12 6 -24q2 -14 -3 -22t-19 -13q-100 -35 -192 25q-41 26 -69.5 61t-49.5 77q-5 9 -9 23.5t-7 31t-5 33t-2 29.5z" />
<glyph glyph-name="percent" unicode="%" horiz-adv-x="698"
d="M180 -8q-18 1 -35.5 1t-34.5 1t-10 16l73 149q11 20 21 40.5l20 41.5l50.5 102.5l49.5 103.5l23.5 49.5l22.5 49.5q5 10 12.5 15.5t20.5 4.5q27 -1 53.5 0t52.5 1q12 1 14.5 -1.5t-2.5 -12.5l-24.5 -55l-25.5 -54l-70 -144.5l-70 -144.5q-17 -35 -35.5 -69t-35.5 -69
q-13 -27 -42 -24q-7 1 -17.5 0.5t-10.5 -1.5zM379 120q1 34 12.5 57.5t29.5 38t42.5 21t52.5 5.5q28 -2 50.5 -17.5t34.5 -43.5q20 -48 6 -91.5t-48 -70.5q-47 -36 -100 -13q-5 2 -13 6q-40 18 -54.5 41t-12.5 67zM533 131q0 14 -11 23.5t-27 8.5q-12 -1 -23.5 -12
t-10.5 -22q0 -15 13.5 -27t28.5 -12q13 0 21.5 12t8.5 29zM4 482q3 42 21.5 63t60.5 32q25 8 46 2.5t42 -19.5q18 -12 30 -29t16.5 -36.5t2 -40.5t-12.5 -40q-12 -21 -28.5 -35t-35.5 -21t-39.5 -5.5t-40.5 12.5q-31 16 -49 45t-13 72zM149 469q2 29 -29 31
q-15 1 -26.5 -7.5t-10.5 -20.5q0 -11 11 -22t23 -12q11 -1 21 8.5t11 22.5z" />
<glyph glyph-name="numbersign" unicode="#" horiz-adv-x="604"
d="M298 1h-11q-14 0 -22 1.5t-11 5.5t-2 12t5 22l6 22l6 22q3 16 -12 17q-1 0 -1.5 0.5t-1.5 0.5q-22 2 -34.5 2t-20.5 -5t-13.5 -16.5t-12.5 -31.5q0 -1 -0.5 -1.5t-0.5 -2.5q-6 -11 -11.5 -23l-10.5 -24q-20 0 -39 -0.5t-38 0.5q-7 0 -10 5t-1 13q4 12 7.5 24t6.5 24
q4 14 0.5 18t-18.5 6q-10 1 -19.5 0.5t-19.5 -0.5q-9 1 -13.5 4.5t-2.5 13.5q2 8 3.5 17t4.5 17l9.5 25.5t9.5 14t16 5.5t27 2q15 1 23.5 2.5t13.5 6t7 13t4 22.5q1 11 -1.5 14.5t-13.5 3.5h-46q-16 0 -11 17l10 30l10 30q6 19 27 18q9 -1 18 -0.5t17 0.5q18 1 22.5 4
t10.5 20q12 35 21 74q2 7 5 11t11 4q20 0 41 0.5t41 0.5q14 0 9 -14l-24 -81q-4 -14 9 -13h28.5t28.5 2q20 1 24.5 5.5t10.5 24.5l10 34l10 34q1 3 4.5 6.5t6.5 3.5q31 1 63 0q17 0 21 -5t-1 -22q-5 -16 -9 -32t-9 -32q-2 -9 0 -12t12 -3q11 1 21 2.5t21 1.5q26 1 19 -24
q-3 -9 -8 -19l-24 -54q-14 -1 -28 -1.5t-28 -1.5q-17 0 -21 -2.5t-10 -18.5q-1 -2 -1 -5t-1 -5q-6 -20 -3.5 -23t22.5 -3h39q23 0 16 -22q-5 -15 -11 -29.5t-11 -30.5q-7 -22 -31 -21q-12 0 -24.5 -1t-24.5 0q-17 0 -21 -15q-4 -14 -7.5 -29l-6.5 -29q-2 -10 -4 -15.5
t-5.5 -8.5t-9.5 -3.5t-16 -0.5h-21v1zM259 199q10 0 19.5 -0.5t19.5 0.5q3 0 7 1t5 3q3 12 7 24t3 23q-1 9 -10 8.5t-17 -0.5q-10 1 -19.5 0.5t-19.5 0.5q-21 3 -28 -19q-5 -16 -7 -25t1 -12.5t12.5 -4t26.5 0.5z" />
<glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="677"
d="M3 175q-1 32 7 63t32 56q14 14 29.5 26t31.5 23q15 10 4 22q-30 38 -35 81t3 88q4 25 20 43.5t38 32.5q35 22 72.5 26.5t77.5 -6.5q34 -10 55 -32t35 -52q12 -27 14.5 -57.5t-3.5 -60.5t-20.5 -56t-36.5 -43q-16 -11 -16 -17t14 -21q7 -8 14 -14.5t13 -14.5q12 -14 24 0
l11 17l14 22.5t12 21t6 12.5q5 20 29 19q21 -1 43 0t42 -1q14 -1 14 -15q-2 -48 -20.5 -91t-43.5 -81q-11 -15 -10.5 -20t12.5 -18l39 -40.5l39 -41.5q2 -2 5 -5.5t5 -5.5q5 -5 9 -11t0 -14q-3 -8 -9.5 -8.5t-14.5 -0.5h-62.5t-62.5 1q-3 0 -7 3t-8.5 7t-8.5 8l-6 6
q-13 15 -31 4q-53 -32 -117 -46q-60 -13 -110 3.5t-93 54.5q-29 25 -40.5 59t-8.5 74zM227 132q8 0 16.5 3t17.5 7q9 3 10.5 9t-3.5 13l-27.5 32.5l-27.5 32.5q-8 8 -19 1q-17 -11 -24.5 -29.5t-2.5 -34.5q5 -13 25.5 -23.5t34.5 -10.5zM271 470q0 17 -6 26.5t-14 14
t-16.5 4t-13.5 -2.5q-10 -4 -15.5 -12t-2.5 -19q5 -17 11.5 -32.5t14.5 -31.5q1 -2 5 -3t6 0q13 9 22 25.5t9 30.5z" />
<glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="537"
d="M434 411h12.5t18.5 -1q4 0 8 -1.5t8 -2.5q-2 -4 -3 -8t-3 -7l-21 -26.5l-21 -25.5l-47.5 -55l-48.5 -54q-15 -18 -4 -38l96 -156q4 -7 9.5 -13.5t0.5 -14.5q-4 -5 -12 -7t-16 -3q-15 -2 -30 -2h-29q-4 0 -8.5 2t-6.5 5q-12 32 -33 58t-38 55q-13 23 -27.5 44l-28.5 42
q-5 8 -5.5 13.5t6.5 13.5l71 86l71 85q5 6 14 8.5t17 4.5q11 1 22 0t28 -2zM125 -1q-12 -3 -19 2.5t-11 14.5q-17 42 -40 80.5l-45 77.5q-8 16 -7.5 27.5t10.5 25.5q26 38 50 77.5l47 79.5q9 16 21 24.5t32 6.5q16 -2 31.5 0.5t31.5 1.5q28 0 13 -21l-33.5 -50l-33.5 -49
l-21.5 -34.5l-21.5 -34.5q-14 -21 -1 -46l40 -74.5l40 -74.5l6 -15t2 -12q-2 -4 -7.5 -5t-10.5 -3q-1 0 -11 0.5t-23 1t-24.5 0.5t-14.5 -1z" />
<glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="448"
d="M50 -2q-7 0 -13 0.5t-12 1.5q-18 1 -19.5 3.5t6.5 19.5l34 78l34 77q6 12 5 21.5t-8 20.5q-17 32 -33 65.5l-33 66.5q-6 13 -3.5 16.5t17.5 4.5q20 2 39 2.5t38 -0.5q4 0 8.5 -4t6.5 -8l29 -58.5l29 -58.5q6 -12 14 -24.5t8 -25.5q1 -13 -7 -26t-13 -26
q-11 -27 -23 -53.5t-22 -53.5q-9 -25 -25 -33.5t-40 -6.5q-5 1 -9 1h-8zM259 -3q-10 -1 -19.5 -1t-19.5 -1q-38 -3 -22 31l33 70.5l33 70.5q10 18 11 34.5t-9 35.5q-12 21 -23 43l-22 45l-6 10.5l-6 11.5q-9 23 16 26q14 2 26.5 2t26.5 2q12 2 20.5 -2t13.5 -16l36 -76.5
l37 -76.5q4 -9 1.5 -15t-5.5 -14l-35.5 -81l-34.5 -81q-5 -11 -10.5 -16t-17.5 -3q-6 1 -15 0.5t-9 0.5z" />
<glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="457"
d="M391 398q-1 -14 -1.5 -26.5t-2.5 -26.5l-54 -24q-39 -17 -78.5 -32.5l-78.5 -31.5q-4 -2 -7 -5t-7 -5q3 -3 5.5 -6t6.5 -5q50 -30 101.5 -57t105.5 -50q25 -11 22 -38q-2 -19 -2 -37t-1 -37q-2 -17 -17 -11l-21 10l-21 10l-99 49.5l-100 50.5l-57.5 30.5l-57.5 30.5
q-25 11 -23 39l2 30t0 30q-1 20 18 27l98.5 43.5l99.5 42.5l73.5 29.5l73.5 29.5q14 6 19 3t5 -17v-13t-0.5 -15t-1 -12.5z" />
<glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="473"
d="M6 119q-5 15 3 23.5t22 14.5l77 34.5l77 34.5q7 3 13.5 5.5t12.5 6.5q3 2 4.5 4.5t3.5 4.5q-5 5 -8 6q-26 11 -56 21q-38 11 -72 30t-69 36q-2 2 -4.5 6t-2.5 8q-1 23 -1 44.5t-1 44.5q0 15 18 10l54.5 -19.5t55.5 -20.5l88.5 -34.5l88.5 -34.5l31 -13.5t31 -12.5
q10 -4 12.5 -10.5t2.5 -14.5q1 -18 0.5 -35.5t1.5 -34.5q1 -15 -4 -24.5t-19 -14.5l-35.5 -16l-35.5 -16l-112 -52.5l-112 -52.5q-7 -3 -13 -6l-12 -6q-17 -8 -24 -4t-10 22q-2 16 -3 32t-3 34z" />
<glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="833"
/>
<glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="833"
/>
<glyph glyph-name="uni0406" unicode="&#x406;" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0456" unicode="&#x456;" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0490" unicode="&#x490;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q18 0 44.5 0.5t58.5 0.5h67h69v28.5v26.5t0.5 20t0.5 11q0 17 19 18q31 1 48.5 1h29.5t22 -0.5t27 -0.5q18 0 22 -4t6 -22q0 -3 0.5 -19t1 -39t1 -49.5t1 -50t1 -41.5t1.5 -23q2 -16 -2 -21.5
t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0491" unicode="&#x491;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q18 0 44.5 0.5t58.5 0.5h67h69v28.5v26.5t0.5 20t0.5 11q0 17 19 18q31 1 48.5 1h29.5t22 -0.5t27 -0.5q18 0 22 -4t6 -22q0 -3 0.5 -19t1 -39t1 -49.5t1 -50t1 -41.5t1.5 -23q2 -16 -2 -21.5
t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0407" unicode="&#x407;" horiz-adv-x="302"
d="M9 719q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM196 855q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5
t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5zM198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5
t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0457" unicode="&#x457;" horiz-adv-x="302"
d="M9 719q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM196 855q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5
t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5zM198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5
t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0404" unicode="&#x404;" horiz-adv-x="674"
d="M-22 300q-5 72 15 132.5t64 112.5q35 42 78.5 71.5t99.5 37.5q60 9 121 6q100 -3 178 -69q11 -10 11.5 -14t-9.5 -16q-4 -4 -7 -8.5t-6 -9.5l-23.5 -39l-24.5 -39q-8 -13 -15.5 -16.5t-24.5 5.5q-81 44 -173 18q-27 -8 -49.5 -23t-32.5 -44q-4 -13 -2 -16.5t16 -5.5
q9 0 33.5 -0.5t52 -0.5t52 -0.5t33.5 -0.5q21 -1 28.5 -8.5t6.5 -28.5q0 -11 -2 -21t-2 -21q0 -21 -20 -21q-8 -1 -17 -1h-17h-29.5t-48.5 0.5t-48.5 0.5h-28.5q-20 0 -14 -20q14 -46 55 -64q52 -23 103 -23.5t100 32.5q17 11 32 24t29 27q16 16 34 7q12 -6 17 -19l27 -64.5
l27 -65.5q3 -8 -0.5 -12.5t-8.5 -9.5q-43 -40 -95 -62q-67 -29 -135.5 -40.5t-141.5 11.5q-41 13 -75.5 32.5t-68.5 44.5q-33 24 -54 62t-31 78.5t-9 80.5z" />
<glyph glyph-name="uni0454" unicode="&#x454;" horiz-adv-x="674"
d="M-22 300q-5 72 15 132.5t64 112.5q35 42 78.5 71.5t99.5 37.5q60 9 121 6q100 -3 178 -69q11 -10 11.5 -14t-9.5 -16q-4 -4 -7 -8.5t-6 -9.5l-23.5 -39l-24.5 -39q-8 -13 -15.5 -16.5t-24.5 5.5q-81 44 -173 18q-27 -8 -49.5 -23t-32.5 -44q-4 -13 -2 -16.5t16 -5.5
q9 0 33.5 -0.5t52 -0.5t52 -0.5t33.5 -0.5q21 -1 28.5 -8.5t6.5 -28.5q0 -11 -2 -21t-2 -21q0 -21 -20 -21q-8 -1 -17 -1h-17h-29.5t-48.5 0.5t-48.5 0.5h-28.5q-20 0 -14 -20q14 -46 55 -64q52 -23 103 -23.5t100 32.5q17 11 32 24t29 27q16 16 34 7q12 -6 17 -19l27 -64.5
l27 -65.5q3 -8 -0.5 -12.5t-8.5 -9.5q-43 -40 -95 -62q-67 -29 -135.5 -40.5t-141.5 11.5q-41 13 -75.5 32.5t-68.5 44.5q-33 24 -54 62t-31 78.5t-9 80.5z" />
<glyph glyph-name="uni20B4" unicode="&#x20b4;" horiz-adv-x="583"
d="M261 271l-10 -6q-16 -9 -31 -19.5t-28 -23.5q-11 -11 -14 -24t0.5 -25t13.5 -21t25 -12q8 -2 15.5 -0.5t14.5 1.5q36 -1 65 6t57 21q14 7 23.5 12.5t20.5 16.5q5 5 10 3.5t8 -6.5q5 -7 8 -14t7 -15q10 -22 16 -36.5t11 -35.5q3 -11 5 -17.5t2 -11.5t-3.5 -9.5
t-12.5 -12.5q-6 -6 -12 -9q-33 -17 -62 -27t-72 -15q-26 -3 -47 -5t-41.5 -1.5t-42.5 3.5t-50 9q-60 14 -92 57.5t-39 103.5q-4 31 0.5 59t24.5 54l5 7zM187 395l17 9l33.5 18.5t32.5 20.5q12 9 14.5 25.5t-3.5 28.5q-7 14 -20 15.5t-31 1.5q-22 0 -42 -5.5t-35 -12.5
t-24.5 -13.5t-11.5 -7.5q-12 -7 -20 2q-9 9 -15 18.5t-11.5 19.5l-11 20t-14.5 20q-5 5 -7 13t4 14q19 19 34.5 32t41.5 24q14 6 39.5 12t58 7.5t71.5 -5.5t80 -27q30 -15 44 -28.5t28 -33.5q36 -50 21 -112q-5 -19 -12 -34.5t-18 -28.5zM491 443q15 0 18 -2.5t4 -16.5
q1 -9 1.5 -12.5t0.5 -5.5t0.5 -5.5t0.5 -12.5q0 -18 -16 -19l-30 -2t-30 -1h-54t-81 0.5l-93 1t-89.5 1t-70.5 0.5h-36q-19 -1 -28 3t-10 25q0 8 -0.5 12t-0.5 14q0 11 3.5 14.5t15.5 4.5h47.5h86.5h107h108.5t91 0.5t54.5 0.5zM473 316q15 0 18 -2.5t4 -16.5
q1 -9 1.5 -12.5t0.5 -5.5t0.5 -5.5t0.5 -12.5q0 -18 -16 -19l-30 -2t-30 -1h-54t-81 0.5l-93 1t-89.5 1t-70.5 0.5h-36q-19 -1 -28 3t-10 25q0 8 -0.5 12t-0.5 14q0 11 3.5 14.5t15.5 4.5h47.5h86.5h107h108.5t91 0.5t54.5 0.5z" />
<hkern u1="&#x413;" u2="&#x430;" k="70" />
<hkern u1="&#x413;" u2="&#x410;" k="70" />
<hkern u1="&#x422;" u2="&#x430;" k="50" />
<hkern u1="&#x422;" u2="&#x410;" k="50" />
<hkern u1="&#x410;" u2="&#x422;" k="50" />
<hkern u1="&#x430;" u2="&#x442;" k="50" />
<hkern u1="&#x433;" u2="&#x430;" k="70" />
<hkern u1="&#x442;" u2="&#x430;" k="50" />
<hkern u1="A" u2="T" k="50" />
<hkern u1="a" u2="t" k="50" />
<hkern u1="T" u2="a" k="50" />
<hkern u1="T" u2="A" k="50" />
<hkern u1="t" u2="a" k="50" />
<hkern u1="&#x490;" u2="&#x430;" k="70" />
<hkern u1="&#x490;" u2="&#x410;" k="70" />
<hkern u1="&#x491;" u2="&#x430;" k="70" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 113 KiB

@@ -0,0 +1,3 @@
export default function Loading() {
return <div>loading...</div>
}
+71
View File
@@ -0,0 +1,71 @@
import { tail } from "@hudozka/utils"
import type { Metadata } from "next"
import { notFound } from "next/navigation"
import { App } from "@/components/App"
import { PageContent } from "@/components/PageContent"
import { buildMetadata, MetaBuilder } from "@/lib/meta"
import { getPageBySlug, getUrls } from "@/remote/api"
export const revalidate = 30
export const dynamicParams = true
export async function generateStaticParams() {
const urls = await getUrls()
return urls.map(path => ({
slug: tail(path.split("/")),
}))
}
type Props = {
params: Promise<{ slug: string[] }>
}
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { slug } = await params
const slugPath = `/${slug.join("/")}`
const page = await getPageBySlug(slugPath)
if (!page) {
return {}
}
const m = new MetaBuilder()
.setImage(page.cover)
.setTitle(page.title)
.setDescription(page.description ?? undefined)
.build()
return buildMetadata(m)
}
export default async function SlugPage({ params }: Props) {
const { slug } = await params
const slugPath = `/${slug.join("/")}`
const page = await getPageBySlug(slugPath)
if (!page) {
notFound()
}
const breadcrumbSize = page.breadcrumb?.length ?? 0
const breadcrumbs = breadcrumbSize < 2 ? [] : (page.breadcrumb ?? [])
return (
<App
contentStyle={{
marginTop: "var(--size-l)",
marginBottom: "var(--size-xl)",
}}
breadcrumbs={breadcrumbs}
>
<PageContent
tags={page.tags}
date={page.date}
tokens={page.tokens}
documentSignature={{
date: "20.01.2021г.",
person: "Тимашева Марина Геннадьевна",
position: "Директор",
signature: "0ac4ea89753a4ba9893799442325fb41",
}}
/>
</App>
)
}
+23
View File
@@ -0,0 +1,23 @@
import { NextResponse } from "next/server"
import { siteUrl } from "@/const"
import { getRecentPages } from "@/remote/api"
export async function GET() {
const pages = await getRecentPages()
const feed = {
version: "https://jsonfeed.org/version/1.1",
title: "Шлиссельбургская ДХШ",
home_page_url: siteUrl,
feed_url: `${siteUrl}/feed.json`,
items: pages.map(page => ({
id: `${siteUrl}${page.url}`,
url: `${siteUrl}${page.url}`,
title: page.title,
date_published: new Date(page.date).toISOString(),
summary: page.excerpt,
})),
}
return NextResponse.json(feed)
}
+72
View File
@@ -0,0 +1,72 @@
import "src/style/style.css"
import "src/style/content.css"
import "src/style/article.css"
import "src/style/marker/marker-table.css"
import "src/style/kazimir/video.css"
import type { Metadata, Viewport } from "next"
import { Roboto } from "next/font/google"
import Script from "next/script"
import { YMetrika } from "@/components/YMetrika"
const roboto = Roboto({
weight: ["300", "900"],
subsets: ["cyrillic", "latin"],
display: "swap",
})
export const metadata: Metadata = {
verification: {
google: ["8BxOTw-Q02DS2KAdcGcnIMwiPZ58DVB18XpOfRibCcg", "A-TEemUw4hHpULUDCd6xhxfHnyRbgKtss90JGKXnSpw"],
other: {
"yandex-verification": "643c7dac144b9dac",
"msvalidate.01": "E878301FE3E3F12D233A6B1156889601",
"proculture-verification": "79110940fd847c3cfe52392ed68f3210",
},
},
icons: {
icon: { url: "/static/graphics/favicon-32.png", type: "image/png" },
apple: [
{ url: "/static/graphics/favicon-57.png", sizes: "57x57" },
{ url: "/static/graphics/favicon-72.png", sizes: "72x72" },
{ url: "/static/graphics/favicon-114.png", sizes: "114x114" },
{ url: "/static/graphics/favicon-144.png", sizes: "144x144" },
],
},
other: {
"apple-mobile-web-app-capable": "yes",
referrer: "unsafe-url",
},
alternates: {
types: {
"application/feed+json": "/feed.json",
},
},
}
export const viewport: Viewport = {
width: "device-width",
maximumScale: 1,
themeColor: [
{ media: "(prefers-color-scheme: light)", color: "white" },
{ media: "(prefers-color-scheme: dark)", color: "hsl(240, 10%, 10%)" },
],
}
export const revalidate = 30
export default async function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="ru" className={roboto.className}>
<head>
{process.env.NEXT_PUBLIC_YMETRIKA_ACCOUNT && (
<YMetrika account={Number(process.env.NEXT_PUBLIC_YMETRIKA_ACCOUNT)} />
)}
</head>
<body>
{children}
<Script src="https://culturaltracking.ru/static/js/spxl.js?pixelId=27154" data-pixel-id="27154" />
</body>
</html>
)
}
+10
View File
@@ -0,0 +1,10 @@
import { App } from "@/components/App"
import { NotFound } from "@/components/NotFound"
export default function NotFoundPage() {
return (
<App>
<NotFound />
</App>
)
}
+23
View File
@@ -0,0 +1,23 @@
import type { Metadata } from "next"
import { App } from "@/components/App"
import { HomeContent } from "@/components/HomeContent"
import { buildMetadata, MetaBuilder } from "@/lib/meta"
import { getHomeCards } from "@/remote/api"
export const revalidate = 30
export async function generateMetadata(): Promise<Metadata> {
const title = "Шлиссельбургская ДХШ"
const m = new MetaBuilder().setTitle(title).setData({ url: "/" }).build()
return buildMetadata(m)
}
export default async function HomePage() {
const items = await getHomeCards()
return (
<App showAuthor>
<HomeContent items={items} />
</App>
)
}
+13
View File
@@ -0,0 +1,13 @@
import type { MetadataRoute } from "next"
import { siteUrl } from "@/const"
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: "*",
allow: "/",
},
host: siteUrl,
sitemap: `${siteUrl}/sitemap.xml`,
}
}
+34
View File
@@ -0,0 +1,34 @@
import type { MetadataRoute } from "next"
import { siteUrl } from "@/const"
import { getAllTagSlugs, getUrls } from "@/remote/api"
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const [urls, tagSlugs] = await Promise.all([getUrls(), getAllTagSlugs()])
const staticPages: MetadataRoute.Sitemap = [
{
url: siteUrl,
changeFrequency: "daily",
},
{
url: `${siteUrl}/collective`,
changeFrequency: "daily",
},
{
url: `${siteUrl}/tags`,
changeFrequency: "weekly",
},
]
const dynamicPages: MetadataRoute.Sitemap = urls.map(path => ({
url: `${siteUrl}${path}`,
changeFrequency: "daily",
}))
const tagPages: MetadataRoute.Sitemap = tagSlugs.map(slug => ({
url: `${siteUrl}/tags/${slug}`,
changeFrequency: "weekly",
}))
return [...staticPages, ...dynamicPages, ...tagPages]
}
+98
View File
@@ -0,0 +1,98 @@
import { Title } from "@hudozka/ui"
import type { Metadata } from "next"
import { notFound } from "next/navigation"
import { App } from "@/components/App"
import { PageGrid } from "@/components/PageGrid"
import { Pagination } from "@/components/Pagination"
import { menu } from "@/const"
import { buildMetadata, MetaBuilder } from "@/lib/meta"
import { getAllTagSlugs, getPagesByTag } from "@/remote/api"
export const revalidate = 30
export const dynamicParams = true
const PER_PAGE = 24
export async function generateStaticParams() {
const slugs = await getAllTagSlugs()
return slugs.map(slug => ({ slug }))
}
type Props = {
params: Promise<{ slug: string }>
searchParams: Promise<{ page?: string }>
}
function parsePage(value: string | undefined): number {
const n = Number.parseInt(value ?? "1", 10)
return Number.isFinite(n) && n >= 1 ? n : 1
}
export async function generateMetadata({ params, searchParams }: Props): Promise<Metadata> {
const [{ slug }, sp] = await Promise.all([params, searchParams])
const page = parsePage(sp.page)
const listing = await getPagesByTag(slug, page, PER_PAGE)
if (!listing) {
return {}
}
const titleBase = `${listing.tag.name} — метка`
const title = page > 1 ? `${titleBase}, страница ${page}` : titleBase
const meta = new MetaBuilder().setTitle(title).setDescription(`Записи с меткой «${listing.tag.name}».`).build()
const metadata = buildMetadata(meta)
if (page > 1) {
return { ...metadata, robots: { index: false, follow: true } }
}
return metadata
}
export default async function TagPage({ params, searchParams }: Props) {
const [{ slug }, sp] = await Promise.all([params, searchParams])
const page = parsePage(sp.page)
const listing = await getPagesByTag(slug, page, PER_PAGE)
if (!listing) {
notFound()
}
const totalPages = Math.max(1, Math.ceil(listing.total / listing.perPage))
if (listing.total > 0 && page > totalPages) {
notFound()
}
const breadcrumbs = [
{ name: menu[0].name, href: "/" },
{ name: "Метки", href: "/tags" },
{ name: listing.tag.name, href: listing.tag.href },
]
return (
<App
contentStyle={{
marginTop: "var(--size-l)",
marginBottom: "var(--size-xl)",
}}
breadcrumbs={breadcrumbs}
>
<Title level={1} style={{ marginBottom: "var(--size-l)" }}>
{listing.tag.name}
</Title>
{listing.items.length === 0 ? (
<p>Пока нет записей.</p>
) : (
<>
<PageGrid items={listing.items} />
<Pagination
basePath={listing.tag.href}
page={listing.page}
total={listing.total}
perPage={listing.perPage}
/>
</>
)}
</App>
)
}
+38
View File
@@ -0,0 +1,38 @@
import { Title } from "@hudozka/ui"
import type { Metadata } from "next"
import { App } from "@/components/App"
import { TagsIndex } from "@/components/TagsIndex"
import { menu } from "@/const"
import { buildMetadata, MetaBuilder } from "@/lib/meta"
import { getAllTagsWithCounts } from "@/remote/api"
export const revalidate = 30
export async function generateMetadata(): Promise<Metadata> {
const meta = new MetaBuilder().setTitle("Метки").setDescription("Список всех меток сайта.").build()
return buildMetadata(meta)
}
export default async function TagsIndexPage() {
const tags = await getAllTagsWithCounts()
const breadcrumbs = [
{ name: menu[0].name, href: "/" },
{ name: "Метки", href: "/tags" },
]
return (
<App
contentStyle={{
marginTop: "var(--size-l)",
marginBottom: "var(--size-xl)",
}}
breadcrumbs={breadcrumbs}
>
<Title level={1} style={{ marginBottom: "var(--size-l)" }}>
Метки
</Title>
<TagsIndex items={tags} />
</App>
)
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,14 @@
import { Button } from "@hudozka/ui"
import { HiOutlineEye, HiOutlineEyeOff } from "react-icons/hi"
import { useSnapshot } from "valtio"
import { theme, toggleTheme } from "@/store/theme"
export function AccessibilityButton() {
const t = useSnapshot(theme)
return (
<Button theme="icon" size="default" onClick={toggleTheme}>
{t.theme === "default" ? <HiOutlineEyeOff size={24} /> : <HiOutlineEye size={24} />}
</Button>
)
}
@@ -0,0 +1,160 @@
import { HiCog, HiOutlineEyeOff, HiPlay } from "react-icons/hi"
import { useSnapshot } from "valtio"
import play from "@/play"
import { state as playState, setVoice } from "@/store/play"
import {
decreaseFontSize,
hideImages,
increaseFontSize,
reset,
setBlackOnWhite,
setBlueOnBlue,
setBrownOnYellow,
setDefaultTheme,
setGreenOnBrown,
setLetterSpacingFour,
setLetterSpacingOne,
setLetterSpacingTwo,
setLineHeightOneAndHalf,
setLineHeightTwo,
setLineHeightTwoAndHalf,
setSansSerifFont,
setSerifFont,
setWhiteOnBlack,
showImages,
} from "@/store/theme"
import s from "./panel.module.css"
import VoiceSelect from "./voice"
function AccessibilityPanel() {
const p = useSnapshot(playState)
return (
<div className={s.viewsettings}>
<div className={s.row}>
<div className={s.block}>
<p>Размер шрифта:</p>
<button type="button" onClick={decreaseFontSize} title="уменьшить размер шрифта">
A-
</button>
<button type="button" onClick={increaseFontSize} title="увеличить размер шрифта">
<strong>A+</strong>
</button>
</div>
<div className={s.block}>
<p>Изображения:</p>
<button type="button" onClick={showImages}>
Включить
</button>
<button type="button" onClick={hideImages}>
Выключить
</button>
</div>
<div className={s.block}>
<p>Цвет сайта:</p>
<button
type="button"
onClick={setBlackOnWhite}
title="черные буквы на белом фоне"
style={{ color: "black", backgroundColor: "white" }}
>
Ц
</button>
<button
type="button"
onClick={setWhiteOnBlack}
title="белые буквы на черном фоне"
style={{ color: "white", backgroundColor: "black" }}
>
Ц
</button>
<button
type="button"
onClick={setBlueOnBlue}
title="синии буквы на голубом фоне"
style={{ color: "oklch(32% 24% 253deg)", backgroundColor: "oklch(84% 21% 245deg)" }}
>
Ц
</button>
<button
type="button"
onClick={setBrownOnYellow}
title="коричневые буквы на желтом фоне"
style={{ color: "oklch(41% 3% 92deg)", backgroundColor: "oklch(96% 9% 101deg)" }}
>
Ц
</button>
<button
type="button"
onClick={setGreenOnBrown}
title="зеленые буквы на коричневом фоне"
style={{ color: "oklch(85% 47% 128deg)", backgroundColor: "oklch(29% 10% 61deg)" }}
>
Ц
</button>
</div>
<div className={s.block}>
<p>Шрифт:</p>
<button type="button" onClick={setSerifFont}>
С засечками
</button>
<button type="button" onClick={setSansSerifFont}>
Без засечек
</button>
</div>
<div className={s.block}>
<p>Высота строк:</p>
<button type="button" onClick={setLineHeightOneAndHalf}>
1.5
</button>
<button type="button" onClick={setLineHeightTwo}>
2.0
</button>
<button type="button" onClick={setLineHeightTwoAndHalf}>
2.5
</button>
</div>
<div className={s.block}>
<p>Межбуквенный интервал:</p>
<button type="button" onClick={setLetterSpacingOne}>
1
</button>
<button type="button" onClick={setLetterSpacingTwo}>
2
</button>
<button type="button" onClick={setLetterSpacingFour}>
4
</button>
</div>
</div>
<div className={s.row}>
<button type="button" onClick={reset}>
<HiCog />
Сброс настроек
</button>
<button type="button" onClick={setDefaultTheme}>
<HiOutlineEyeOff />
Обычная версия
</button>
<button type="button" onClick={play}>
<HiPlay />
Прослушать всё
</button>
<VoiceSelect
value={p.voice}
onChange={event => {
setVoice(event.target.value)
}}
/>
</div>
</div>
)
}
export default AccessibilityPanel
@@ -0,0 +1,90 @@
/*body {
margin: 0 auto;
padding: 0;
width: 96%;
padding-top: 90px;
}*/
.viewsettings {
display: flex;
flex-direction: column;
gap: 10px;
color: black;
background: white;
z-index: 10;
font-size: 20px !important;
line-height: 30px;
font-family: sans-serif;
letter-spacing: normal !important;
/*position: fixed;
top: 0;*/
margin: 10px;
padding: 10px;
text-align: center;
border: 2px solid;
}
.viewsettings .row {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: center;
}
.viewsettings p {
margin: 0;
}
.viewsettings .block {
display: inline-block;
vertical-align: top;
line-height: 30px;
border: 2px solid;
padding: 6px 10px;
margin: 2px;
}
.viewsettings .block button {
display: inline-block;
border: 1px solid;
text-decoration: none;
padding: 4px 10px;
margin-right: 8px;
cursor: pointer;
background-color: transparent;
color: black;
font: inherit;
}
.viewsettings .block button:hover {
background-color: #cfcfcf !important;
color: #000 !important;
}
.viewsettings .block button:focus {
outline: 1px solid !important;
}
.viewsettings button {
display: flex;
align-items: center;
gap: 4px;
border: 1px solid;
font-size: 20px !important;
padding: 4px 10px;
cursor: pointer;
color: black;
background-color: white;
}
.viewsettings button:hover {
background-color: #cfcfcf !important;
color: #000 !important;
}
.viewsettings button:focus {
outline: 1px solid !important;
}
Loaded 100 of 411 files, more files were not shown because too many files have changed in this diff. Show more