erudit 3.0.0-dev.2 → 3.0.0-dev.21
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/app/app.vue +195 -172
- package/app/assets/icons/cameo-add.svg +3 -0
- package/app/assets/icons/diamond.svg +3 -0
- package/app/assets/icons/graduation.svg +3 -0
- package/app/components/Avatar.vue +118 -0
- package/app/components/EruditLink.vue +17 -0
- package/app/components/Loading.vue +23 -23
- package/app/components/SiteAside.vue +393 -382
- package/app/components/SiteMain.vue +32 -35
- package/app/components/ads/Ads.vue +33 -0
- package/app/components/ads/AdsBannerAside.vue +61 -0
- package/app/components/ads/AdsBannerBottom.vue +22 -0
- package/app/components/ads/AdsProviderCustom.vue +35 -0
- package/app/components/ads/AdsProviderYandex.vue +91 -0
- package/app/components/ads/AdsReplacer.vue +73 -0
- package/app/components/aside/AsideListItem.vue +91 -74
- package/app/components/aside/AsideMajor.vue +56 -56
- package/app/components/aside/AsideMinor.vue +97 -71
- package/app/components/aside/major/PaneContentScroll.vue +23 -23
- package/app/components/aside/major/PaneSwitch.vue +54 -54
- package/app/components/aside/major/PaneSwitchButton.vue +63 -63
- package/app/components/aside/major/SiteInfo.vue +85 -85
- package/app/components/aside/major/panes/Language.vue +79 -79
- package/app/components/aside/major/panes/Pages.vue +50 -34
- package/app/components/aside/major/panes/Search.vue +11 -11
- package/app/components/aside/major/panes/nav/Nav.vue +92 -91
- package/app/components/aside/major/panes/nav/NavBook.vue +95 -86
- package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
- package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
- package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
- package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
- package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
- package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
- package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
- package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
- package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
- package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
- package/app/components/aside/major/panes/other/ItemGenerator.vue +13 -15
- package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
- package/app/components/aside/major/panes/other/Other.vue +16 -16
- package/app/components/aside/minor/{Contribute.vue → AsideMinorContribute.vue} +175 -145
- package/app/components/aside/minor/AsideMinorNews.vue +11 -11
- package/app/components/aside/minor/AsideMinorPane.vue +15 -15
- package/app/components/aside/minor/AsideMinorTopLink.vue +66 -67
- package/app/components/aside/minor/content/AsideMinorContent.vue +89 -92
- package/app/components/aside/minor/contributor/AsideMinorContributor.vue +78 -0
- package/app/components/aside/minor/contributor/BookContribution.vue +64 -0
- package/app/components/aside/minor/topic/AsideMinorTopic.vue +31 -32
- package/app/components/aside/minor/topic/TopicContributors.vue +183 -177
- package/app/components/aside/minor/topic/TopicNav.vue +49 -49
- package/app/components/aside/minor/topic/TopicToc.vue +212 -203
- package/app/components/aside/minor/topic/TopicTocItem.vue +19 -31
- package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
- package/app/components/bitran/BitranContent.vue +90 -63
- package/app/components/bitran/RenderWrapper.vue +10 -10
- package/app/components/contributor/ContributorListItem.vue +43 -35
- package/app/components/main/MainActionButton.vue +51 -0
- package/app/components/main/MainBitranContent.vue +55 -0
- package/app/components/main/{utils/Breadcrumb.vue → MainBreadcrumb.vue} +63 -75
- package/app/components/main/MainDescription.vue +24 -0
- package/app/components/main/MainSection.vue +58 -0
- package/app/components/main/MainTitle.vue +76 -0
- package/app/components/main/cameo/MainCameo.vue +135 -0
- package/app/components/main/cameo/MainCameoData.vue +232 -0
- package/app/components/main/content/ContentBreadcrumb.vue +28 -0
- package/app/components/main/{utils → content}/ContentDecoration.vue +29 -29
- package/app/components/main/{utils → content}/ContentPopover.vue +188 -176
- package/app/components/main/{utils → content}/ContentPopovers.vue +111 -105
- package/app/components/main/{utils → content}/ContentReferences.vue +70 -70
- package/app/components/main/{utils → content}/reference/ReferenceGroup.vue +38 -38
- package/app/components/main/{utils → content}/reference/ReferenceItem.vue +70 -68
- package/app/components/main/{utils → content}/reference/ReferenceSource.vue +120 -116
- package/app/components/main/topic/MainTopic.vue +76 -79
- package/app/components/main/topic/TopicPartSwitch.vue +119 -118
- package/app/components/preview/Preview.vue +186 -177
- package/app/components/preview/PreviewDisplay.vue +139 -139
- package/app/components/preview/PreviewFooterAction.vue +73 -73
- package/app/components/preview/PreviewLoading.vue +14 -14
- package/app/components/preview/PreviewScreen.vue +141 -99
- package/app/components/preview/display/Alert.vue +50 -50
- package/app/components/preview/display/Custom.vue +18 -18
- package/app/components/preview/display/GenericLink.vue +48 -48
- package/app/components/preview/display/PageLink.vue +22 -20
- package/app/components/preview/display/Unique.vue +46 -49
- package/app/components/sponsor/SponsorTier1.vue +89 -0
- package/app/components/sponsor/SponsorTier2.vue +109 -0
- package/app/components/transition/Fade.vue +19 -19
- package/app/components/tree/TreeContainer.vue +11 -11
- package/app/components/tree/TreeItem.vue +93 -89
- package/app/composables/adsAllowed.ts +11 -0
- package/app/composables/asset.ts +12 -0
- package/app/composables/bitran.ts +108 -127
- package/app/composables/bitranLocation.ts +7 -7
- package/app/composables/contentData.ts +38 -36
- package/app/composables/contentPage.ts +168 -156
- package/app/composables/contentRoute.ts +45 -45
- package/app/composables/darkMagic.ts +24 -24
- package/app/composables/externalApi.ts +69 -63
- package/app/composables/favicon.ts +8 -8
- package/app/composables/formatText.ts +99 -86
- package/app/composables/head.ts +24 -0
- package/app/composables/majorPane.ts +62 -60
- package/app/composables/phrases.ts +77 -80
- package/app/composables/theme.ts +29 -29
- package/app/composables/url.ts +43 -33
- package/app/pages/_test/preview.vue +110 -110
- package/app/pages/article/[...articleId].vue +3 -3
- package/app/pages/book/[...bookId].vue +42 -47
- package/app/pages/contributor/[contributorId].vue +227 -0
- package/app/pages/contributors.vue +184 -0
- package/app/pages/group/[...groupId].vue +53 -65
- package/app/pages/index.vue +32 -32
- package/app/pages/practice/[...practice].vue +3 -3
- package/app/pages/sponsors.vue +95 -0
- package/app/pages/summary/[...summaryId].vue +3 -3
- package/app/plugins/analytics.ts +95 -0
- package/app/plugins/prerender.server.ts +34 -0
- package/app/public/favicon/article.svg +5 -5
- package/app/public/favicon/default.svg +3 -3
- package/app/public/favicon/practice.svg +3 -3
- package/app/public/favicon/summary.svg +4 -4
- package/app/public/logotype.svg +2 -2
- package/app/scripts/_immediate.js +9 -9
- package/app/scripts/aside/index.ts +59 -59
- package/app/scripts/aside/major/nav.ts +26 -26
- package/app/scripts/aside/minor/state.ts +37 -37
- package/app/scripts/flag.ts +28 -28
- package/app/scripts/og.ts +28 -27
- package/app/scripts/preview/build.ts +76 -73
- package/app/scripts/preview/data/alert.ts +19 -19
- package/app/scripts/preview/data/custom.ts +8 -8
- package/app/scripts/preview/data/genericLink.ts +24 -24
- package/app/scripts/preview/data/pageLink.ts +23 -20
- package/app/scripts/preview/data/unique.ts +69 -70
- package/app/scripts/preview/data.ts +24 -24
- package/app/scripts/preview/display.ts +37 -37
- package/app/scripts/preview/footer.ts +9 -9
- package/app/scripts/preview/request.ts +51 -51
- package/app/scripts/preview/state.ts +63 -63
- package/app/styles/_immediate.css +7 -7
- package/app/styles/_util.scss +43 -43
- package/app/styles/_utils.scss +44 -44
- package/app/styles/app.scss +91 -91
- package/app/styles/def/_bp.scss +27 -27
- package/app/styles/def/_size.scss +7 -7
- package/app/styles/def/_z.scss +5 -5
- package/app/styles/normalize.scss +49 -63
- package/app/styles/partials/_darkMagic.scss +5 -5
- package/app/styles/partials/_fnav.scss +15 -15
- package/app/styles/partials/_preview.scss +5 -5
- package/bin/erudit.mjs +2 -0
- package/const.ts +3 -0
- package/globalPath.ts +21 -21
- package/globals/bitran.ts +1 -47
- package/globals/cameo.ts +5 -0
- package/globals/content.ts +27 -22
- package/globals/contributor.ts +5 -5
- package/globals/erudit.ts +5 -5
- package/globals/register.ts +23 -18
- package/globals/sponsor.ts +17 -0
- package/languages/en.ts +108 -95
- package/languages/ru.ts +112 -99
- package/module/bitran.ts +66 -34
- package/module/config.ts +35 -34
- package/module/imports.ts +74 -46
- package/module/index.ts +47 -47
- package/module/logger.ts +10 -10
- package/module/paths.ts +22 -22
- package/module/restart.ts +61 -61
- package/nuxt.config.ts +126 -112
- package/package.json +22 -15
- package/server/api/aside/major/nav/bookIds.ts +5 -5
- package/server/api/aside/major/nav/bookNav/[...bookId].ts +17 -20
- package/server/api/aside/major/nav/global.ts +7 -7
- package/server/api/aside/minor/book/[...bookId].ts +18 -0
- package/server/api/aside/minor/contributor/[contributorId].ts +18 -0
- package/server/api/aside/minor/group/[...groupId].ts +18 -0
- package/server/api/aside/minor/news.ts +7 -7
- package/server/api/aside/minor/topic.ts +36 -0
- package/server/api/bitran/content/[...location].ts +13 -0
- package/server/api/bitran/toc/[...location].ts +9 -0
- package/server/api/cameo/data/[cameoId].ts +42 -0
- package/server/api/cameo/ids.ts +5 -0
- package/server/api/content/data.ts +75 -72
- package/server/api/contributor/count.ts +6 -6
- package/server/api/contributor/list.ts +44 -0
- package/server/api/contributor/page/[contributorId].ts +14 -0
- package/server/api/fake/content.ts +11 -11
- package/server/api/fake/shared/languages.ts +12 -12
- package/server/api/language/functions.ts +12 -12
- package/server/api/language/phrase/[phraseId].ts +19 -19
- package/server/api/language/phraseIds.ts +8 -8
- package/server/api/prerender/assets/cameo.ts +14 -0
- package/server/api/prerender/assets/contributor.ts +12 -0
- package/server/api/prerender/assets/sponsor.ts +13 -0
- package/server/api/prerender/cameos.ts +12 -0
- package/server/api/prerender/language.ts +9 -0
- package/server/api/preview/page/[...parts].ts +78 -51
- package/server/api/preview/unique/{[location].ts → [...location].ts} +48 -55
- package/server/api/problem/generator/[...path].ts +26 -0
- package/server/api/sponsor/cameo/data/[sponsorId].ts +51 -0
- package/server/api/sponsor/cameo/ids.ts +5 -0
- package/server/api/sponsor/count.ts +5 -0
- package/server/api/sponsor/list.ts +36 -0
- package/server/plugin/bitran/content.ts +252 -187
- package/server/plugin/bitran/{products → elements}/include.ts +229 -230
- package/server/plugin/bitran/location.ts +43 -25
- package/server/plugin/bitran/toc.ts +94 -83
- package/server/plugin/bitran/transpiler.ts +18 -46
- package/server/plugin/build/close.ts +12 -10
- package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
- package/server/plugin/build/jobs/content/generic.ts +191 -176
- package/server/plugin/build/jobs/content/parse.ts +113 -100
- package/server/plugin/build/jobs/content/path.ts +6 -6
- package/server/plugin/build/jobs/content/type/book.ts +9 -9
- package/server/plugin/build/jobs/content/type/group.ts +37 -37
- package/server/plugin/build/jobs/content/type/topic.ts +36 -36
- package/server/plugin/build/jobs/contributors.ts +69 -66
- package/server/plugin/build/jobs/language.ts +36 -36
- package/server/plugin/build/jobs/nav.ts +345 -210
- package/server/plugin/build/process.ts +34 -25
- package/server/plugin/build/rebuild.ts +68 -55
- package/server/plugin/build/setup.ts +19 -21
- package/server/plugin/content/context.ts +119 -112
- package/server/plugin/db/entities/Book.ts +7 -7
- package/server/plugin/db/entities/Content.ts +45 -49
- package/server/plugin/db/entities/Contribution.ts +10 -10
- package/server/plugin/db/entities/Contributor.ts +25 -16
- package/server/plugin/db/entities/File.ts +10 -0
- package/server/plugin/db/entities/Group.ts +14 -14
- package/server/plugin/db/entities/Hash.ts +15 -15
- package/server/plugin/db/entities/Topic.ts +20 -20
- package/server/plugin/db/entities/Unique.ts +21 -21
- package/server/plugin/db/reset.ts +12 -0
- package/server/plugin/db/setup.ts +49 -34
- package/server/plugin/global.ts +18 -18
- package/server/plugin/importer.ts +16 -12
- package/server/plugin/index.ts +9 -9
- package/server/plugin/logger.ts +23 -23
- package/server/plugin/nav/node.ts +27 -26
- package/server/plugin/nav/utils.ts +179 -129
- package/server/plugin/repository/asideMinor.ts +51 -0
- package/server/plugin/repository/book.ts +39 -21
- package/server/plugin/repository/cameo.ts +16 -0
- package/server/plugin/repository/content.ts +240 -238
- package/server/plugin/repository/contentId.ts +40 -0
- package/server/plugin/repository/contributor.ts +129 -8
- package/server/plugin/repository/file.ts +10 -0
- package/server/plugin/repository/frontNav.ts +145 -148
- package/server/plugin/repository/topic.ts +35 -32
- package/server/plugin/sponsor/build.ts +82 -0
- package/server/plugin/sponsor/index.ts +5 -0
- package/server/plugin/sponsor/repository.ts +56 -0
- package/server/routes/asset/[...assetPath].ts +34 -0
- package/server/routes/robots.txt.ts +9 -0
- package/server/routes/sitemap.xml.ts +103 -0
- package/server/tsconfig.json +9 -9
- package/shared/aside/minor.ts +55 -50
- package/shared/asset.ts +17 -15
- package/shared/bitran/content.ts +9 -0
- package/shared/bitran/contentId.ts +56 -0
- package/shared/bitran/toc.ts +8 -8
- package/shared/breadcrumb.ts +7 -0
- package/shared/content/bookId.ts +12 -0
- package/shared/content/context.ts +9 -9
- package/shared/content/data/base.ts +32 -32
- package/shared/content/data/index.ts +5 -5
- package/shared/content/data/type/book.ts +5 -5
- package/shared/content/data/type/group.ts +6 -6
- package/shared/content/data/type/topic.ts +11 -11
- package/shared/content/previousNext.ts +9 -9
- package/shared/contributor.ts +34 -5
- package/shared/frontNav.ts +41 -41
- package/shared/icons.ts +38 -38
- package/shared/image.ts +5 -5
- package/shared/link.ts +28 -25
- package/shared/popover.ts +8 -0
- package/shared/types/language.ts +84 -75
- package/shared/utils/objectsEqual.ts +4 -4
- package/shared/utils/stringColor.ts +9 -9
- package/test/contentId.test.ts +91 -0
- package/test/utils/url.test.ts +99 -0
- package/tsconfig.json +8 -8
- package/utils/contentPath.ts +67 -0
- package/utils/ext.ts +41 -0
- package/utils/stress.ts +9 -9
- package/utils/url.ts +23 -0
- package/app/components/ads/BannerTemplate.vue +0 -51
- package/app/components/ads/BottomBanner.vue +0 -45
- package/app/components/ads/LeftBanner.vue +0 -50
- package/app/components/aside/minor/AsideMinorContributor.vue +0 -5
- package/app/components/contributor/ContributorAvatar.vue +0 -43
- package/app/components/main/utils/ContentDescription.vue +0 -19
- package/app/components/main/utils/ContentFlag.vue +0 -15
- package/app/components/main/utils/ContentSection.vue +0 -45
- package/app/components/main/utils/ContentTitle.vue +0 -39
- package/app/composables/bitranContent.ts +0 -37
- package/app/pages/members.vue +0 -6
- package/app/public/user.svg +0 -10
- package/app/scripts/aside/minor/topic.ts +0 -3
- package/app/styles/default.scss +0 -83
- package/server/api/aside/minor/path.ts +0 -78
- package/server/api/bitran/content/[location].ts +0 -7
- package/server/api/bitran/toc/[location].ts +0 -7
- package/server/plugin/bitran/products/link.ts +0 -116
- package/server/plugin/bitran/setup.ts +0 -9
- package/server/plugin/content/absoluteId.ts +0 -94
- package/shared/bitran/context.ts +0 -8
- package/shared/bitran/default.ts +0 -46
- package/shared/bitran/link/Link.vue +0 -167
- package/shared/bitran/link/factory.ts +0 -24
- package/shared/bitran/link/icon.svg +0 -3
- package/shared/bitran/link/languages/en.ts +0 -7
- package/shared/bitran/link/languages/ru.ts +0 -7
- package/shared/bitran/link/renderer.ts +0 -21
- package/shared/bitran/link/shared.ts +0 -17
- package/shared/bitran/link/target.ts +0 -134
- package/shared/bitran/link/transpiler.ts +0 -10
- package/shared/bitran/location.ts +0 -166
- package/test/bitran/link/target.test.ts +0 -141
- package/test/bitran/location.test.ts +0 -143
|
@@ -1,63 +1,49 @@
|
|
|
1
|
-
// https://www.joshwcomeau.com/css/custom-css-reset/
|
|
2
|
-
|
|
3
|
-
/* 1. Use a more-intuitive box-sizing model */
|
|
4
|
-
*,
|
|
5
|
-
*::before,
|
|
6
|
-
*::after {
|
|
7
|
-
box-sizing: border-box;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/* 2. Remove default margin */
|
|
11
|
-
* {
|
|
12
|
-
margin: 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
body {
|
|
16
|
-
/* 3. Add accessible line-height */
|
|
17
|
-
line-height: 1.5;
|
|
18
|
-
/* 4. Improve text rendering */
|
|
19
|
-
-webkit-font-smoothing: antialiased;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/* 5. Improve media defaults */
|
|
23
|
-
img,
|
|
24
|
-
picture,
|
|
25
|
-
video,
|
|
26
|
-
canvas,
|
|
27
|
-
svg {
|
|
28
|
-
display: block;
|
|
29
|
-
max-width: 100%;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* 6. Inherit fonts for form controls */
|
|
33
|
-
input,
|
|
34
|
-
button,
|
|
35
|
-
textarea,
|
|
36
|
-
select {
|
|
37
|
-
font: inherit;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/* 7. Avoid text overflows */
|
|
41
|
-
p,
|
|
42
|
-
h1,
|
|
43
|
-
h2,
|
|
44
|
-
h3,
|
|
45
|
-
h4,
|
|
46
|
-
h5,
|
|
47
|
-
h6 {
|
|
48
|
-
overflow-wrap: break-word;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* 8. Improve line wrapping */
|
|
52
|
-
p {
|
|
53
|
-
text-wrap: pretty;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
h1,
|
|
57
|
-
h2,
|
|
58
|
-
h3,
|
|
59
|
-
h4,
|
|
60
|
-
h5,
|
|
61
|
-
h6 {
|
|
62
|
-
text-wrap: balance;
|
|
63
|
-
}
|
|
1
|
+
// https://www.joshwcomeau.com/css/custom-css-reset/
|
|
2
|
+
|
|
3
|
+
/* 1. Use a more-intuitive box-sizing model */
|
|
4
|
+
*,
|
|
5
|
+
*::before,
|
|
6
|
+
*::after {
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* 2. Remove default margin */
|
|
11
|
+
* {
|
|
12
|
+
margin: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
/* 3. Add accessible line-height */
|
|
17
|
+
line-height: 1.5;
|
|
18
|
+
/* 4. Improve text rendering */
|
|
19
|
+
-webkit-font-smoothing: antialiased;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* 5. Improve media defaults */
|
|
23
|
+
img,
|
|
24
|
+
picture,
|
|
25
|
+
video,
|
|
26
|
+
canvas,
|
|
27
|
+
svg {
|
|
28
|
+
display: block;
|
|
29
|
+
max-width: 100%;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* 6. Inherit fonts for form controls */
|
|
33
|
+
input,
|
|
34
|
+
button,
|
|
35
|
+
textarea,
|
|
36
|
+
select {
|
|
37
|
+
font: inherit;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* 7. Avoid text overflows */
|
|
41
|
+
p,
|
|
42
|
+
h1,
|
|
43
|
+
h2,
|
|
44
|
+
h3,
|
|
45
|
+
h4,
|
|
46
|
+
h5,
|
|
47
|
+
h6 {
|
|
48
|
+
overflow-wrap: break-word;
|
|
49
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@mixin replacer {
|
|
2
|
-
> div > div {
|
|
3
|
-
@content;
|
|
4
|
-
}
|
|
5
|
-
}
|
|
1
|
+
@mixin replacer {
|
|
2
|
+
> div > div {
|
|
3
|
+
@content;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
.frontNavSeparator {
|
|
2
|
-
--_space: calc(var(--gap) / 2);
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.frontNavItem + .frontNavSeparator {
|
|
6
|
-
border-top: 1px solid var(--border);
|
|
7
|
-
margin-top: var(--_space);
|
|
8
|
-
padding-top: var(--_space);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.frontNavSeparator:has(+ .frontNavItem:not(.frontNavSeparator)) {
|
|
12
|
-
border-bottom: 1px solid var(--border);
|
|
13
|
-
padding-bottom: var(--_space);
|
|
14
|
-
margin-bottom: var(--_space);
|
|
15
|
-
}
|
|
1
|
+
.frontNavSeparator {
|
|
2
|
+
--_space: calc(var(--gap) / 2);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.frontNavItem + .frontNavSeparator {
|
|
6
|
+
border-top: 1px solid var(--border);
|
|
7
|
+
margin-top: var(--_space);
|
|
8
|
+
padding-top: var(--_space);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.frontNavSeparator:has(+ .frontNavItem:not(.frontNavSeparator)) {
|
|
12
|
+
border-bottom: 1px solid var(--border);
|
|
13
|
+
padding-bottom: var(--_space);
|
|
14
|
+
margin-bottom: var(--_space);
|
|
15
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@mixin hasTheme {
|
|
2
|
-
[data-erudit-preview-theme] & {
|
|
3
|
-
@content;
|
|
4
|
-
}
|
|
5
|
-
}
|
|
1
|
+
@mixin hasTheme {
|
|
2
|
+
[data-erudit-preview-theme] & {
|
|
3
|
+
@content;
|
|
4
|
+
}
|
|
5
|
+
}
|
package/bin/erudit.mjs
ADDED
package/const.ts
ADDED
package/globalPath.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { fileURLToPath } from 'node:url';
|
|
2
|
-
import { resolvePaths } from 'erudit-cog/kit';
|
|
3
|
-
|
|
4
|
-
export const ERUDIT_DIR = resolvePaths(fileURLToPath(import.meta.url), '..');
|
|
5
|
-
export const PROJECT_DIR = process.env.ERUDIT_PROJECT_DIR as string;
|
|
6
|
-
|
|
7
|
-
export function eruditPath(path?: string) {
|
|
8
|
-
return path ? `${ERUDIT_DIR}/${path}` : ERUDIT_DIR;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export function projectPath(path?: string) {
|
|
12
|
-
return path ? `${PROJECT_DIR}/${path}` : PROJECT_DIR;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function eruditBuildPath(path?: string) {
|
|
16
|
-
return projectPath('.erudit' + (path ? '/' + path : ''));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function eruditEndNuxtPath(path?: string) {
|
|
20
|
-
return eruditBuildPath('nuxt' + (path ? '/' + path : ''));
|
|
21
|
-
}
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
import { resolvePaths } from '@erudit-js/cog/kit';
|
|
3
|
+
|
|
4
|
+
export const ERUDIT_DIR = resolvePaths(fileURLToPath(import.meta.url), '..');
|
|
5
|
+
export const PROJECT_DIR = process.env.ERUDIT_PROJECT_DIR as string;
|
|
6
|
+
|
|
7
|
+
export function eruditPath(path?: string) {
|
|
8
|
+
return path ? `${ERUDIT_DIR}/${path}` : ERUDIT_DIR;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function projectPath(path?: string) {
|
|
12
|
+
return path ? `${PROJECT_DIR}/${path}` : PROJECT_DIR;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function eruditBuildPath(path?: string) {
|
|
16
|
+
return projectPath('.erudit' + (path ? '/' + path : ''));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function eruditEndNuxtPath(path?: string) {
|
|
20
|
+
return eruditBuildPath('nuxt' + (path ? '/' + path : ''));
|
|
21
|
+
}
|
package/globals/bitran.ts
CHANGED
|
@@ -1,47 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { ElementTranspiler } from '@bitran-js/transpiler';
|
|
3
|
-
import type { ElementVueRenderer } from '@bitran-js/renderer-vue';
|
|
4
|
-
|
|
5
|
-
export interface BitranElementConfig<
|
|
6
|
-
T extends GenericElementSchema = GenericElementSchema,
|
|
7
|
-
> {
|
|
8
|
-
transpiler: () => Promise<ElementTranspiler<T>>;
|
|
9
|
-
renderer: () => Promise<ElementVueRenderer<T>>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export type BitranElements = Record<string, BitranElementConfig>;
|
|
13
|
-
|
|
14
|
-
export interface EruditBitranConfig<
|
|
15
|
-
TElements extends BitranElements = BitranElements,
|
|
16
|
-
> {
|
|
17
|
-
elements: TElements;
|
|
18
|
-
toc: (keyof TElements)[];
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* TODO!
|
|
22
|
-
* Groups of elements that are tracked on site, included in TOC, in search, display in front and book pages and so on.
|
|
23
|
-
*
|
|
24
|
-
* Example:
|
|
25
|
-
* tracked: {
|
|
26
|
-
* term: {
|
|
27
|
-
* elements: ['definition', 'axiom'],
|
|
28
|
-
title: 'Термин',
|
|
29
|
-
toc: true,
|
|
30
|
-
search: false,
|
|
31
|
-
color: '#E0E0E0',
|
|
32
|
-
* }
|
|
33
|
-
* }
|
|
34
|
-
*/
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function defineBitranConfig<T extends BitranElements>(
|
|
38
|
-
config: Partial<EruditBitranConfig<T>>,
|
|
39
|
-
) {
|
|
40
|
-
return config;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function defineBitranElement<T extends GenericElementSchema>(
|
|
44
|
-
config: BitranElementConfig<T>,
|
|
45
|
-
) {
|
|
46
|
-
return config;
|
|
47
|
-
}
|
|
1
|
+
export { defineServerBitran, defineAppBitran } from '@erudit-js/cog/schema';
|
package/globals/cameo.ts
ADDED
package/globals/content.ts
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
BookConfig,
|
|
3
|
-
ContentReferences,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import type {
|
|
2
|
+
BookConfig,
|
|
3
|
+
ContentReferences,
|
|
4
|
+
ContentReferenceSource,
|
|
5
|
+
GroupConfig,
|
|
6
|
+
TopicConfig,
|
|
7
|
+
} from '@erudit-js/cog/schema';
|
|
8
|
+
|
|
9
|
+
export function defineBook(book: Partial<BookConfig>) {
|
|
10
|
+
return book;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function defineGroup(group: Partial<GroupConfig>) {
|
|
14
|
+
return group;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function defineTopic(topic: Partial<TopicConfig>) {
|
|
18
|
+
return topic;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function defineContentReferences(references: ContentReferences) {
|
|
22
|
+
return references;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function defineContentSource(source: ContentReferenceSource) {
|
|
26
|
+
return source;
|
|
27
|
+
}
|
package/globals/contributor.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ContributorConfig } from 'erudit-cog/schema';
|
|
2
|
-
|
|
3
|
-
export function defineContributor(contributor: Partial<ContributorConfig>) {
|
|
4
|
-
return contributor;
|
|
5
|
-
}
|
|
1
|
+
import type { ContributorConfig } from '@erudit-js/cog/schema';
|
|
2
|
+
|
|
3
|
+
export function defineContributor(contributor: Partial<ContributorConfig>) {
|
|
4
|
+
return contributor;
|
|
5
|
+
}
|
package/globals/erudit.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EruditConfig } from 'erudit-cog/schema';
|
|
2
|
-
|
|
3
|
-
export function defineEruditConfig(eruditConfig: Partial<EruditConfig>) {
|
|
4
|
-
return eruditConfig;
|
|
5
|
-
}
|
|
1
|
+
import type { EruditConfig } from '@erudit-js/cog/schema';
|
|
2
|
+
|
|
3
|
+
export function defineEruditConfig(eruditConfig: Partial<EruditConfig>) {
|
|
4
|
+
return eruditConfig;
|
|
5
|
+
}
|
package/globals/register.ts
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
import * as erudit from './erudit';
|
|
2
|
-
import * as contributor from './contributor';
|
|
3
|
-
import * as bitran from './bitran';
|
|
4
|
-
import * as content from './content';
|
|
5
|
-
import * as
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
...
|
|
13
|
-
...
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import * as erudit from './erudit';
|
|
2
|
+
import * as contributor from './contributor';
|
|
3
|
+
import * as bitran from './bitran';
|
|
4
|
+
import * as content from './content';
|
|
5
|
+
import * as cameo from './cameo';
|
|
6
|
+
import * as sponsor from './sponsor';
|
|
7
|
+
|
|
8
|
+
import * as asset from '@shared/asset';
|
|
9
|
+
|
|
10
|
+
export function registerGlobals() {
|
|
11
|
+
for (const [key, value] of Object.entries({
|
|
12
|
+
...erudit,
|
|
13
|
+
...contributor,
|
|
14
|
+
...bitran,
|
|
15
|
+
...content,
|
|
16
|
+
...asset,
|
|
17
|
+
...cameo,
|
|
18
|
+
...sponsor,
|
|
19
|
+
})) {
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
globalThis[key] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
SponsorConfig,
|
|
3
|
+
Tier1Sponsor,
|
|
4
|
+
Tier2Sponsor,
|
|
5
|
+
} from '@erudit-js/cog/schema';
|
|
6
|
+
|
|
7
|
+
export function defineTier1Sponsor(
|
|
8
|
+
sponsorConfig: SponsorConfig<Tier1Sponsor>,
|
|
9
|
+
): SponsorConfig<Tier1Sponsor> {
|
|
10
|
+
return sponsorConfig;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function defineTier2Sponsor(
|
|
14
|
+
sponsorConfig: SponsorConfig<Tier2Sponsor>,
|
|
15
|
+
): SponsorConfig<Tier2Sponsor> {
|
|
16
|
+
return sponsorConfig;
|
|
17
|
+
}
|
package/languages/en.ts
CHANGED
|
@@ -1,95 +1,108 @@
|
|
|
1
|
-
const english: EruditPhrases = {
|
|
2
|
-
_language_title: 'English',
|
|
3
|
-
_language_code: 'en',
|
|
4
|
-
|
|
5
|
-
site_info_title: 'Erudit',
|
|
6
|
-
site_info_slogan: 'Modern textbook',
|
|
7
|
-
seo_index_title: 'Erudit - CMS for eductional sites',
|
|
8
|
-
seo_index_description:
|
|
9
|
-
'Erudit is a CMS for creating and managing perfect educational sites, maintained by the community.',
|
|
10
|
-
seo_article_description: (contentTitle) =>
|
|
11
|
-
`Clear and interesting explanation of the topic "${contentTitle}". Illustrative examples, important properties, interesting facts, life applications, clear proofs. Here you will definitely understand the topic!`,
|
|
12
|
-
seo_summary_description: (contentTitle) =>
|
|
13
|
-
`Summary of the topic "${contentTitle}": key definitions, theorems, properties and examples of their use. All the most important things in a concise form!`,
|
|
14
|
-
seo_practice_description: (contentTitle) =>
|
|
15
|
-
`Various problems with hints and answers on the topic "${contentTitle}". Interesting conditions, hints and detailed solutions. Turn knowledge into a skill!`,
|
|
16
|
-
index: 'Index',
|
|
17
|
-
pages: 'Pages',
|
|
18
|
-
search: 'Search',
|
|
19
|
-
language: 'Language',
|
|
20
|
-
other: 'Other',
|
|
21
|
-
ads_replacer:
|
|
22
|
-
'Help us develop the project.<br><strong>Disable your ads blocker!</strong>',
|
|
23
|
-
theme: 'Theme',
|
|
24
|
-
theme_system: 'System',
|
|
25
|
-
theme_light: 'Light',
|
|
26
|
-
theme_dark: 'Dark',
|
|
27
|
-
content: 'Content',
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
const english: EruditPhrases = {
|
|
2
|
+
_language_title: 'English',
|
|
3
|
+
_language_code: 'en',
|
|
4
|
+
|
|
5
|
+
site_info_title: 'Erudit',
|
|
6
|
+
site_info_slogan: 'Modern textbook',
|
|
7
|
+
seo_index_title: 'Erudit - CMS for eductional sites',
|
|
8
|
+
seo_index_description:
|
|
9
|
+
'Erudit is a CMS for creating and managing perfect educational sites, maintained by the community.',
|
|
10
|
+
seo_article_description: (contentTitle) =>
|
|
11
|
+
`Clear and interesting explanation of the topic "${contentTitle}". Illustrative examples, important properties, interesting facts, life applications, clear proofs. Here you will definitely understand the topic!`,
|
|
12
|
+
seo_summary_description: (contentTitle) =>
|
|
13
|
+
`Summary of the topic "${contentTitle}": key definitions, theorems, properties and examples of their use. All the most important things in a concise form!`,
|
|
14
|
+
seo_practice_description: (contentTitle) =>
|
|
15
|
+
`Various problems with hints and answers on the topic "${contentTitle}". Interesting conditions, hints and detailed solutions. Turn knowledge into a skill!`,
|
|
16
|
+
index: 'Index',
|
|
17
|
+
pages: 'Pages',
|
|
18
|
+
search: 'Search',
|
|
19
|
+
language: 'Language',
|
|
20
|
+
other: 'Other',
|
|
21
|
+
ads_replacer:
|
|
22
|
+
'Help us develop the project.<br><strong>Disable your ads blocker!</strong>',
|
|
23
|
+
theme: 'Theme',
|
|
24
|
+
theme_system: 'System',
|
|
25
|
+
theme_light: 'Light',
|
|
26
|
+
theme_dark: 'Dark',
|
|
27
|
+
content: 'Content',
|
|
28
|
+
main_page: 'Main page',
|
|
29
|
+
contributors: 'Contributors',
|
|
30
|
+
contributors_page_description:
|
|
31
|
+
'List of people who contributed to the project materials: suggested valuable ideas, made corrections to existing material or wrote their own!',
|
|
32
|
+
contributors_page_invite:
|
|
33
|
+
'You can also help the project, make a contribution and get on this page!',
|
|
34
|
+
become_contributor: 'Become a contributor',
|
|
35
|
+
contributor: 'Contributor',
|
|
36
|
+
contribution: 'Contribution',
|
|
37
|
+
contributions_explain: (count) =>
|
|
38
|
+
`Contributed to ${m(count, 'material', 'materials')}`,
|
|
39
|
+
contributor_description: (name) =>
|
|
40
|
+
`Page with information about the contributor "${name}" and his contribution to the project.`,
|
|
41
|
+
editor: 'Editor',
|
|
42
|
+
add_translation: 'Add translation',
|
|
43
|
+
empty_nav: 'Empty navigation',
|
|
44
|
+
flag_dev: 'Development',
|
|
45
|
+
flag_dev_description:
|
|
46
|
+
'This material is in development! It may change in the future and even contain errors!',
|
|
47
|
+
flag_advanced: 'Advanced',
|
|
48
|
+
flag_advanced_description:
|
|
49
|
+
'This material is for learners with a high level of knowledge. It contains information that is not suitable for beginners!',
|
|
50
|
+
flag_secondary: 'Additional',
|
|
51
|
+
flag_secondary_description:
|
|
52
|
+
'This is an optional material is for learners who want to dive deeper and gain additional knowledge and context.',
|
|
53
|
+
popover_dependencies: 'Dependencies',
|
|
54
|
+
popover_dependencies_description:
|
|
55
|
+
'There is no royal way into this topic! You can only figure it out if you know the following topics:',
|
|
56
|
+
to_index: 'To index',
|
|
57
|
+
about_book: 'About book',
|
|
58
|
+
close: 'Close',
|
|
59
|
+
back: 'Back',
|
|
60
|
+
goto: 'Go to',
|
|
61
|
+
error: 'Error!',
|
|
62
|
+
external_link: 'External link',
|
|
63
|
+
external_link_warn: 'You are going to visit external resource!',
|
|
64
|
+
internal_link: 'Internal link',
|
|
65
|
+
internal_link_warn: 'You are going to visit internal site page!',
|
|
66
|
+
book: 'Book',
|
|
67
|
+
group: 'Group',
|
|
68
|
+
topic: 'Topic',
|
|
69
|
+
article: 'Article',
|
|
70
|
+
summary: 'Summary',
|
|
71
|
+
practice: 'Practice',
|
|
72
|
+
element_id: 'Element ID',
|
|
73
|
+
preview_missing_title: 'Element not found!',
|
|
74
|
+
preview_missing_explain: `Can't find the element with specified ID in this page!<br>Perhaps the element ID is specified incorrectly or the element has been changed/deleted.`,
|
|
75
|
+
preview_missing_explain_mismatch: `Can't find the element with specified ID in this page!<br>The version of the linked page is different from the current version of the page!<br>This is most likely the cause of the error.`,
|
|
76
|
+
preview_hash_mismatch_title: 'Page version mismatch!',
|
|
77
|
+
preview_hash_mismatch_explain:
|
|
78
|
+
'The version of the page you see now is different from the version of the page the original link led to!<br>The content may be different from what you expected to see.',
|
|
79
|
+
current_page_hash: 'Current hash',
|
|
80
|
+
expected_page_hash: 'Expected hash',
|
|
81
|
+
empty_toc: 'Empty table of contents...',
|
|
82
|
+
no_contributors: 'No contributors...',
|
|
83
|
+
make_contribution: 'Make a contribution',
|
|
84
|
+
material_improvement: 'Material improvement',
|
|
85
|
+
how_to_improve: 'How to improve?',
|
|
86
|
+
edit_page: 'Edit page',
|
|
87
|
+
report_problem: 'Report a problem',
|
|
88
|
+
references: 'References',
|
|
89
|
+
reference_source_featured: 'Featured source',
|
|
90
|
+
references_description:
|
|
91
|
+
'A list of external sources that were used to write this material. If there is an asterisk next to the title, it is a featured source and is worth reading if you want to delve deeper into the material.',
|
|
92
|
+
sponsors: 'Sponsors',
|
|
93
|
+
sponsors_description:
|
|
94
|
+
'People and organizations that support the project financially. Thanks to them, we can continue to develop the project and improve the quality of materials. If you want to support the project, you can become a sponsor too!',
|
|
95
|
+
become_sponsor: 'Become a sponsor',
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export default english;
|
|
99
|
+
|
|
100
|
+
export function m(
|
|
101
|
+
number: number,
|
|
102
|
+
one: string,
|
|
103
|
+
few: string,
|
|
104
|
+
includeNumber = true,
|
|
105
|
+
) {
|
|
106
|
+
const text = number === 1 ? one : few;
|
|
107
|
+
return includeNumber ? `${number} ${text}` : text;
|
|
108
|
+
}
|