@seamlet/astro 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.2
4
+
5
+ - The examples of the README, the comments and the tests name no real site: `my-site`, «Моя кофейня», `example.ru`. A CMS a feature needs is named by the version of the description it reads. Nothing behaves differently.
6
+
7
+ ## 2.2.1
8
+
9
+ - The Russian texts a visitor and the owner read are edited to the copy rules of `.claude/skills/russian-copy`; nothing behaves differently. `RequestForm.astro` says «Заявка отправлена. Ответим по контактам, которые вы оставили.» once a request is sent and «Заявка не ушла. Всё, что вы ввели, осталось в форме — отправьте ещё раз через минуту.» when it is not; the hidden trap field reads «Оставьте это поле пустым». `REQUEST_ISSUE_TEXTS`: «Слишком длинный текст — сократите его», «Проверьте почту: нужен адрес вида name@mail.ru», «Выберите вариант из списка». The labels of the presets: `note` of `openingHoursField()` is «Примечание», `summary` of `productFields()` «Строка для карточки», `image` of `seoFields()` «Картинка для ссылки в соцсетях». `privacyPolicyTextOf` fixes two sentences of section 5 that did not agree in grammar; its legal meaning is the same.
10
+
3
11
  ## 2.2.0
4
12
 
5
13
  - Moving parts: `data-cms-popover` (`POPOVER_ATTRIBUTE`) on a part of the page that moves, or on a marked element, has its fields edited in the editor's popover instead of typed in place, and in the editor the part holds still while the pointer is over it and once one of its fields is chosen: the bridge pauses its CSS animations and transitions and sets `data-cms-held` (`HELD_ATTRIBUTE`), by which a site stops motion it runs with a script. The protocol is the same, so every editor reads it.
@@ -25,7 +33,7 @@ A site with a form adds the page `/consent` (or passes `consentHref`).
25
33
 
26
34
  - Documents: `file({ label })` holds a PDF the owner uploads in the CMS, `{ src, name }` (`FileValue`): a price list, a menu, a contract. An empty name of a file asks for its file (`missing-file-src`). A static build copies the uploaded documents its pages link to, as it copies the photos, and the route of uploads serves them on request; `isUploadedFile` names both.
27
35
 
28
- A site with a file field needs a CMS that reads 1.4 (cms.seamlet.ru from its release that takes documents). Code with an exhaustive `switch` over `FieldKind` or over the issues of `parseContent` gets the new member to handle.
36
+ A site with a file field needs a CMS that reads 1.4. Code with an exhaustive `switch` over `FieldKind` or over the issues of `parseContent` gets the new member to handle.
29
37
 
30
38
  ## 1.3.0
31
39
 
