erudit 3.0.0-dev.4 → 3.0.0-dev.6

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.
Files changed (243) hide show
  1. package/app/app.vue +195 -172
  2. package/app/components/Loading.vue +23 -23
  3. package/app/components/SiteAside.vue +393 -382
  4. package/app/components/SiteMain.vue +35 -35
  5. package/app/components/ads/BannerTemplate.vue +51 -51
  6. package/app/components/ads/BottomBanner.vue +45 -45
  7. package/app/components/ads/LeftBanner.vue +50 -50
  8. package/app/components/aside/AsideListItem.vue +74 -74
  9. package/app/components/aside/AsideMajor.vue +56 -56
  10. package/app/components/aside/AsideMinor.vue +71 -71
  11. package/app/components/aside/major/PaneContentScroll.vue +23 -23
  12. package/app/components/aside/major/PaneSwitch.vue +54 -54
  13. package/app/components/aside/major/PaneSwitchButton.vue +63 -63
  14. package/app/components/aside/major/SiteInfo.vue +85 -85
  15. package/app/components/aside/major/panes/Language.vue +79 -79
  16. package/app/components/aside/major/panes/Pages.vue +34 -34
  17. package/app/components/aside/major/panes/Search.vue +11 -11
  18. package/app/components/aside/major/panes/nav/Nav.vue +87 -91
  19. package/app/components/aside/major/panes/nav/NavBook.vue +87 -87
  20. package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
  21. package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
  22. package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
  23. package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
  24. package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
  25. package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
  26. package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
  27. package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
  28. package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
  29. package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
  30. package/app/components/aside/major/panes/other/ItemGenerator.vue +15 -15
  31. package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
  32. package/app/components/aside/major/panes/other/Other.vue +16 -16
  33. package/app/components/aside/minor/AsideMinorContributor.vue +5 -5
  34. package/app/components/aside/minor/AsideMinorNews.vue +11 -11
  35. package/app/components/aside/minor/AsideMinorPane.vue +15 -15
  36. package/app/components/aside/minor/AsideMinorTopLink.vue +67 -67
  37. package/app/components/aside/minor/Contribute.vue +145 -145
  38. package/app/components/aside/minor/content/AsideMinorContent.vue +92 -92
  39. package/app/components/aside/minor/topic/AsideMinorTopic.vue +32 -32
  40. package/app/components/aside/minor/topic/TopicContributors.vue +177 -177
  41. package/app/components/aside/minor/topic/TopicNav.vue +49 -49
  42. package/app/components/aside/minor/topic/TopicToc.vue +219 -203
  43. package/app/components/aside/minor/topic/TopicTocItem.vue +30 -31
  44. package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
  45. package/app/components/bitran/BitranContent.vue +70 -63
  46. package/app/components/bitran/RenderWrapper.vue +10 -10
  47. package/app/components/contributor/ContributorAvatar.vue +43 -43
  48. package/app/components/contributor/ContributorListItem.vue +35 -35
  49. package/app/components/main/topic/MainTopic.vue +79 -79
  50. package/app/components/main/topic/TopicPartSwitch.vue +118 -118
  51. package/app/components/main/utils/Breadcrumb.vue +75 -75
  52. package/app/components/main/utils/ContentDecoration.vue +29 -29
  53. package/app/components/main/utils/ContentDescription.vue +19 -19
  54. package/app/components/main/utils/ContentPopover.vue +188 -176
  55. package/app/components/main/utils/ContentPopovers.vue +105 -105
  56. package/app/components/main/utils/ContentReferences.vue +70 -70
  57. package/app/components/main/utils/ContentSection.vue +45 -45
  58. package/app/components/main/utils/ContentTitle.vue +63 -39
  59. package/app/components/main/utils/reference/ReferenceGroup.vue +38 -38
  60. package/app/components/main/utils/reference/ReferenceItem.vue +68 -68
  61. package/app/components/main/utils/reference/ReferenceSource.vue +116 -116
  62. package/app/components/preview/Preview.vue +186 -177
  63. package/app/components/preview/PreviewDisplay.vue +139 -139
  64. package/app/components/preview/PreviewFooterAction.vue +73 -73
  65. package/app/components/preview/PreviewLoading.vue +14 -14
  66. package/app/components/preview/PreviewScreen.vue +141 -99
  67. package/app/components/preview/display/Alert.vue +50 -50
  68. package/app/components/preview/display/Custom.vue +18 -18
  69. package/app/components/preview/display/GenericLink.vue +48 -48
  70. package/app/components/preview/display/PageLink.vue +20 -20
  71. package/app/components/preview/display/Unique.vue +49 -49
  72. package/app/components/transition/Fade.vue +19 -19
  73. package/app/components/tree/TreeContainer.vue +11 -11
  74. package/app/components/tree/TreeItem.vue +89 -89
  75. package/app/composables/bitran.ts +129 -127
  76. package/app/composables/bitranContent.ts +39 -39
  77. package/app/composables/bitranLocation.ts +7 -7
  78. package/app/composables/contentData.ts +36 -36
  79. package/app/composables/contentPage.ts +157 -156
  80. package/app/composables/contentRoute.ts +45 -45
  81. package/app/composables/darkMagic.ts +24 -24
  82. package/app/composables/externalApi.ts +63 -63
  83. package/app/composables/favicon.ts +8 -8
  84. package/app/composables/formatText.ts +86 -86
  85. package/app/composables/majorPane.ts +60 -60
  86. package/app/composables/phrases.ts +81 -81
  87. package/app/composables/theme.ts +29 -29
  88. package/app/composables/url.ts +33 -33
  89. package/app/pages/_test/preview.vue +110 -110
  90. package/app/pages/article/[...articleId].vue +3 -3
  91. package/app/pages/book/[...bookId].vue +47 -47
  92. package/app/pages/group/[...groupId].vue +65 -65
  93. package/app/pages/index.vue +32 -32
  94. package/app/pages/members.vue +6 -6
  95. package/app/pages/practice/[...practice].vue +3 -3
  96. package/app/pages/summary/[...summaryId].vue +3 -3
  97. package/app/public/favicon/article.svg +5 -5
  98. package/app/public/favicon/default.svg +3 -3
  99. package/app/public/favicon/practice.svg +3 -3
  100. package/app/public/favicon/summary.svg +4 -4
  101. package/app/public/logotype.svg +2 -2
  102. package/app/scripts/_immediate.js +9 -9
  103. package/app/scripts/aside/index.ts +59 -59
  104. package/app/scripts/aside/major/nav.ts +26 -26
  105. package/app/scripts/aside/minor/state.ts +37 -37
  106. package/app/scripts/aside/minor/topic.ts +3 -3
  107. package/app/scripts/flag.ts +28 -28
  108. package/app/scripts/og.ts +27 -27
  109. package/app/scripts/preview/build.ts +73 -73
  110. package/app/scripts/preview/data/alert.ts +19 -19
  111. package/app/scripts/preview/data/custom.ts +8 -8
  112. package/app/scripts/preview/data/genericLink.ts +24 -24
  113. package/app/scripts/preview/data/pageLink.ts +22 -22
  114. package/app/scripts/preview/data/unique.ts +71 -71
  115. package/app/scripts/preview/data.ts +24 -24
  116. package/app/scripts/preview/display.ts +37 -37
  117. package/app/scripts/preview/footer.ts +9 -9
  118. package/app/scripts/preview/request.ts +51 -51
  119. package/app/scripts/preview/state.ts +63 -63
  120. package/app/styles/_immediate.css +7 -7
  121. package/app/styles/_util.scss +43 -43
  122. package/app/styles/_utils.scss +44 -44
  123. package/app/styles/app.scss +91 -91
  124. package/app/styles/def/_bp.scss +27 -27
  125. package/app/styles/def/_size.scss +7 -7
  126. package/app/styles/def/_z.scss +5 -5
  127. package/app/styles/normalize.scss +63 -63
  128. package/app/styles/partials/_darkMagic.scss +5 -5
  129. package/app/styles/partials/_fnav.scss +15 -15
  130. package/app/styles/partials/_preview.scss +5 -5
  131. package/globalPath.ts +21 -21
  132. package/globals/bitran.ts +2 -47
  133. package/globals/content.ts +22 -22
  134. package/globals/contributor.ts +5 -5
  135. package/globals/erudit.ts +5 -5
  136. package/globals/register.ts +18 -18
  137. package/languages/en.ts +95 -95
  138. package/languages/ru.ts +99 -99
  139. package/module/bitran.ts +35 -34
  140. package/module/config.ts +34 -34
  141. package/module/imports.ts +50 -46
  142. package/module/index.ts +47 -47
  143. package/module/logger.ts +10 -10
  144. package/module/paths.ts +22 -22
  145. package/module/restart.ts +61 -61
  146. package/nuxt.config.ts +99 -112
  147. package/package.json +10 -8
  148. package/server/api/aside/major/nav/bookIds.ts +5 -5
  149. package/server/api/aside/major/nav/bookNav/[...bookId].ts +20 -20
  150. package/server/api/aside/major/nav/global.ts +7 -7
  151. package/server/api/aside/minor/news.ts +7 -7
  152. package/server/api/aside/minor/path.ts +78 -78
  153. package/server/api/bitran/content/[location].ts +8 -8
  154. package/server/api/bitran/toc/[location].ts +7 -7
  155. package/server/api/content/data.ts +72 -72
  156. package/server/api/contributor/count.ts +6 -6
  157. package/server/api/fake/content.ts +11 -11
  158. package/server/api/fake/shared/languages.ts +12 -12
  159. package/server/api/language/functions.ts +12 -12
  160. package/server/api/language/phrase/[phraseId].ts +19 -19
  161. package/server/api/language/phraseIds.ts +8 -8
  162. package/server/api/preview/page/[...parts].ts +51 -51
  163. package/server/api/preview/unique/[location].ts +57 -57
  164. package/server/plugin/bitran/content.ts +187 -187
  165. package/server/plugin/bitran/location.ts +25 -25
  166. package/server/plugin/bitran/products/include.ts +230 -230
  167. package/server/plugin/bitran/products/link.ts +116 -116
  168. package/server/plugin/bitran/setup.ts +11 -9
  169. package/server/plugin/bitran/toc.ts +83 -83
  170. package/server/plugin/bitran/transpiler.ts +48 -46
  171. package/server/plugin/build/close.ts +10 -10
  172. package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
  173. package/server/plugin/build/jobs/content/generic.ts +176 -176
  174. package/server/plugin/build/jobs/content/parse.ts +100 -100
  175. package/server/plugin/build/jobs/content/path.ts +6 -6
  176. package/server/plugin/build/jobs/content/type/book.ts +9 -9
  177. package/server/plugin/build/jobs/content/type/group.ts +37 -37
  178. package/server/plugin/build/jobs/content/type/topic.ts +36 -36
  179. package/server/plugin/build/jobs/contributors.ts +66 -66
  180. package/server/plugin/build/jobs/language.ts +36 -36
  181. package/server/plugin/build/jobs/nav.ts +214 -210
  182. package/server/plugin/build/process.ts +25 -25
  183. package/server/plugin/build/rebuild.ts +55 -55
  184. package/server/plugin/build/setup.ts +21 -21
  185. package/server/plugin/content/absoluteId.ts +94 -94
  186. package/server/plugin/content/context.ts +116 -112
  187. package/server/plugin/db/entities/Book.ts +7 -7
  188. package/server/plugin/db/entities/Content.ts +49 -49
  189. package/server/plugin/db/entities/Contribution.ts +10 -10
  190. package/server/plugin/db/entities/Contributor.ts +16 -16
  191. package/server/plugin/db/entities/Group.ts +14 -14
  192. package/server/plugin/db/entities/Hash.ts +15 -15
  193. package/server/plugin/db/entities/Topic.ts +20 -20
  194. package/server/plugin/db/entities/Unique.ts +21 -21
  195. package/server/plugin/db/setup.ts +34 -34
  196. package/server/plugin/global.ts +17 -18
  197. package/server/plugin/importer.ts +12 -12
  198. package/server/plugin/index.ts +9 -9
  199. package/server/plugin/logger.ts +23 -23
  200. package/server/plugin/nav/node.ts +26 -26
  201. package/server/plugin/nav/utils.ts +129 -129
  202. package/server/plugin/repository/book.ts +21 -21
  203. package/server/plugin/repository/content.ts +238 -238
  204. package/server/plugin/repository/contributor.ts +8 -8
  205. package/server/plugin/repository/frontNav.ts +148 -148
  206. package/server/plugin/repository/topic.ts +32 -32
  207. package/server/tsconfig.json +9 -9
  208. package/shared/aside/minor.ts +50 -50
  209. package/shared/asset.ts +15 -15
  210. package/shared/bitran/context.ts +8 -8
  211. package/shared/bitran/default.ts +46 -46
  212. package/shared/bitran/link/Link.vue +166 -167
  213. package/shared/bitran/link/factory.ts +24 -24
  214. package/shared/bitran/link/languages/en.ts +7 -7
  215. package/shared/bitran/link/languages/ru.ts +7 -7
  216. package/shared/bitran/link/renderer.ts +21 -21
  217. package/shared/bitran/link/shared.ts +17 -17
  218. package/shared/bitran/link/target.ts +134 -134
  219. package/shared/bitran/link/transpiler.ts +10 -10
  220. package/shared/bitran/location.ts +166 -166
  221. package/shared/bitran/toc.ts +8 -8
  222. package/shared/content/context.ts +9 -9
  223. package/shared/content/data/base.ts +32 -32
  224. package/shared/content/data/index.ts +5 -5
  225. package/shared/content/data/type/book.ts +5 -5
  226. package/shared/content/data/type/group.ts +6 -6
  227. package/shared/content/data/type/topic.ts +11 -11
  228. package/shared/content/previousNext.ts +9 -9
  229. package/shared/contributor.ts +5 -5
  230. package/shared/frontNav.ts +41 -41
  231. package/shared/icons.ts +38 -38
  232. package/shared/image.ts +5 -5
  233. package/shared/link.ts +25 -25
  234. package/shared/popover.ts +8 -0
  235. package/shared/types/language.ts +75 -75
  236. package/shared/utils/objectsEqual.ts +4 -4
  237. package/shared/utils/stringColor.ts +9 -9
  238. package/test/bitran/link/target.test.ts +141 -141
  239. package/test/bitran/location.test.ts +143 -143
  240. package/tsconfig.json +8 -8
  241. package/utils/stress.ts +9 -9
  242. package/app/components/main/utils/ContentFlag.vue +0 -15
  243. package/app/styles/default.scss +0 -83