@@ -33,7 +41,7 @@ A site with a file field needs a CMS that reads 1.4 (cms.seamlet.ru from its rel
33
41
  - `readRequestEntries(body)` reads a request's body into its words, and `readRequestValues(form, entries)` checks a request the same way in the browser and in the CMS, with issues by field (`required`, `too-long`, `invalid-phone`, `invalid-email`, `unknown-option`) and their texts (`REQUEST_ISSUE_TEXTS`).
34
42
  - The events `seamlet:request-send` (cancelable), `seamlet:request-sent` and `seamlet:request-failed` on the form let the site's code send a request its own way or follow it.
35
43
 
36
- A site with forms needs a CMS that reads descriptions of 1.3 (cms.seamlet.ru from its release that takes requests). Code with an exhaustive `switch` over `SiteDescriptionProblem` gets its new members to handle.
44
+ A site with forms needs a CMS that reads descriptions of 1.3. Code with an exhaustive `switch` over `SiteDescriptionProblem` gets its new members to handle.
37
45
 
38
46
  ## 1.2.1
39
47
 
@@ -51,7 +59,7 @@ A site with forms needs a CMS that reads descriptions of 1.3 (cms.seamlet.ru fro
51
59
  - `site.pageOf(rest, content)` and `site.staticPaths(content)` render every page of a site from one `[...page]` route, the pages of records too. `site.pageAt` renders the site's own pages only, and is deprecated.
52
60
  - The preview answers an address of no page at once, without asking the CMS or reading the draft.
53
61
 
54
- A site with a `slug` or pages of records needs a CMS that reads descriptions of 1.1 (cms.seamlet.ru from its release 1.1.0): an older one refuses the kind `slug`. Code with an exhaustive `switch` over `Field`, `ContentIssue`, `SchemaProblemReason` or `SiteDescriptionProblem` gets their new members to handle.
62
+ A site with a `slug` or pages of records needs a CMS that reads descriptions of 1.1: an older one refuses the kind `slug`. Code with an exhaustive `switch` over `Field`, `ContentIssue`, `SchemaProblemReason` or `SiteDescriptionProblem` gets their new members to handle.
55
63
 
56
64
  ## 1.0.0
57
65
 
package/README.md CHANGED
@@ -7,7 +7,7 @@ Connects an [Astro](https://astro.build) site to the Seamlet CMS ([source](https
7
7
  The quick way, in an Astro project:
8
8
 
9
9
  ```bash
10
- npx @seamlet/astro init --title "Кофейня «Зерно»" # seamlet.json, src/schema.ts, src/seamlet.ts, a first page component
10
+ npx @seamlet/astro init --title "Моя кофейня" # seamlet.json, src/schema.ts, src/seamlet.ts, a first page component
11
11
  npx astro add @seamlet/astro node # the integration, and an adapter for the preview
12
12
  ```
13
13
 
@@ -23,8 +23,8 @@ npx astro add @seamlet/astro node # the integration, and an ad
23
23
 
24
24
  ```json
25
25
  {
26
- "id": "zerno",
27
- "title": "Кофейня «Зерно»",
26
+ "id": "cafe",
27
+ "title": "Моя кофейня",
28
28
  "cms": "https://cms.seamlet.ru"
29
29
  }
30
30
  ```
@@ -297,7 +297,7 @@ A reference to a record removed since is kept, with the issue `missing-record`:
297
297
 
298
298
  ## Pages of records
299
299
 
300
- A collection can have a page for each of its records: a product, a dish, an article. The site writes one component, and the owner who adds a record in the CMS gets its page, which the CMS's editor opens and edits like any other page (a CMS that reads descriptions of version 1.1, as cms.seamlet.ru does from its release 1.1.0). `recordPages` names the collection and the address of its pages, `[record]` standing for the record:
300
+ A collection can have a page for each of its records: a product, a dish, an article. The site writes one component, and the owner who adds a record in the CMS gets its page, which the CMS's editor opens and edits like any other page (a CMS that reads descriptions of version 1.1). `recordPages` names the collection and the address of its pages, `[record]` standing for the record:
301
301
 
302
302
  ```ts
303
303
  // src/schema.ts
@@ -469,14 +469,14 @@ import { productPages } from "../../schema";
469
469
  export async function GET() {
470
470
  const content = await site.loadPublishedContent();
471
471
  const offers = productOffersOf(content.products, {
472
- siteUrl: "https://lesnaya.ru",
472
+ siteUrl: "https://example.ru",
473
473
  pathOf: productPages.pathOf,
474
474
  });
475
475
  const feed = yandexFeedOf(
476
476
  {
477
- name: "Лесная мастерская",
478
- company: "ООО «Лесная мастерская»",
479
- url: "https://lesnaya.ru",
477
+ name: "Ромашка",
478
+ company: "ООО «Ромашка»",
479
+ url: "https://example.ru",
480
480
  },
481
481
  offers,
482
482
  new Date(),
@@ -38,8 +38,8 @@ interface Props {
38
38
  const {
39
39
  form,
40
40
  submitLabel = "Отправить",
41
- sentText = "Спасибо! Заявка отправлена, мы скоро свяжемся с вами.",
42
- failedText = "Не получилось отправить заявку. Попробуйте ещё раз чуть позже.",
41
+ sentText = "Заявка отправлена. Ответим по контактам, которые вы оставили.",
42
+ failedText = "Заявка не ушла. Всё, что вы ввели, осталось в форме — отправьте ещё раз через минуту.",
43
43
  consentHref = CONSENT_PAGE_PATH,
44
44
  policyHref = PRIVACY_PAGE_PATH,
45
45
  instance = form.id,
@@ -127,7 +127,7 @@ const isLineField = (field: RequestField): field is LineField =>
127
127
  ))}
128
128
  <div class="seamlet-form-trap" aria-hidden="true">
129
129
  <label>
130
- Это поле заполнять не нужно
130
+ Оставьте это поле пустым
131
131
  <input
132
132
  type="text"
133
133
  name={REQUEST_TRAP_KEY}
package/dist/bridge.js CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  shortcutOf,
19
19
  toggleList,
20
20
  toggleMark
21
- } from "./chunk-CRGGWROR.js";
21
+ } from "./chunk-QSRFU2G3.js";
22
22
  import {
23
23
  FIELD_PATH_ATTRIBUTE,
24
24
  HELD_ATTRIBUTE,
@@ -30,7 +30,7 @@ import {
30
30
  readRichText,
31
31
  resolveFieldPath,
32
32
  safeHref
33
- } from "./chunk-M5XOTSSU.js";
33
+ } from "./chunk-HFCQRPPJ.js";
34
34
 
35
35
  // src/bridge/dom-nodes.ts
36
36
  function asElement(value) {
@@ -6,7 +6,7 @@ import {
6
6
  recordAt,
7
7
  recordPageAt,
8
8
  recordPagePath
9
- } from "./chunk-M5XOTSSU.js";
9
+ } from "./chunk-HFCQRPPJ.js";
10
10
 
11
11
  // src/site-pages.ts
12
12
  function pagePathOf(rest) {
@@ -1039,7 +1039,7 @@ function seoFields(options = {}) {
1039
1039
  multiline: true,
1040
1040
  maxLength: 160
1041
1041
  }),
1042
- image: image({ label: "\u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0430 \u0434\u043B\u044F \u0441\u043E\u0446\u0441\u0435\u0442\u0435\u0439" })
1042
+ image: image({ label: "\u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0430 \u0434\u043B\u044F \u0441\u0441\u044B\u043B\u043A\u0438 \u0432 \u0441\u043E\u0446\u0441\u0435\u0442\u044F\u0445" })
1043
1043
  }
1044
1044
  });
1045
1045
  }
@@ -1075,7 +1075,7 @@ function openingHoursField(options = {}) {
1075
1075
  days: choices({ label: "\u0414\u043D\u0438", options: WEEKDAYS }),
1076
1076
  opens: time({ label: "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F" }),
1077
1077
  closes: time({ label: "\u0417\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F" }),
1078
- note: text({ label: "\u041F\u043E\u0434\u043F\u0438\u0441\u044C", maxLength: 40 })
1078
+ note: text({ label: "\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435", maxLength: 40 })
1079
1079
  }
1080
1080
  });
1081
1081
  }
@@ -1087,7 +1087,11 @@ function productFields() {
1087
1087
  label: "\u0424\u043E\u0442\u043E",
1088
1088
  item: { photo: image({ label: "\u0424\u043E\u0442\u043E" }) }
1089
1089
  }),
1090
- summary: richText({ label: "\u041A\u0440\u0430\u0442\u043A\u043E", inline: true, maxLength: 200 }),
1090
+ summary: richText({
1091
+ label: "\u0421\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438",
1092
+ inline: true,
1093
+ maxLength: 200
1094
+ }),
1091
1095
  description: richText({ label: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435" }),
1092
1096
  price: number({ label: "\u0426\u0435\u043D\u0430, \u20BD", min: 0 }),
1093
1097
  priceNote: text({ label: "\u0423\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u0435 \u0446\u0435\u043D\u044B", maxLength: 40 }),
@@ -1752,10 +1756,10 @@ var LINE_BREAKS = /\r\n?/gu;
1752
1756
  var ANY_LINE_BREAK = /[\r\n]+/gu;
1753
1757
  var REQUEST_ISSUE_TEXTS = {
1754
1758
  required: "\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u044D\u0442\u043E \u043F\u043E\u043B\u0435",
1755
- "too-long": "\u0417\u0434\u0435\u0441\u044C \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442",
1759
+ "too-long": "\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u2014 \u0441\u043E\u043A\u0440\u0430\u0442\u0438\u0442\u0435 \u0435\u0433\u043E",
1756
1760
  "invalid-phone": "\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430",
1757
- "invalid-email": "\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u043F\u043E\u0447\u0442\u044B",
1758
- "unknown-option": "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432"
1761
+ "invalid-email": "\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0447\u0442\u0443: \u043D\u0443\u0436\u0435\u043D \u0430\u0434\u0440\u0435\u0441 \u0432\u0438\u0434\u0430 name@mail.ru",
1762
+ "unknown-option": "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430"
1759
1763
  };
1760
1764
  var CONSENT_REQUIRED_TEXT = "\u041E\u0442\u043C\u0435\u0442\u044C\u0442\u0435 \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445";
1761
1765
  function readRequestValues(form, entries) {
@@ -1931,10 +1935,10 @@ function processingOf() {
1931
1935
  return [
1932
1936
  "5. \u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0438 \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438",
1933
1937
  `5.1. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u043C\u0438 \u0434\u0430\u043D\u043D\u044B\u043C\u0438: ${ACTIONS}.`,
1934
- `5.2. \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u043E\u0440\u0443\u0447\u0430\u0435\u0442 \u043F\u0440\u0438\u0451\u043C \u0437\u0430\u044F\u0432\u043E\u043A \u0441 \u0444\u043E\u0440\u043C \u0421\u0430\u0439\u0442\u0430 \u0438 \u0438\u0445 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0443 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435 ${PROCESSOR}. \u0421\u0435\u0440\u0432\u0438\u0441 \u043E\u0431\u044F\u0437\u0430\u043D \u0441\u043E\u0431\u043B\u044E\u0434\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445, \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0442\u044C \u0438\u0445 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C \u043F\u043E \u0441\u0442\u0430\u0442\u044C\u0435 19 \u0417\u0430\u043A\u043E\u043D\u0430, \u043D\u0435 \u0445\u0440\u0430\u043D\u0438\u0442 \u0437\u0430\u044F\u0432\u043A\u0443 \u0434\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u043D\u0443\u0436\u043D\u043E \u0434\u043B\u044F \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0438 \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u0432 \u0441\u0432\u043E\u0438\u0445 \u0446\u0435\u043B\u044F\u0445. \u041E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0441\u0443\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u0437\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043D\u0435\u0441\u0451\u0442 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440.`,
1938
+ `5.2. \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u043E\u0440\u0443\u0447\u0430\u0435\u0442 \u043F\u0440\u0438\u0451\u043C \u0437\u0430\u044F\u0432\u043E\u043A \u0441 \u0444\u043E\u0440\u043C \u0421\u0430\u0439\u0442\u0430 \u0438 \u0438\u0445 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0443 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435 ${PROCESSOR}. \u0421\u0435\u0440\u0432\u0438\u0441 \u043E\u0431\u044F\u0437\u0430\u043D \u0441\u043E\u0431\u043B\u044E\u0434\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445, \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0442\u044C \u0438\u0445 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C \u043F\u043E \u0441\u0442\u0430\u0442\u044C\u0435 19 \u0417\u0430\u043A\u043E\u043D\u0430, \u043D\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443 \u0434\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u043D\u0443\u0436\u043D\u043E \u0434\u043B\u044F \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0438 \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u0432 \u0441\u0432\u043E\u0438\u0445 \u0446\u0435\u043B\u044F\u0445. \u041E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0441\u0443\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u0437\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043D\u0435\u0441\u0451\u0442 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440.`,
1935
1939
  "5.3. \u0417\u0430\u043F\u0438\u0441\u044C, \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F, \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435, \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435, \u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u0435 \u0438 \u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 \u0433\u0440\u0430\u0436\u0434\u0430\u043D \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0439 \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0435\u0434\u0443\u0442\u0441\u044F \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0431\u0430\u0437 \u0434\u0430\u043D\u043D\u044B\u0445, \u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0438\u0445\u0441\u044F \u043D\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043E\u0440\u0438\u0438 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0439 \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438. \u0422\u0440\u0430\u043D\u0441\u0433\u0440\u0430\u043D\u0438\u0447\u043D\u0430\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043D\u0435 \u043E\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043B\u044F\u0435\u0442\u0441\u044F.",
1936
1940
  "5.4. \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u043D\u0435 \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u044F\u0435\u0442 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0438\u0445 \u0442\u0440\u0435\u0442\u044C\u0438\u043C \u043B\u0438\u0446\u0430\u043C, \u043A\u0440\u043E\u043C\u0435 \u0441\u043B\u0443\u0447\u0430\u0435\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u043A\u043E\u043D\u043E\u043C (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443 \u0441\u0443\u0434\u0430 \u0438\u043B\u0438 \u0443\u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0435\u043D\u043D\u044B\u0445 \u043E\u0440\u0433\u0430\u043D\u043E\u0432).",
1937
- "5.5. \u0414\u043B\u044F \u0437\u0430\u0449\u0438\u0442\u044B \u0434\u0430\u043D\u043D\u044B\u0445 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043C\u0435\u0440\u044B \u043F\u043E \u0441\u0442\u0430\u0442\u044C\u044F\u043C 18.1 \u0438 19 \u0417\u0430\u043A\u043E\u043D\u0430: \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u0435\u0442 \u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0437\u0430 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438, \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0434\u0430\u043D\u043D\u044B\u043C \u043B\u0438\u0446\u0430\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u043E\u043D \u043D\u0443\u0436\u0435\u043D \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B, \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u043E \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u044B\u043C \u043A\u0430\u043D\u0430\u043B\u0430\u043C \u0441\u0432\u044F\u0437\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u0449\u0438\u0442\u044B \u043E\u0442 \u043D\u0435\u0441\u0430\u043D\u043A\u0446\u0438\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u0438 \u0443\u043D\u0438\u0447\u0442\u043E\u0436\u0430\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u044B.",
1941
+ "5.5. \u0414\u043B\u044F \u0437\u0430\u0449\u0438\u0442\u044B \u0434\u0430\u043D\u043D\u044B\u0445 \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043C\u0435\u0440\u044B \u043F\u043E \u0441\u0442\u0430\u0442\u044C\u044F\u043C 18.1 \u0438 19 \u0417\u0430\u043A\u043E\u043D\u0430: \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u0435\u0442 \u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0437\u0430 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438, \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0434\u0430\u043D\u043D\u044B\u043C \u043A\u0440\u0443\u0433\u043E\u043C \u043B\u0438\u0446, \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u043E\u043D \u043D\u0443\u0436\u0435\u043D \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B, \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u043E \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u044B\u043C \u043A\u0430\u043D\u0430\u043B\u0430\u043C \u0441\u0432\u044F\u0437\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u0449\u0438\u0442\u044B \u043E\u0442 \u043D\u0435\u0441\u0430\u043D\u043A\u0446\u0438\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u0438 \u0443\u043D\u0438\u0447\u0442\u043E\u0436\u0430\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u044B.",
1938
1942
  "5.6. \u041E \u043D\u0435\u043F\u0440\u0430\u0432\u043E\u043C\u0435\u0440\u043D\u043E\u0439 \u0438\u043B\u0438 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E\u0439 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445, \u043F\u043E\u0432\u043B\u0451\u043A\u0448\u0435\u0439 \u043D\u0430\u0440\u0443\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0430\u0432 \u0441\u0443\u0431\u044A\u0435\u043A\u0442\u043E\u0432, \u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u044F\u0435\u0442 \u0420\u043E\u0441\u043A\u043E\u043C\u043D\u0430\u0434\u0437\u043E\u0440 \u0432 \u0441\u0440\u043E\u043A\u0438, \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0447\u0430\u0441\u0442\u044C\u044E 3.1 \u0441\u0442\u0430\u0442\u044C\u0438 21 \u0417\u0430\u043A\u043E\u043D\u0430."
1939
1943
  ];
1940
1944
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pagePathOf
3
- } from "./chunk-6MBWE5QT.js";
3
+ } from "./chunk-3DQI4G6H.js";
4
4
  import {
5
5
  FIELD_PATH_SEPARATOR,
6
6
  collectionAt,
@@ -9,7 +9,7 @@ import {
9
9
  newRecord,
10
10
  recordAt,
11
11
  recordPageAt
12
- } from "./chunk-M5XOTSSU.js";
12
+ } from "./chunk-HFCQRPPJ.js";
13
13
 
14
14
  // src/preview-requests.ts
15
15
  var MAX_DRAFT_BYTES = 1024 * 1024;
@@ -6,7 +6,7 @@ import {
6
6
  readRichText,
7
7
  resolveFieldPath,
8
8
  safeHref
9
- } from "./chunk-M5XOTSSU.js";
9
+ } from "./chunk-HFCQRPPJ.js";
10
10
 
11
11
  // src/bridge/editor-shortcuts.ts
12
12
  function shortcutOf(event) {
package/dist/cli.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  SITE_CONFIG_FILE,
4
4
  isSiteId,
5
5
  readSiteConfig
6
- } from "./chunk-M5XOTSSU.js";
6
+ } from "./chunk-HFCQRPPJ.js";
7
7
  import {
8
8
  SITE_MODULE_FILE
9
9
  } from "./chunk-QCVWHHJC.js";
package/dist/client.js CHANGED
@@ -16,7 +16,7 @@ if (isFramed && isPreview) {
16
16
  });
17
17
  }
18
18
  if (document.querySelector(REQUEST_FORM_SELECTOR) !== null) {
19
- void import("./request-sending-UQEY57Y6.js").then(({ connectRequestForms }) => {
19
+ void import("./request-sending-6NTXTW3A.js").then(({ connectRequestForms }) => {
20
20
  connectRequestForms(document, { isPreview });
21
21
  });
22
22
  }
package/dist/feeds.d.ts CHANGED
@@ -17,7 +17,7 @@ interface FeedOffer {
17
17
  }
18
18
  type ProductRecord = RecordOf<ReturnType<typeof productFields>>;
19
19
  interface ProductOffersOptions {
20
- /** The site's address: `https://lesnaya.ru`. */
20
+ /** The site's address: `https://example.ru`. */
21
21
  readonly siteUrl: string;
22
22
  /** The page of a product (`recordPages(...).pathOf`), or none: the catalog's page is used. */
23
23
  readonly pathOf?: (product: ProductRecord) => string | undefined;
@@ -38,9 +38,9 @@ interface AvitoSeller {
38
38
  declare function avitoFeedOf(seller: AvitoSeller, offers: readonly FeedOffer[], fieldsOf?: (offer: FeedOffer) => Readonly<Record<string, string>>): string;
39
39
 
40
40
  interface YandexShop {
41
- /** The short name buyers know: «Лесная мастерская». */
41
+ /** The short name buyers know: «Ромашка». */
42
42
  readonly name: string;
43
- /** The company's full name: «ООО «Лесная мастерская»». */
43
+ /** The company's full name: «ООО «Ромашка»». */
44
44
  readonly company: string;
45
45
  /** The site's address. */
46
46
  readonly url: string;
package/dist/feeds.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  plainTextOf
3
- } from "./chunk-M5XOTSSU.js";
3
+ } from "./chunk-HFCQRPPJ.js";
4
4
 
5
5
  // src/feeds/xml.ts
6
6
  var ESCAPES = {
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  isUploadedFile
3
- } from "./chunk-TR7TTMQR.js";
3
+ } from "./chunk-OA3GJYVY.js";
4
4
  import {
5
5
  OWN_PHOTOS_PATH
6
6
  } from "./chunk-W2LIOR2C.js";
7
- import "./chunk-6MBWE5QT.js";
7
+ import "./chunk-3DQI4G6H.js";
8
8
  import {
9
9
  SITE_CONFIG_FILE,
10
10
  SITE_DESCRIPTION_PATH,
11
11
  isJsonObject,
12
12
  readSiteConfig
13
- } from "./chunk-M5XOTSSU.js";
13
+ } from "./chunk-HFCQRPPJ.js";
14
14
  import {
15
15
  PREVIEW_PATH,
16
16
  SITE_MODULE_FILE,
@@ -98,7 +98,7 @@ import { readFile as readFile2 } from "fs/promises";
98
98
  import { fileURLToPath } from "url";
99
99
  var FIELD_RULES = {
100
100
  id: "the site's id in the CMS: lower-case letters, digits and single hyphens, such as coffee-shop",
101
- title: "how the CMS names the site, such as \xAB\u041A\u043E\u0444\u0435\u0439\u043D\u044F \xAB\u0417\u0435\u0440\u043D\u043E\xBB\xBB",
101
+ title: "how the CMS names the site, such as \xAB\u041C\u043E\u044F \u043A\u043E\u0444\u0435\u0439\u043D\u044F\xBB",
102
102
  cms: "the address of the CMS, such as https://cms.seamlet.ru"
103
103
  };
104
104
  async function loadSiteConfig(root, cmsOverride) {
@@ -6,9 +6,9 @@ import {
6
6
  previewContentAt,
7
7
  previewHeadersOf,
8
8
  readDraft
9
- } from "./chunk-TR7TTMQR.js";
10
- import "./chunk-6MBWE5QT.js";
11
- import "./chunk-M5XOTSSU.js";
9
+ } from "./chunk-OA3GJYVY.js";
10
+ import "./chunk-3DQI4G6H.js";
11
+ import "./chunk-HFCQRPPJ.js";
12
12
  export {
13
13
  MAX_DRAFT_BYTES,
14
14
  isPageAddress,
package/dist/protocol.js CHANGED
@@ -22,8 +22,8 @@ import {
22
22
  shortcutOf,
23
23
  toggleList,
24
24
  toggleMark
25
- } from "./chunk-CRGGWROR.js";
26
- import "./chunk-M5XOTSSU.js";
25
+ } from "./chunk-QSRFU2G3.js";
26
+ import "./chunk-HFCQRPPJ.js";
27
27
  import "./chunk-QCVWHHJC.js";
28
28
  export {
29
29
  OWN_PHOTOS_PATH,
@@ -12,7 +12,7 @@ import {
12
12
  isJsonObject,
13
13
  readRequestForm,
14
14
  readRequestValues
15
- } from "./chunk-M5XOTSSU.js";
15
+ } from "./chunk-HFCQRPPJ.js";
16
16
 
17
17
  // src/request-sending.ts
18
18
  var STATUS_CREATED = 201;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  isUploadedFile
3
- } from "../chunk-TR7TTMQR.js";
4
- import "../chunk-6MBWE5QT.js";
5
- import "../chunk-M5XOTSSU.js";
3
+ } from "../chunk-OA3GJYVY.js";
4
+ import "../chunk-3DQI4G6H.js";
5
+ import "../chunk-HFCQRPPJ.js";
6
6
  import {
7
7
  uploadedPhotoPath
8
8
  } from "../chunk-QCVWHHJC.js";