@@ -1,110 +1,110 @@
1
- <script lang="ts" setup>
2
- import { PreviewDataType } from '@app/scripts/preview/data';
3
- import { createPreviewError } from '@app/scripts/preview/data/alert';
4
- import { PreviewRequestType } from '@app/scripts/preview/request';
5
- import {
6
- PreviewThemeName,
7
- showPreview,
8
- togglePreview,
9
- } from '@app/scripts/preview/state';
10
-
11
- function showCustom() {
12
- showPreview({
13
- type: PreviewRequestType.Data,
14
- data: {
15
- type: PreviewDataType.Custom,
16
- message: 'This is custom message for preview!',
17
- footer: {
18
- //iconName: 'arrow-left',
19
- iconSvg:
20
- '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.42436 0H9.57565L14.995 16H11.8276L10.8115 13H5.18855L4.17242 16H1.005L6.42436 0ZM6.20468 10H9.79533L8 4.69952L6.20468 10Z"></path> </g></svg>',
21
- secondary: 'Secondary raw text',
22
- primary: 'Primary raw text',
23
- href: 'https://google.com',
24
- },
25
- },
26
- });
27
- }
28
-
29
- function showAlert(theme: PreviewThemeName) {
30
- showPreview({
31
- type: PreviewRequestType.Data,
32
- data: createPreviewError({
33
- theme,
34
- message: 'This is message!',
35
- title: 'Custom Title',
36
- pre: JSON.stringify(
37
- {
38
- foo: 1337,
39
- bar: 'Some text',
40
- },
41
- null,
42
- 4,
43
- ),
44
- }),
45
- });
46
- }
47
- </script>
48
-
49
- <template>
50
- <button @click="() => togglePreview()">Toggle Preview</button>
51
- <div>
52
- Show:
53
- <br />
54
- <button :class="$style.button" @click="showCustom">Custom</button>
55
- <br />
56
- <button
57
- :class="$style.button"
58
- v-for="theme in PreviewThemeName"
59
- @click="() => showAlert(theme)"
60
- >
61
- Alert {{ theme }}
62
- </button>
63
- <br />
64
- <button
65
- :class="$style.button"
66
- @click="
67
- showPreview({
68
- type: PreviewRequestType.MissingElement,
69
- elementId: 'foo-id',
70
- })
71
- "
72
- >
73
- Missing element
74
- </button>
75
- <button
76
- :class="$style.button"
77
- @click="
78
- showPreview({
79
- type: PreviewRequestType.MissingElement,
80
- elementId: 'foo-id',
81
- hashMismatch: { current: 'bar', expected: 'baz' },
82
- })
83
- "
84
- >
85
- Missing element + hash mismatch
86
- </button>
87
- <br />
88
- <button
89
- :class="$style.button"
90
- @click="
91
- showPreview({
92
- type: PreviewRequestType.HashMismatch,
93
- currentHash: 'foo',
94
- expectedHash: 'bar',
95
- })
96
- "
97
- >
98
- Hash mismatch
99
- </button>
100
- </div>
101
- </template>
102
-
103
- <style lang="scss" module>
104
- .button {
105
- border: 2px solid var(--border);
106
- border-radius: 3px;
107
- padding: 3px;
108
- margin: 3px;
109
- }
110
- </style>
1
+ <script lang="ts" setup>
2
+ import { PreviewDataType } from '@app/scripts/preview/data';
3
+ import { createPreviewError } from '@app/scripts/preview/data/alert';
4
+ import { PreviewRequestType } from '@app/scripts/preview/request';
5
+ import {
6
+ PreviewThemeName,
7
+ showPreview,
8
+ togglePreview,
9
+ } from '@app/scripts/preview/state';
10
+
11
+ function showCustom() {
12
+ showPreview({
13
+ type: PreviewRequestType.Data,
14
+ data: {
15
+ type: PreviewDataType.Custom,
16
+ message: 'This is custom message for preview!',
17
+ footer: {
18
+ //iconName: 'arrow-left',
19
+ iconSvg:
20
+ '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.42436 0H9.57565L14.995 16H11.8276L10.8115 13H5.18855L4.17242 16H1.005L6.42436 0ZM6.20468 10H9.79533L8 4.69952L6.20468 10Z"></path> </g></svg>',
21
+ secondary: 'Secondary raw text',
22
+ primary: 'Primary raw text',
23
+ href: 'https://google.com',
24
+ },
25
+ },
26
+ });
27
+ }
28
+
29
+ function showAlert(theme: PreviewThemeName) {
30
+ showPreview({
31
+ type: PreviewRequestType.Data,
32
+ data: createPreviewError({
33
+ theme,
34
+ message: 'This is message!',
35
+ title: 'Custom Title',
36
+ pre: JSON.stringify(
37
+ {
38
+ foo: 1337,
39
+ bar: 'Some text',
40
+ },
41
+ null,
42
+ 4,
43
+ ),
44
+ }),
45
+ });
46
+ }
47
+ </script>
48
+
49
+ <template>
50
+ <button @click="() => togglePreview()">Toggle Preview</button>
51
+ <div>
52
+ Show:
53
+ <br />
54
+ <button :class="$style.button" @click="showCustom">Custom</button>
55
+ <br />
56
+ <button
57
+ :class="$style.button"
58
+ v-for="theme in PreviewThemeName"
59
+ @click="() => showAlert(theme)"
60
+ >
61
+ Alert {{ theme }}
62
+ </button>
63
+ <br />
64
+ <button
65
+ :class="$style.button"
66
+ @click="
67
+ showPreview({
68
+ type: PreviewRequestType.MissingElement,
69
+ elementId: 'foo-id',
70
+ })
71
+ "
72
+ >
73
+ Missing element
74
+ </button>
75
+ <button
76
+ :class="$style.button"
77
+ @click="
78
+ showPreview({
79
+ type: PreviewRequestType.MissingElement,
80
+ elementId: 'foo-id',
81
+ hashMismatch: { current: 'bar', expected: 'baz' },
82
+ })
83
+ "
84
+ >
85
+ Missing element + hash mismatch
86
+ </button>
87
+ <br />
88
+ <button
89
+ :class="$style.button"
90
+ @click="
91
+ showPreview({
92
+ type: PreviewRequestType.HashMismatch,
93
+ currentHash: 'foo',
94
+ expectedHash: 'bar',
95
+ })
96
+ "
97
+ >
98
+ Hash mismatch
99
+ </button>
100
+ </div>
101
+ </template>
102
+
103
+ <style lang="scss" module>
104
+ .button {
105
+ border: 2px solid var(--border);
106
+ border-radius: 3px;
107
+ padding: 3px;
108
+ margin: 3px;
109
+ }
110
+ </style>
@@ -1,3 +1,3 @@
1
- <template>
2
- <MainTopic />
3
- </template>
1
+ <template>
2
+ <MainTopic />
3
+ </template>
@@ -1,47 +1,47 @@
1
- <script lang="ts" setup>
2
- import type { ContentBookData } from '@erudit/shared/content/data/type/book';
3
- import type { MyIconName } from '#my-icons';
4
-
5
- import ContentDecoration from '@app/components/main/utils/ContentDecoration.vue';
6
- import Breadcrumb from '@app/components/main/utils/Breadcrumb.vue';
7
- import ContentTitle from '@app/components/main/utils/ContentTitle.vue';
8
- import ContentDescription from '@app/components/main/utils/ContentDescription.vue';
9
- import ContentPopovers from '@app/components/main/utils/ContentPopovers.vue';
10
-
11
- const bookData = await useContentData<ContentBookData>();
12
- await useContentPage(bookData);
13
-
14
- const phrase = await usePhrases('book');
15
- </script>
16
-
17
- <template>
18
- <ContentDecoration
19
- v-if="bookData.generic.decoration"
20
- :decoration="bookData.generic.decoration"
21
- />
22
-
23
- <Breadcrumb
24
- v-if="bookData.generic.context?.length > 1"
25
- :context="bookData.generic.context"
26
- />
27
-
28
- <ContentTitle
29
- :title="
30
- bookData.generic?.title ||
31
- bookData.generic.contentId.split('/').pop()!
32
- "
33
- :icon="<MyIconName>'outline/book'"
34
- :hint="phrase.book"
35
- />
36
-
37
- <ContentDescription
38
- v-if="bookData.generic?.description"
39
- :description="bookData.generic?.description"
40
- />
41
-
42
- <ContentPopovers :generic="bookData.generic" />
43
-
44
- <!-- Counters, fancy "GO LEARN" button and etc. -->
45
-
46
- <div style="clear: both"></div>
47
- </template>
1
+ <script lang="ts" setup>
2
+ import type { ContentBookData } from '@erudit/shared/content/data/type/book';
3
+ import type { MyIconName } from '#my-icons';
4
+
5
+ import ContentDecoration from '@app/components/main/utils/ContentDecoration.vue';
6
+ import Breadcrumb from '@app/components/main/utils/Breadcrumb.vue';
7
+ import ContentTitle from '@app/components/main/utils/ContentTitle.vue';
8
+ import ContentDescription from '@app/components/main/utils/ContentDescription.vue';
9
+ import ContentPopovers from '@app/components/main/utils/ContentPopovers.vue';
10
+
11
+ const bookData = await useContentData<ContentBookData>();
12
+ await useContentPage(bookData);
13
+
14
+ const phrase = await usePhrases('book');
15
+ </script>
16
+
17
+ <template>
18
+ <ContentDecoration
19
+ v-if="bookData.generic.decoration"
20
+ :decoration="bookData.generic.decoration"
21
+ />
22
+
23
+ <Breadcrumb
24
+ v-if="bookData.generic.context?.length > 1"
25
+ :context="bookData.generic.context"
26
+ />
27
+
28
+ <ContentTitle
29
+ :title="
30
+ bookData.generic?.title ||
31
+ bookData.generic.contentId.split('/').pop()!
32
+ "
33
+ :icon="<MyIconName>'outline/book'"
34
+ :hint="phrase.book"
35
+ />
36
+
37
+ <ContentDescription
38
+ v-if="bookData.generic?.description"
39
+ :description="bookData.generic?.description"
40
+ />
41
+
42
+ <ContentPopovers :generic="bookData.generic" />
43
+
44
+ <!-- Counters, fancy "GO LEARN" button and etc. -->
45
+
46
+ <div style="clear: both"></div>
47
+ </template>
@@ -1,65 +1,65 @@
1
- <script lang="ts" setup>
2
- import { NO_ALIASES } from '@erudit-js/bitran-elements/aliases/shared';
3
-
4
- import { type ContentGroupData } from '@shared/content/data/type/group';
5
- import eruditConfig from '#erudit/config';
6
-
7
- import ContentDecoration from '@app/components/main/utils/ContentDecoration.vue';
8
- import Breadcrumb from '@app/components/main/utils/Breadcrumb.vue';
9
- import ContentTitle from '@app/components/main/utils/ContentTitle.vue';
10
- import ContentDescription from '@app/components/main/utils/ContentDescription.vue';
11
- import ContentPopovers from '@app/components/main/utils/ContentPopovers.vue';
12
- import ContentSection from '@app/components/main/utils/ContentSection.vue';
13
- import { locationIcon } from '@erudit/shared/icons';
14
-
15
- const location = useBitranLocation();
16
-
17
- const groupData = await useContentData<ContentGroupData>();
18
- await useContentPage(groupData);
19
-
20
- const content = await useBitranContent(location);
21
- const phrase = await usePhrases('group');
22
- </script>
23
-
24
- <template>
25
- <ContentDecoration
26
- v-if="groupData.generic.decoration"
27
- :decoration="groupData.generic.decoration"
28
- />
29
-
30
- <Breadcrumb
31
- v-if="groupData.generic.context?.length > 1"
32
- :context="groupData.generic.context"
33
- />
34
-
35
- <ContentTitle
36
- :title="
37
- groupData.generic?.title ||
38
- groupData.generic.contentId.split('/').pop()!
39
- "
40
- :icon="locationIcon(location!)"
41
- :hint="phrase.group"
42
- />
43
-
44
- <ContentDescription
45
- v-if="groupData.generic?.description"
46
- :description="groupData.generic?.description"
47
- />
48
-
49
- <ContentPopovers :generic="groupData.generic" />
50
-
51
- <!-- TODO: List of materials in group -->
52
-
53
- <div style="clear: both"></div>
54
-
55
- <hr style="display: none" />
56
-
57
- <ContentSection>
58
- <BitranContent
59
- :content
60
- :context="{ location, aliases: NO_ALIASES() }"
61
- />
62
- </ContentSection>
63
-
64
- <AdsBottomBanner v-if="eruditConfig.ads?.bottomBlockId" />
65
- </template>
1
+ <script lang="ts" setup>
2
+ import { NO_ALIASES } from '@erudit-js/bitran-elements/aliases/shared';
3
+
4
+ import { type ContentGroupData } from '@shared/content/data/type/group';
5
+ import eruditConfig from '#erudit/config';
6
+
7
+ import ContentDecoration from '@app/components/main/utils/ContentDecoration.vue';
8
+ import Breadcrumb from '@app/components/main/utils/Breadcrumb.vue';
9
+ import ContentTitle from '@app/components/main/utils/ContentTitle.vue';
10
+ import ContentDescription from '@app/components/main/utils/ContentDescription.vue';
11
+ import ContentPopovers from '@app/components/main/utils/ContentPopovers.vue';
12
+ import ContentSection from '@app/components/main/utils/ContentSection.vue';
13
+ import { locationIcon } from '@erudit/shared/icons';
14
+
15
+ const location = useBitranLocation();
16
+
17
+ const groupData = await useContentData<ContentGroupData>();
18
+ await useContentPage(groupData);
19
+
20
+ const content = await useBitranContent(location);
21
+ const phrase = await usePhrases('group');
22
+ </script>
23
+
24
+ <template>
25
+ <ContentDecoration
26
+ v-if="groupData.generic.decoration"
27
+ :decoration="groupData.generic.decoration"
28
+ />
29
+
30
+ <Breadcrumb
31
+ v-if="groupData.generic.context?.length > 1"
32
+ :context="groupData.generic.context"
33
+ />
34
+
35
+ <ContentTitle
36
+ :title="
37
+ groupData.generic?.title ||
38
+ groupData.generic.contentId.split('/').pop()!
39
+ "
40
+ :icon="locationIcon(location!)"
41
+ :hint="phrase.group"
42
+ />
43
+
44
+ <ContentDescription
45
+ v-if="groupData.generic?.description"
46
+ :description="groupData.generic?.description"
47
+ />
48
+
49
+ <ContentPopovers :generic="groupData.generic" />
50
+
51
+ <!-- TODO: List of materials in group -->
52
+
53
+ <div style="clear: both"></div>
54
+
55
+ <hr style="display: none" />
56
+
57
+ <ContentSection>
58
+ <BitranContent
59
+ :content
60
+ :context="{ location, aliases: NO_ALIASES() }"
61
+ />
62
+ </ContentSection>
63
+
64
+ <AdsBottomBanner v-if="eruditConfig.ads?.bottomBlockId" />
65
+ </template>
@@ -1,32 +1,32 @@
1
- <script lang="ts" setup>
2
- import eruditConfig from '#erudit/config';
3
-
4
- const phrase = await usePhrases('seo_index_title', 'seo_index_description');
5
-
6
- const seoTitle =
7
- eruditConfig.seo?.indexTitle ||
8
- eruditConfig.seo?.title ||
9
- phrase.seo_index_title;
10
- const seoDescription =
11
- eruditConfig.seo?.indexDescription || phrase.seo_index_description;
12
-
13
- useSeoMeta({
14
- title: seoTitle,
15
- ogTitle: seoTitle,
16
- description: seoDescription,
17
- ogDescription: seoDescription,
18
- });
19
- </script>
20
-
21
- <template>
22
- <div style="padding: var(--_pMainY) var(--_pMainX)">
23
- <h1>
24
- {{
25
- eruditConfig.seo?.title ||
26
- eruditConfig.site?.title ||
27
- phrase.seo_index_title
28
- }}
29
- </h1>
30
- <p>TODO</p>
31
- </div>
32
- </template>
1
+ <script lang="ts" setup>
2
+ import eruditConfig from '#erudit/config';
3
+
4
+ const phrase = await usePhrases('seo_index_title', 'seo_index_description');
5
+
6
+ const seoTitle =
7
+ eruditConfig.seo?.indexTitle ||
8
+ eruditConfig.seo?.title ||
9
+ phrase.seo_index_title;
10
+ const seoDescription =
11
+ eruditConfig.seo?.indexDescription || phrase.seo_index_description;
12
+
13
+ useSeoMeta({
14
+ title: seoTitle,
15
+ ogTitle: seoTitle,
16
+ description: seoDescription,
17
+ ogDescription: seoDescription,
18
+ });
19
+ </script>
20
+
21
+ <template>
22
+ <div style="padding: var(--_pMainY) var(--_pMainX)">
23
+ <h1>
24
+ {{
25
+ eruditConfig.seo?.title ||
26
+ eruditConfig.site?.title ||
27
+ phrase.seo_index_title
28
+ }}
29
+ </h1>
30
+ <p>TODO</p>
31
+ </div>
32
+ </template>
@@ -1,6 +1,6 @@
1
- <script lang="ts" setup></script>
2
-
3
- <template>
4
- <p>Members</p>
5
- <NuxtLink to="/practice/topic-b">Погнали епты!</NuxtLink>
6
- </template>
1
+ <script lang="ts" setup></script>
2
+
3
+ <template>
4
+ <p>Members</p>
5
+ <NuxtLink to="/practice/topic-b">Погнали епты!</NuxtLink>
6
+ </template>
@@ -1,3 +1,3 @@
1
- <template>
2
- <MainTopic />
3
- </template>
1
+ <template>
2
+ <MainTopic />
3
+ </template>
@@ -1,3 +1,3 @@
1
- <template>
2
- <MainTopic />
3
- </template>
1
+ <template>
2
+ <MainTopic />
3
+ </template>
@@ -1,10 +1,10 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
2
  <defs>
3
- <linearGradient id="gradient" x1="74.98" y1="423.02" x2="437.02" y2="60.98" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#6fa552"/>
5
- <stop offset="1" stop-color="#4475bc"/>
3
+ <linearGradient id="gradient" x1="75" y1="423" x2="437" y2="61" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#4aa44c"/>
5
+ <stop offset="1" stop-color="#1278b9"/>
6
6
  </linearGradient>
7
7
  </defs>
8
- <circle cx="256" cy="256" r="256" fill="url(#gradient)"/>
9
- <path d="M124.13,354.9c-4.67,0-8.59-1.58-11.74-4.74-3.16-3.16-4.74-7.07-4.74-11.74s1.58-8.59,4.74-11.74c3.16-3.16,7.07-4.74,11.74-4.74h164.84c4.67,0,8.59,1.58,11.74,4.74,3.16,3.16,4.74,7.07,4.74,11.74s-1.58,8.59-4.74,11.74c-3.16,3.16-7.07,4.74-11.74,4.74H124.13ZM124.13,272.48c-4.67,0-8.59-1.58-11.74-4.74-3.16-3.16-4.74-7.07-4.74-11.74s1.58-8.59,4.74-11.74c3.16-3.16,7.07-4.74,11.74-4.74h263.74c4.67,0,8.59,1.58,11.74,4.74,3.16,3.16,4.74,7.07,4.74,11.74s-1.58,8.59-4.74,11.74c-3.16,3.16-7.07,4.74-11.74,4.74H124.13ZM124.13,190.07c-4.67,0-8.59-1.58-11.74-4.74-3.16-3.16-4.74-7.07-4.74-11.74s1.58-8.59,4.74-11.74c3.16-3.16,7.07-4.74,11.74-4.74h263.74c4.67,0,8.59,1.58,11.74,4.74,3.16,3.16,4.74,7.07,4.74,11.74s-1.58,8.59-4.74,11.74c-3.16,3.16-7.07,4.74-11.74,4.74H124.13Z" fill="#fff"/>
8
+ <circle fill="url(#gradient)" cx="256" cy="256" r="256"/>
9
+ <path fill="white" d="M372.4,179.3h-232.8c-6.6,0-12-5.4-12-12v-26.3c0-6.6,5.4-12,12-12h232.8c6.6,0,12,5.4,12,12v26.3c0,6.6-5.4,12-12,12ZM384.4,269.2v-26.3c0-6.6-5.4-12-12-12h-232.8c-6.6,0-12,5.4-12,12v26.3c0,6.6,5.4,12,12,12h232.8c6.6,0,12-5.4,12-12ZM384.4,371v-26.3c0-6.6-5.4-12-12-12h-232.8c-6.6,0-12,5.4-12,12v26.3c0,6.6,5.4,12,12,12h232.8c6.6,0,12-5.4,12-12Z"/>
10
10
  </svg>