package/dist/schema.d.ts CHANGED
@@ -129,7 +129,7 @@ declare const SITE_CONFIG_FILE = "seamlet.json";
129
129
  interface SiteConfig {
130
130
  /** The site's id in the CMS: its address there (`/sites/<id>`) and the name of its content. */
131
131
  readonly id: string;
132
- /** How the CMS names the site: «Кофейня «Зерно»». */
132
+ /** How the CMS names the site: «Моя кофейня». */
133
133
  readonly title: string;
134
134
  /** The origin of the CMS the site belongs to: `https://cms.seamlet.ru`. */
135
135
  readonly cms: string;
@@ -221,7 +221,7 @@ declare function requestsPathOf(siteId: string): string;
221
221
 
222
222
  /** The business that collects the data: as its documents name it. */
223
223
  interface PolicyOperator {
224
- /** «ООО «Лесная мастерская»» or «ИП Иванов Иван Иванович». */
224
+ /** «ООО «Ромашка»» or «ИП Иванов Иван Иванович». */
225
225
  readonly name: string;
226
226
  readonly inn: string;
227
227
  readonly address: string;
package/dist/schema.js CHANGED
@@ -114,7 +114,7 @@ import {
114
114
  toggle,
115
115
  url,
116
116
  withRecordIds
117
- } from "./chunk-M5XOTSSU.js";
117
+ } from "./chunk-HFCQRPPJ.js";
118
118
  export {
119
119
  CONSENT_PAGE_PATH,
120
120
  CONSENT_REQUIRED_TEXT,
package/dist/site.js CHANGED
@@ -3,12 +3,12 @@ import {
3
3
  previewedPageAt,
4
4
  renderedPageAt,
5
5
  staticPagesOf
6
- } from "./chunk-6MBWE5QT.js";
6
+ } from "./chunk-3DQI4G6H.js";
7
7
  import {
8
8
  checkSiteDescription,
9
9
  formatFieldPath,
10
10
  parseContent
11
- } from "./chunk-M5XOTSSU.js";
11
+ } from "./chunk-HFCQRPPJ.js";
12
12
  import {
13
13
  SITE_MODULE_FILE
14
14
  } from "./chunk-QCVWHHJC.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamlet/astro",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "Connects an Astro site to the Seamlet CMS: the schema of its content, the preview the editor frames, and its published content.",
5
5
  "license": "MIT",
6
6
  "type": "module",