@@ -1,10 +1,10 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="75" y1="423" x2="437" y2="61" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#6fa552"/>
5
- <stop offset="1" stop-color="#4475bc"/>
4
+ <stop offset="0" stop-color="#4aa44c"/>
5
+ <stop offset="1" stop-color="#1278b9"/>
6
6
  </linearGradient>
7
7
  </defs>
8
- <circle fill="url(#gradient)" class="cls-2" cx="256" cy="256" r="256"/>
8
+ <circle fill="url(#gradient)" cx="256" cy="256" r="256"/>
9
9
  <path fill="white" d="M385.2,317.4v-91.1l-122.9,61.9c-5.5,2.8-11.4,4.3-17.5,4.3s-12-1.4-17.4-4.3l-126.5-63.9c-3.3-1.7-5.9-4.1-7.9-7s-2.9-6.1-2.9-9.6,1-6.6,2.9-9.6c2-3,4.6-5.4,7.9-7.2l126.5-63.9c2.8-1.5,5.7-2.6,8.6-3.3,2.9-.7,5.9-1,8.9-1s5.9.4,8.9,1c2.9.7,5.8,1.8,8.6,3.3l149.2,75.2c3.1,1.7,5.6,4,7.6,6.9,1.9,2.9,2.9,6.1,2.9,9.8v98.7c0,5-1.8,9.3-5.4,12.9-3.6,3.6-7.8,5.4-12.9,5.4s-9.3-1.8-13-5.4c-3.6-3.6-5.5-7.9-5.5-13h0ZM235.8,388.5c3,.5,5.9.8,8.9.8s5.9-.3,8.9-.8c2.9-.5,5.9-1.6,8.6-3.1l67.9-34.1c6.2-3.1,11.2-7.7,14.9-13.7,3.8-6.1,5.6-12.6,5.6-19.6v-37.9l-88.4,44.6c-5.4,2.9-11.3,4.3-17.4,4.3s-12-1.5-17.5-4.3l-88.4-44.6v37.9c0,7,1.9,13.6,5.6,19.6,3.8,6,8.7,10.6,14.9,13.7l67.9,34.1h0c2.8,1.5,5.7,2.6,8.6,3.1Z"/>
10
10
  </svg>
@@ -1,10 +1,10 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="74.98" y1="423.02" x2="437.02" y2="60.98" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#6fa552"/>
5
- <stop offset="1" stop-color="#4475bc"/>
4
+ <stop offset="0" stop-color="#4aa44c"/>
5
+ <stop offset="1" stop-color="#1278b9"/>
6
6
  </linearGradient>
7
7
  </defs>
8
8
  <circle cx="256" cy="256" r="256" fill="url(#gradient)"/>
9
- <path d="M216.29,267.91l129.71-129.71,52.94,52.94-182.66,182.66-103.24-103.24,52.94-52.94,50.3,50.3Z" fill="#fff"/>
9
+ <path fill="white" d="M216.29,267.91l129.71-129.71,52.94,52.94-182.66,182.66-103.24-103.24,52.94-52.94,50.3,50.3Z" />
10
10
  </svg>
@@ -1,10 +1,10 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="74.98" y1="423.02" x2="437.02" y2="60.98" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#6fa552"/>
5
- <stop offset="1" stop-color="#4475bc"/>
4
+ <stop offset="0" stop-color="#4aa44c"/>
5
+ <stop offset="1" stop-color="#1278b9"/>
6
6
  </linearGradient>
7
7
  </defs>
8
- <circle cx="256" cy="256" r="256" fill="url(#gradient)"/>
9
- <path d="M271.03,131.48c-2.77-5.75-8.63-9.42-15.07-9.42s-12.24,3.66-15.07,9.42l-33.64,69.21-75.12,11.09c-6.28.94-11.51,5.34-13.44,11.35s-.37,12.66,4.13,17.11l54.51,53.93-12.87,76.22c-1.05,6.28,1.57,12.66,6.75,16.37,5.18,3.71,12.03,4.18,17.68,1.2l67.12-35.83,67.12,35.83c5.65,2.98,12.5,2.56,17.68-1.2,5.18-3.77,7.79-10.1,6.75-16.37l-12.92-76.22,54.51-53.93c4.5-4.45,6.12-11.09,4.13-17.11-1.99-6.02-7.17-10.41-13.44-11.35l-75.17-11.09-33.64-69.21Z" fill="#fff"/>
8
+ <circle fill="url(#gradient)" cx="256" cy="256" r="256" />
9
+ <path fill="white" d="M271.03,131.48c-2.77-5.75-8.63-9.42-15.07-9.42s-12.24,3.66-15.07,9.42l-33.64,69.21-75.12,11.09c-6.28.94-11.51,5.34-13.44,11.35s-.37,12.66,4.13,17.11l54.51,53.93-12.87,76.22c-1.05,6.28,1.57,12.66,6.75,16.37,5.18,3.71,12.03,4.18,17.68,1.2l67.12-35.83,67.12,35.83c5.65,2.98,12.5,2.56,17.68-1.2,5.18-3.77,7.79-10.1,6.75-16.37l-12.92-76.22,54.51-53.93c4.5-4.45,6.12-11.09,4.13-17.11-1.99-6.02-7.17-10.41-13.44-11.35l-75.17-11.09-33.64-69.21Z" />
10
10
  </svg>
@@ -1,8 +1,8 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 135 135">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="19.77" y1="115.23" x2="115.23" y2="19.77" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#4475bc"/>
5
- <stop offset="1" stop-color="#6fa552"/>
4
+ <stop offset="0" stop-color="#4aa44c"/>
5
+ <stop offset="1" stop-color="#1278b9"/>
6
6
  <animateTransform
7
7
  attributeName="gradientTransform"
8
8
  type="rotate"