@coffic/cosy-ui 0.7.2 → 0.8.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 (607) hide show
  1. package/dist/app.css +1 -1
  2. package/dist/index-astro.ts +86 -0
  3. package/dist/index-collection.ts +104 -0
  4. package/dist/index-vue.ts +33 -0
  5. package/dist/{alert → src-astro/alert}/Alert.astro +39 -33
  6. package/dist/{alert → src-astro/alert}/EAlertBasic.astro +1 -1
  7. package/dist/{alert → src-astro/alert}/EAlertBasicContainer.astro +4 -4
  8. package/dist/src-astro/alert/EAlertCustomStyle.astro +16 -0
  9. package/dist/{alert → src-astro/alert}/EAlertCustomStyleContainer.astro +4 -4
  10. package/dist/src-astro/alert/EAlertError.astro +6 -0
  11. package/dist/src-astro/alert/EAlertInfo.astro +6 -0
  12. package/dist/src-astro/alert/EAlertSuccess.astro +6 -0
  13. package/dist/{alert → src-astro/alert}/EAlertTypesContainer.astro +21 -21
  14. package/dist/src-astro/alert/EAlertWarning.astro +6 -0
  15. package/dist/{alert → src-astro/alert}/EAlertWithTitle.astro +2 -2
  16. package/dist/{alert → src-astro/alert}/EAlertWithTitleContainer.astro +4 -4
  17. package/dist/{alert → src-astro/alert}/index.ts +9 -9
  18. package/dist/{article → src-astro/article}/Article.astro +17 -17
  19. package/dist/src-astro/article/ArticleBasic.astro +35 -0
  20. package/dist/{article → src-astro/article}/index.ts +1 -1
  21. package/dist/src-astro/assets/iconData.ts +117 -0
  22. package/dist/src-astro/banner/Banner.astro +174 -0
  23. package/dist/src-astro/banner/BannerAllAnimations.astro +10 -0
  24. package/dist/{banner → src-astro/banner}/BannerBasic.astro +1 -1
  25. package/dist/src-astro/banner/BannerCustomStyle.astro +8 -0
  26. package/dist/{banner → src-astro/banner}/BannerDanger.astro +1 -1
  27. package/dist/{banner → src-astro/banner}/BannerFadeIn.astro +1 -1
  28. package/dist/{banner → src-astro/banner}/BannerInfo.astro +1 -1
  29. package/dist/{banner → src-astro/banner}/BannerPrimary.astro +1 -1
  30. package/dist/{banner → src-astro/banner}/BannerSecondary.astro +1 -1
  31. package/dist/{banner → src-astro/banner}/BannerSlideUp.astro +1 -1
  32. package/dist/{banner → src-astro/banner}/BannerSuccess.astro +1 -1
  33. package/dist/{banner → src-astro/banner}/BannerWarning.astro +1 -1
  34. package/dist/{banner → src-astro/banner}/index.ts +15 -2
  35. package/dist/src-astro/button/Button.astro +192 -0
  36. package/dist/src-astro/button/ButtonBasic.astro +18 -0
  37. package/dist/{button → src-astro/button}/ButtonBasicContainer.astro +4 -4
  38. package/dist/src-astro/button/ButtonIconBoth.astro +9 -0
  39. package/dist/{button → src-astro/button}/ButtonIconLeft.astro +2 -2
  40. package/dist/{button → src-astro/button}/ButtonIconRight.astro +2 -2
  41. package/dist/{button → src-astro/button}/ButtonLinkContainer.astro +9 -9
  42. package/dist/{button → src-astro/button}/ButtonLinkExternal.astro +2 -2
  43. package/dist/src-astro/button/ButtonShapes.astro +23 -0
  44. package/dist/{button → src-astro/button}/ButtonShapesContainer.astro +16 -12
  45. package/dist/src-astro/button/ButtonSizes.astro +15 -0
  46. package/dist/{button → src-astro/button}/ButtonSizesContainer.astro +4 -4
  47. package/dist/src-astro/button/ButtonStates.astro +12 -0
  48. package/dist/{button → src-astro/button}/ButtonStatesContainer.astro +4 -4
  49. package/dist/src-astro/button/ButtonVariants.astro +14 -0
  50. package/dist/{button → src-astro/button}/ButtonVariantsContainer.astro +45 -36
  51. package/dist/{button → src-astro/button}/ButtonWidth.astro +2 -2
  52. package/dist/{button → src-astro/button}/ButtonWidthContainer.astro +9 -9
  53. package/dist/src-astro/button/ButtonWithIcons.astro +25 -0
  54. package/dist/{button → src-astro/button}/ButtonWithIconsContainer.astro +16 -12
  55. package/dist/{button → src-astro/button}/index_astro.ts +29 -31
  56. package/dist/{card → src-astro/card}/Card.astro +75 -15
  57. package/dist/src-astro/card/CardCourse.astro +34 -0
  58. package/dist/src-astro/card/ECardBasic.astro +13 -0
  59. package/dist/src-astro/card/ECardBasicContainer.astro +11 -0
  60. package/dist/src-astro/card/ECardClickable.astro +16 -0
  61. package/dist/src-astro/card/ECardClickableContainer.astro +11 -0
  62. package/dist/src-astro/card/ECardCompact.astro +13 -0
  63. package/dist/src-astro/card/ECardCompactContainer.astro +11 -0
  64. package/dist/src-astro/card/ECardCustomStyle.astro +17 -0
  65. package/dist/src-astro/card/ECardCustomStyleContainer.astro +11 -0
  66. package/dist/src-astro/card/ECardWithImage.astro +16 -0
  67. package/dist/src-astro/card/ECardWithImageContainer.astro +11 -0
  68. package/dist/src-astro/card/ECardWithSubtitle.astro +13 -0
  69. package/dist/src-astro/card/ECardWithSubtitleContainer.astro +11 -0
  70. package/dist/src-astro/card/index.ts +27 -0
  71. package/dist/src-astro/code-block/CodeBlock.astro +155 -0
  72. package/dist/src-astro/code-block/index.ts +1 -0
  73. package/dist/src-astro/code-container/CodeContainer.astro +280 -0
  74. package/dist/{code-container → src-astro/code-container}/ECodeContainerBasic.astro +3 -3
  75. package/dist/{code-container → src-astro/code-container}/ECodeContainerMultiple.astro +16 -16
  76. package/dist/{code-container → src-astro/code-container}/index.ts +2 -2
  77. package/dist/src-astro/code-example/CodeExample.astro +185 -0
  78. package/dist/src-astro/code-example/index.ts +1 -0
  79. package/dist/src-astro/contact/Contact.astro +321 -0
  80. package/dist/src-astro/contact/EContactBasic.astro +15 -0
  81. package/dist/src-astro/contact/EContactBasicContainer.astro +11 -0
  82. package/dist/src-astro/contact/EContactCompact.astro +11 -0
  83. package/dist/src-astro/contact/EContactCompactContainer.astro +11 -0
  84. package/dist/src-astro/contact/EContactCustomStyle.astro +21 -0
  85. package/dist/src-astro/contact/EContactCustomStyleContainer.astro +11 -0
  86. package/dist/src-astro/contact/EContactSocial.astro +20 -0
  87. package/dist/src-astro/contact/EContactSocialContainer.astro +11 -0
  88. package/dist/src-astro/contact/EContactWithTitle.astro +17 -0
  89. package/dist/src-astro/contact/EContactWithTitleContainer.astro +11 -0
  90. package/dist/src-astro/contact/index.ts +21 -0
  91. package/dist/src-astro/container/Container.astro +211 -0
  92. package/dist/src-astro/container/EContainerBasic.astro +15 -0
  93. package/dist/{container → src-astro/container}/EContainerBasicContainer.astro +4 -4
  94. package/dist/src-astro/container/EContainerFlexBetween.astro +23 -0
  95. package/dist/src-astro/container/EContainerFlexCenter.astro +30 -0
  96. package/dist/src-astro/container/EContainerFlexColumn.astro +23 -0
  97. package/dist/{container → src-astro/container}/EContainerFlexContainer.astro +20 -20
  98. package/dist/src-astro/container/EContainerFlexRow.astro +23 -0
  99. package/dist/src-astro/container/EContainerPadding.astro +32 -0
  100. package/dist/{container → src-astro/container}/EContainerPaddingContainer.astro +4 -4
  101. package/dist/src-astro/container/EContainerSizes.astro +36 -0
  102. package/dist/{container → src-astro/container}/EContainerSizesContainer.astro +4 -4
  103. package/dist/{container → src-astro/container}/index.ts +8 -8
  104. package/dist/{cosy.ts → src-astro/cosy.ts} +1 -1
  105. package/dist/src-astro/database/BaseDB.ts +264 -0
  106. package/dist/src-astro/database/BlogDB.ts +198 -0
  107. package/dist/src-astro/database/CourseDB.ts +90 -0
  108. package/dist/{database → src-astro/database}/ExperimentDB.ts +51 -47
  109. package/dist/{database → src-astro/database}/LessonDB.ts +51 -47
  110. package/dist/src-astro/database/MetaDB.ts +74 -0
  111. package/dist/src-astro/entities/BaseDoc.ts +207 -0
  112. package/dist/{entities → src-astro/entities}/BlogDoc.ts +50 -47
  113. package/dist/src-astro/entities/CourseDoc.ts +101 -0
  114. package/dist/src-astro/entities/ExperimentDoc.ts +119 -0
  115. package/dist/src-astro/entities/Feature.ts +53 -0
  116. package/dist/src-astro/entities/LessonDoc.ts +153 -0
  117. package/dist/src-astro/entities/MetaDoc.ts +93 -0
  118. package/dist/src-astro/entities/SidebarItem.ts +89 -0
  119. package/dist/src-astro/entities/Tag.ts +42 -0
  120. package/dist/src-astro/env.d.ts +42 -0
  121. package/dist/src-astro/errors/403.astro +135 -0
  122. package/dist/src-astro/errors/404.astro +124 -0
  123. package/dist/src-astro/errors/404Basic.astro +7 -0
  124. package/dist/src-astro/errors/500.astro +165 -0
  125. package/dist/src-astro/errors/503.astro +189 -0
  126. package/dist/src-astro/errors/E403Basic.astro +11 -0
  127. package/dist/src-astro/errors/E403BasicContainer.astro +20 -0
  128. package/dist/src-astro/errors/E404Basic.astro +11 -0
  129. package/dist/src-astro/errors/E404BasicContainer.astro +20 -0
  130. package/dist/src-astro/errors/E404WithDebug.astro +18 -0
  131. package/dist/src-astro/errors/E500Basic.astro +11 -0
  132. package/dist/src-astro/errors/E500BasicContainer.astro +20 -0
  133. package/dist/src-astro/errors/E503Maintenance.astro +20 -0
  134. package/dist/src-astro/errors/E503MaintenanceContainer.astro +21 -0
  135. package/dist/src-astro/errors/EErrorPageCustomStyle.astro +21 -0
  136. package/dist/src-astro/errors/EErrorPageCustomStyleContainer.astro +21 -0
  137. package/dist/src-astro/errors/EErrorPageShowcase.astro +68 -0
  138. package/dist/src-astro/errors/EErrorPageShowcaseContainer.astro +21 -0
  139. package/dist/src-astro/errors/ErrorPage.astro +119 -0
  140. package/dist/src-astro/errors/index.ts +77 -0
  141. package/dist/{flex → src-astro/flex}/Flex.astro +31 -31
  142. package/dist/src-astro/flex/FlexBasic.astro +26 -0
  143. package/dist/{flex → src-astro/flex}/index.ts +1 -1
  144. package/dist/src-astro/footer/EFooterBasic.astro +18 -0
  145. package/dist/{footer → src-astro/footer}/EFooterBasicContainer.astro +4 -4
  146. package/dist/src-astro/footer/EFooterComplete.astro +50 -0
  147. package/dist/{footer → src-astro/footer}/EFooterCompleteContainer.astro +4 -4
  148. package/dist/{footer → src-astro/footer}/EFooterFeaturesContainer.astro +24 -24
  149. package/dist/src-astro/footer/EFooterWithLogo.astro +28 -0
  150. package/dist/{footer → src-astro/footer}/EFooterWithLogoContainer.astro +4 -4
  151. package/dist/src-astro/footer/EFooterWithNavigation.astro +24 -0
  152. package/dist/{footer → src-astro/footer}/EFooterWithNavigationContainer.astro +4 -4
  153. package/dist/src-astro/footer/EFooterWithProducts.astro +24 -0
  154. package/dist/{footer → src-astro/footer}/EFooterWithProductsContainer.astro +4 -4
  155. package/dist/src-astro/footer/EFooterWithSocial.astro +24 -0
  156. package/dist/{footer → src-astro/footer}/EFooterWithSocialContainer.astro +4 -4
  157. package/dist/{footer → src-astro/footer}/Footer.astro +170 -158
  158. package/dist/src-astro/footer/FooterSection.astro +49 -0
  159. package/dist/{footer → src-astro/footer}/index.ts +11 -11
  160. package/dist/{grid → src-astro/grid}/Grid.astro +99 -99
  161. package/dist/src-astro/grid/GridBasic.astro +21 -0
  162. package/dist/{grid → src-astro/grid}/index.ts +1 -1
  163. package/dist/src-astro/header/Header.astro +209 -0
  164. package/dist/{header → src-astro/header}/HeaderBasic.astro +6 -1
  165. package/dist/src-astro/header/HeaderCustomNavbarCenter.astro +28 -0
  166. package/dist/src-astro/header/HeaderCustomNavbarEnd.astro +25 -0
  167. package/dist/src-astro/header/HeaderCustomNavbarStart.astro +27 -0
  168. package/dist/{header → src-astro/header}/HeaderCustomPosition.astro +17 -6
  169. package/dist/src-astro/header/HeaderWithNavigation.astro +27 -0
  170. package/dist/{header → src-astro/header}/index.ts +22 -8
  171. package/dist/src-astro/heading/Heading.astro +245 -0
  172. package/dist/{heading → src-astro/heading}/index.ts +1 -1
  173. package/dist/src-astro/hero/Hero.astro +381 -0
  174. package/dist/src-astro/hero/HeroAlignCenter.astro +13 -0
  175. package/dist/{hero → src-astro/hero}/HeroAlignContainer.astro +16 -12
  176. package/dist/src-astro/hero/HeroAlignLeft.astro +13 -0
  177. package/dist/src-astro/hero/HeroAlignRight.astro +13 -0
  178. package/dist/{hero → src-astro/hero}/HeroBackgroundContainer.astro +9 -9
  179. package/dist/src-astro/hero/HeroBackgroundImage.astro +16 -0
  180. package/dist/{hero → src-astro/hero}/HeroBackgroundImageContainer.astro +4 -4
  181. package/dist/src-astro/hero/HeroBasic.astro +12 -0
  182. package/dist/{hero → src-astro/hero}/HeroBasicContainer.astro +4 -4
  183. package/dist/src-astro/hero/HeroGradientBackground.astro +10 -0
  184. package/dist/src-astro/hero/HeroPlainBackground.astro +10 -0
  185. package/dist/src-astro/hero/HeroWithButton.astro +15 -0
  186. package/dist/{hero → src-astro/hero}/HeroWithButtonContainer.astro +4 -4
  187. package/dist/src-astro/hero/HeroWithImage.astro +16 -0
  188. package/dist/{hero → src-astro/hero}/HeroWithImageContainer.astro +4 -4
  189. package/dist/{hero → src-astro/hero}/index.ts +19 -19
  190. package/dist/src-astro/icons/AlertTriangle.astro +28 -0
  191. package/dist/src-astro/icons/AstroIcon.astro +62 -0
  192. package/dist/src-astro/icons/CalendarIcon.astro +28 -0
  193. package/dist/src-astro/icons/CheckCircle.astro +27 -0
  194. package/dist/src-astro/icons/CheckIcon.astro +31 -0
  195. package/dist/src-astro/icons/ChevronDownIcon.astro +28 -0
  196. package/dist/src-astro/icons/ClipboardIcon.astro +31 -0
  197. package/dist/src-astro/icons/CloseIcon.astro +31 -0
  198. package/dist/src-astro/icons/ErrorIcon.astro +28 -0
  199. package/dist/src-astro/icons/GithubIcon.astro +25 -0
  200. package/dist/src-astro/icons/InboxArchive.astro +27 -0
  201. package/dist/src-astro/icons/InfoCircle.astro +28 -0
  202. package/dist/src-astro/icons/InfoIcon.astro +30 -0
  203. package/dist/src-astro/icons/LinkIcon.astro +31 -0
  204. package/dist/src-astro/icons/LinkedinIcon.astro +27 -0
  205. package/dist/src-astro/icons/MenuIcon.astro +31 -0
  206. package/dist/src-astro/icons/SearchIcon.astro +27 -0
  207. package/dist/{icons → src-astro/icons}/SettingsIcon.astro +8 -8
  208. package/dist/{icons → src-astro/icons}/SocialIcon.astro +36 -36
  209. package/dist/src-astro/icons/SuccessIcon.astro +28 -0
  210. package/dist/src-astro/icons/SunCloudyIcon.astro +27 -0
  211. package/dist/src-astro/icons/TwitterIcon.astro +28 -0
  212. package/dist/src-astro/icons/UserIcon.astro +28 -0
  213. package/dist/src-astro/icons/WarningIcon.astro +31 -0
  214. package/dist/src-astro/icons/XCircle.astro +28 -0
  215. package/dist/src-astro/icons/index.ts +25 -0
  216. package/dist/src-astro/image/Image.astro +338 -0
  217. package/dist/src-astro/image/ImageBasic.astro +0 -0
  218. package/dist/src-astro/image/ImageEffects.astro +34 -0
  219. package/dist/src-astro/image/ImageLoading.astro +37 -0
  220. package/dist/{image → src-astro/image}/index.ts +3 -3
  221. package/dist/src-astro/integration.ts +14 -0
  222. package/dist/{language-switcher → src-astro/language-switcher}/LanguageSwitcher.astro +22 -22
  223. package/dist/{language-switcher → src-astro/language-switcher}/LanguageSwitcherBasic.astro +1 -1
  224. package/dist/{language-switcher → src-astro/language-switcher}/index.ts +1 -1
  225. package/dist/{layout-app → src-astro/layout-app}/AppLayout.astro +83 -75
  226. package/dist/src-astro/layout-app/AppLayoutBasic.astro +54 -0
  227. package/dist/{layout-app → src-astro/layout-app}/index.ts +1 -1
  228. package/dist/{layout-basic → src-astro/layout-basic}/BaseLayout.astro +35 -31
  229. package/dist/src-astro/layout-basic/BaseLayoutBasic.astro +17 -0
  230. package/dist/{layout-basic → src-astro/layout-basic}/index.ts +1 -1
  231. package/dist/src-astro/layout-dashboard/DashboardLayout.astro +686 -0
  232. package/dist/src-astro/layout-dashboard/DashboardLayoutBasic.astro +51 -0
  233. package/dist/{layout-dashboard → src-astro/layout-dashboard}/index.ts +1 -1
  234. package/dist/{link → src-astro/link}/Link.astro +72 -57
  235. package/dist/src-astro/link/LinkAnimations.astro +29 -0
  236. package/dist/src-astro/link/LinkBasic.astro +17 -0
  237. package/dist/src-astro/link/LinkVariants.astro +20 -0
  238. package/dist/{link → src-astro/link}/index.ts +3 -3
  239. package/dist/{main → src-astro/main}/Main.astro +68 -60
  240. package/dist/src-astro/main/index.ts +1 -0
  241. package/dist/src-astro/modal/Modal.astro +126 -0
  242. package/dist/src-astro/modal/index.ts +1 -0
  243. package/dist/{module → src-astro/module}/Module.astro +30 -23
  244. package/dist/src-astro/module/ModuleBasic.astro +12 -0
  245. package/dist/src-astro/module/ModuleCustom.astro +14 -0
  246. package/dist/src-astro/module/ModuleGrid.astro +27 -0
  247. package/dist/{module → src-astro/module}/index.ts +3 -3
  248. package/dist/src-astro/nav-item/NavItems.astro +44 -0
  249. package/dist/src-astro/nav-item/NavItemsBasic.astro +30 -0
  250. package/dist/{nav-item → src-astro/nav-item}/index.ts +1 -1
  251. package/dist/src-astro/nav-section/NavSection.astro +41 -0
  252. package/dist/src-astro/nav-section/NavSectionBasic.astro +12 -0
  253. package/dist/{nav-section → src-astro/nav-section}/index.ts +1 -1
  254. package/dist/src-astro/products/ProductCard.astro +374 -0
  255. package/dist/src-astro/products/Products.astro +200 -0
  256. package/dist/src-astro/products/index.ts +2 -0
  257. package/dist/src-astro/section/Section.astro +150 -0
  258. package/dist/src-astro/section/index.ts +1 -0
  259. package/dist/src-astro/sidebar/Sidebar.astro +192 -0
  260. package/dist/src-astro/sidebar/SidebarBasic.astro +0 -0
  261. package/dist/{sidebar → src-astro/sidebar}/index.ts +1 -1
  262. package/dist/src-astro/sidebar-nav/SidebarNav.astro +136 -0
  263. package/dist/src-astro/sidebar-nav/SidebarNavBasic.astro +32 -0
  264. package/dist/{sidebar-nav → src-astro/sidebar-nav}/index.ts +1 -1
  265. package/dist/src-astro/speak/Speak.astro +73 -0
  266. package/dist/src-astro/speak/SpeakBasic.astro +13 -0
  267. package/dist/src-astro/speak/SpeakGrid.astro +30 -0
  268. package/dist/{speak → src-astro/speak}/index.ts +2 -2
  269. package/dist/{stack → src-astro/stack}/Stack.astro +67 -65
  270. package/dist/src-astro/stack/StackBasic.astro +21 -0
  271. package/dist/{stack → src-astro/stack}/index.ts +1 -1
  272. package/dist/src-astro/team-member/TeamMember.astro +137 -0
  273. package/dist/src-astro/team-member/TeamMemberBasic.astro +25 -0
  274. package/dist/src-astro/team-member/TeamMemberCustomStyle.astro +26 -0
  275. package/dist/src-astro/team-member/TeamMemberGroup.astro +60 -0
  276. package/dist/src-astro/team-member/TeamMemberWithSocial.astro +30 -0
  277. package/dist/{team-member → src-astro/team-member}/TeamMembers.astro +40 -48
  278. package/dist/{team-member → src-astro/team-member}/index.ts +9 -2
  279. package/dist/{text → src-astro/text}/Text.astro +50 -50
  280. package/dist/{text → src-astro/text}/TextBasic.astro +1 -1
  281. package/dist/src-astro/text/TextSizes.astro +11 -0
  282. package/dist/{text → src-astro/text}/index.ts +1 -1
  283. package/dist/{theme-switcher → src-astro/theme-switcher}/ThemeItem.astro +20 -20
  284. package/dist/src-astro/theme-switcher/ThemeSwitcher.astro +121 -0
  285. package/dist/{theme-switcher → src-astro/theme-switcher}/ThemeSwitcherBasic.astro +1 -1
  286. package/dist/{theme-switcher → src-astro/theme-switcher}/index.ts +1 -1
  287. package/dist/src-astro/toc/TableOfContents.astro +438 -0
  288. package/dist/src-astro/toc/TableOfContentsBasic.astro +25 -0
  289. package/dist/{toc → src-astro/toc}/index.ts +1 -1
  290. package/dist/src-astro/types/article.ts +22 -0
  291. package/dist/src-astro/types/footer.ts +129 -0
  292. package/dist/src-astro/types/header.ts +87 -0
  293. package/dist/src-astro/types/heading.ts +13 -0
  294. package/dist/{types → src-astro/types}/image.ts +4 -4
  295. package/dist/src-astro/types/layout.ts +71 -0
  296. package/dist/src-astro/types/main.ts +86 -0
  297. package/dist/src-astro/types/menu.ts +24 -0
  298. package/dist/src-astro/types/meta.ts +55 -0
  299. package/dist/src-astro/types/product.ts +10 -0
  300. package/dist/src-astro/types/sidebar.ts +59 -0
  301. package/dist/src-astro/types/static-path.ts +8 -0
  302. package/dist/src-astro/utils/component.ts +42 -0
  303. package/dist/src-astro/utils/i18n.ts +83 -0
  304. package/dist/src-astro/utils/image.ts +128 -0
  305. package/dist/src-astro/utils/lang_entry.ts +240 -0
  306. package/dist/src-astro/utils/lang_package.ts +150 -0
  307. package/dist/src-astro/utils/language.ts +121 -0
  308. package/dist/src-astro/utils/link.ts +250 -0
  309. package/dist/src-astro/utils/logger.ts +136 -0
  310. package/dist/src-astro/utils/path.ts +59 -0
  311. package/dist/src-astro/utils/social.ts +90 -0
  312. package/dist/src-astro/utils/theme.ts +122 -0
  313. package/dist/{utils → src-astro/utils}/url.ts +2 -2
  314. package/dist/vue/SmartLink.vue +21 -0
  315. package/dist/vue/TagList.vue +23 -0
  316. package/dist/vue/alert-dialog-vue/AlertDialog.vue +130 -0
  317. package/dist/vue/alert-dialog-vue/Basic.vue +38 -0
  318. package/dist/vue/alert-dialog-vue/Multilang.vue +58 -0
  319. package/dist/vue/alert-dialog-vue/index.ts +20 -0
  320. package/dist/vue/banner-box-vue/BannerBox.vue +336 -0
  321. package/dist/vue/banner-box-vue/DownloadButton.vue +244 -0
  322. package/dist/vue/banner-box-vue/ExampleBasic.vue +34 -0
  323. package/dist/vue/banner-box-vue/ExampleCustomBg.vue +34 -0
  324. package/dist/vue/banner-box-vue/ExampleDisplayModeAlways.vue +36 -0
  325. package/dist/vue/banner-box-vue/ExampleDisplayModeHover.vue +36 -0
  326. package/dist/vue/banner-box-vue/ExampleDisplayModeNever.vue +36 -0
  327. package/dist/vue/banner-box-vue/ExampleImageExport.vue +42 -0
  328. package/dist/vue/banner-box-vue/ExampleSizePreset.vue +39 -0
  329. package/dist/vue/banner-box-vue/FeatureCard.vue +205 -0
  330. package/dist/vue/banner-box-vue/SmartBanner.vue +48 -0
  331. package/dist/vue/banner-box-vue/bgStyles.ts +55 -0
  332. package/dist/vue/banner-box-vue/index.ts +48 -0
  333. package/dist/vue/banner-box-vue/sizePresets.ts +23 -0
  334. package/dist/vue/blog-vue/Basic.vue +30 -0
  335. package/dist/vue/blog-vue/BlogList.vue +102 -0
  336. package/dist/vue/blog-vue/Empty.vue +8 -0
  337. package/dist/vue/blog-vue/EmptyEnglish.vue +8 -0
  338. package/dist/vue/blog-vue/English.vue +24 -0
  339. package/dist/vue/blog-vue/index.ts +29 -0
  340. package/dist/vue/buttons-vue/Button.vue +105 -0
  341. package/dist/vue/buttons-vue/ButtonBasic.vue +11 -0
  342. package/dist/vue/buttons-vue/ButtonFeature.vue +100 -0
  343. package/dist/vue/buttons-vue/ButtonFeatureBasic.vue +8 -0
  344. package/dist/vue/buttons-vue/ButtonFeatureWithTips.vue +7 -0
  345. package/dist/vue/buttons-vue/ButtonLink.vue +13 -0
  346. package/dist/vue/buttons-vue/ButtonSizes.vue +12 -0
  347. package/dist/{button → vue/buttons-vue}/ButtonVariants.vue +2 -2
  348. package/dist/vue/buttons-vue/ButtonWithIcons.vue +21 -0
  349. package/dist/vue/buttons-vue/index.ts +1 -0
  350. package/dist/vue/confirm-dialog-vue/Basic.vue +62 -0
  351. package/dist/vue/confirm-dialog-vue/ConfirmDialog.vue +147 -0
  352. package/dist/vue/confirm-dialog-vue/CustomButtons.vue +81 -0
  353. package/dist/vue/confirm-dialog-vue/index.ts +20 -0
  354. package/dist/vue/cosy.ts +6 -0
  355. package/dist/vue/counter-vue/VueCounter.vue +29 -0
  356. package/dist/vue/counter-vue/index.ts +1 -0
  357. package/dist/vue/iPhone-vue/Basic.vue +33 -0
  358. package/dist/vue/iPhone-vue/CustomBackground.vue +35 -0
  359. package/dist/vue/iPhone-vue/NoFrame.vue +33 -0
  360. package/dist/vue/iPhone-vue/WeatherApp.vue +143 -0
  361. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Deep Purple - Landscape.png +0 -0
  362. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Deep Purple - Portrait.png +0 -0
  363. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Gold - Landscape.png +0 -0
  364. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Gold - Portrait.png +0 -0
  365. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Silver - Landscape.png +0 -0
  366. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Silver - Portrait.png +0 -0
  367. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Space Black - Landscape.png +0 -0
  368. package/dist/vue/iPhone-vue/assets/iPhone 14 Pro - Space Black - Portrait.png +0 -0
  369. package/dist/vue/iPhone-vue/iPhoneWindow.vue +247 -0
  370. package/dist/vue/iPhone-vue/index.ts +31 -0
  371. package/dist/vue/icons-vue/AlertTriangleIcon.vue +30 -0
  372. package/dist/vue/icons-vue/CalendarIcon.vue +30 -0
  373. package/dist/vue/icons-vue/CheckCircleIcon.vue +30 -0
  374. package/dist/vue/icons-vue/CheckIcon.vue +30 -0
  375. package/dist/vue/icons-vue/ChevronDownIcon.vue +30 -0
  376. package/dist/vue/icons-vue/ClipboardIcon.vue +30 -0
  377. package/dist/vue/icons-vue/CloseIcon.vue +30 -0
  378. package/dist/vue/icons-vue/InboxArchiveIcon.vue +30 -0
  379. package/dist/vue/icons-vue/InfoCircleIcon.vue +30 -0
  380. package/dist/vue/icons-vue/InfoIcon.vue +30 -0
  381. package/dist/vue/icons-vue/LinkIcon.vue +30 -0
  382. package/dist/vue/icons-vue/MenuIcon.vue +30 -0
  383. package/dist/vue/icons-vue/SearchIcon.vue +30 -0
  384. package/dist/vue/icons-vue/SettingsIcon.vue +30 -0
  385. package/dist/vue/icons-vue/UserIcon.vue +30 -0
  386. package/dist/vue/icons-vue/VueIcon.vue +86 -0
  387. package/dist/vue/icons-vue/XCircleIcon.vue +30 -0
  388. package/dist/vue/icons-vue/index.ts +1 -0
  389. package/dist/vue/list-vue/ListItem.vue +5 -0
  390. package/dist/vue/list-vue/index.ts +1 -0
  391. package/dist/vue/mac-window-vue/Basic.vue +9 -0
  392. package/dist/vue/mac-window-vue/CustomHeight.vue +13 -0
  393. package/dist/vue/mac-window-vue/MacWindow.vue +283 -0
  394. package/dist/vue/mac-window-vue/WithEvents.vue +40 -0
  395. package/dist/vue/mac-window-vue/WithSidebar.vue +31 -0
  396. package/dist/vue/mac-window-vue/WithTabs.vue +26 -0
  397. package/dist/vue/mac-window-vue/WithToolbar.vue +44 -0
  398. package/dist/vue/mac-window-vue/index.ts +36 -0
  399. package/dist/vue/utils/component.ts +42 -0
  400. package/dist/vue/utils/i18n.ts +83 -0
  401. package/dist/vue/utils/image.ts +128 -0
  402. package/dist/vue/utils/lang_entry.ts +240 -0
  403. package/dist/vue/utils/lang_package.ts +150 -0
  404. package/dist/vue/utils/language.ts +121 -0
  405. package/dist/vue/utils/link.ts +250 -0
  406. package/dist/vue/utils/logger.ts +136 -0
  407. package/dist/vue/utils/path.ts +59 -0
  408. package/dist/vue/utils/social.ts +90 -0
  409. package/dist/vue/utils/theme.ts +122 -0
  410. package/dist/vue/utils/url.ts +17 -0
  411. package/package.json +85 -82
  412. package/LICENSE +0 -21
  413. package/README.md +0 -31
  414. package/dist/alert/EAlertCustomStyle.astro +0 -14
  415. package/dist/alert/EAlertError.astro +0 -6
  416. package/dist/alert/EAlertInfo.astro +0 -6
  417. package/dist/alert/EAlertSuccess.astro +0 -6
  418. package/dist/alert/EAlertWarning.astro +0 -6
  419. package/dist/article/ArticleBasic.astro +0 -31
  420. package/dist/assets/iconData.ts +0 -116
  421. package/dist/banner/Banner.astro +0 -165
  422. package/dist/banner/BannerAllAnimations.astro +0 -10
  423. package/dist/banner/BannerCustomStyle.astro +0 -7
  424. package/dist/blog/Blog.astro +0 -249
  425. package/dist/blog/index.ts +0 -1
  426. package/dist/button/Button.astro +0 -192
  427. package/dist/button/ButtonBasic.astro +0 -18
  428. package/dist/button/ButtonIconBoth.astro +0 -9
  429. package/dist/button/ButtonShapes.astro +0 -23
  430. package/dist/button/ButtonSizes.astro +0 -15
  431. package/dist/button/ButtonStates.astro +0 -12
  432. package/dist/button/ButtonVariants.astro +0 -14
  433. package/dist/button/ButtonWithIcons.astro +0 -25
  434. package/dist/card/CardCompact.astro +0 -77
  435. package/dist/card/CardCourse.astro +0 -32
  436. package/dist/card/CardLink.astro +0 -75
  437. package/dist/card/CardWithImage.astro +0 -39
  438. package/dist/card/index.ts +0 -7
  439. package/dist/code-block/CodeBlock.astro +0 -152
  440. package/dist/code-block/index.ts +0 -1
  441. package/dist/code-container/CodeContainer.astro +0 -254
  442. package/dist/code-example/CodeExample.astro +0 -157
  443. package/dist/code-example/index.ts +0 -1
  444. package/dist/container/Container.astro +0 -211
  445. package/dist/container/EContainerBasic.astro +0 -13
  446. package/dist/container/EContainerFlexBetween.astro +0 -16
  447. package/dist/container/EContainerFlexCenter.astro +0 -23
  448. package/dist/container/EContainerFlexColumn.astro +0 -16
  449. package/dist/container/EContainerFlexRow.astro +0 -16
  450. package/dist/container/EContainerPadding.astro +0 -32
  451. package/dist/container/EContainerSizes.astro +0 -36
  452. package/dist/database/BaseDB.ts +0 -231
  453. package/dist/database/BlogDB.ts +0 -198
  454. package/dist/database/CourseDB.ts +0 -84
  455. package/dist/database/MetaDB.ts +0 -74
  456. package/dist/entities/BaseDoc.ts +0 -195
  457. package/dist/entities/CourseDoc.ts +0 -96
  458. package/dist/entities/ExperimentDoc.ts +0 -114
  459. package/dist/entities/Feature.ts +0 -53
  460. package/dist/entities/LessonDoc.ts +0 -148
  461. package/dist/entities/MetaDoc.ts +0 -90
  462. package/dist/entities/SidebarItem.ts +0 -89
  463. package/dist/entities/Tag.ts +0 -42
  464. package/dist/env.d.ts +0 -32
  465. package/dist/errors/404.astro +0 -27
  466. package/dist/errors/404Basic.astro +0 -5
  467. package/dist/errors/index.ts +0 -11
  468. package/dist/flex/FlexBasic.astro +0 -9
  469. package/dist/footer/EFooterBasic.astro +0 -18
  470. package/dist/footer/EFooterComplete.astro +0 -45
  471. package/dist/footer/EFooterWithLogo.astro +0 -23
  472. package/dist/footer/EFooterWithNavigation.astro +0 -24
  473. package/dist/footer/EFooterWithProducts.astro +0 -24
  474. package/dist/footer/EFooterWithSocial.astro +0 -24
  475. package/dist/footer/FooterSection.astro +0 -48
  476. package/dist/grid/GridBasic.astro +0 -9
  477. package/dist/header/Header.astro +0 -204
  478. package/dist/header/HeaderCustomNavbarCenter.astro +0 -23
  479. package/dist/header/HeaderCustomNavbarEnd.astro +0 -20
  480. package/dist/header/HeaderCustomNavbarStart.astro +0 -20
  481. package/dist/header/HeaderWithNavigation.astro +0 -22
  482. package/dist/heading/Heading.astro +0 -238
  483. package/dist/hero/Hero.astro +0 -368
  484. package/dist/hero/HeroAlignCenter.astro +0 -13
  485. package/dist/hero/HeroAlignLeft.astro +0 -13
  486. package/dist/hero/HeroAlignRight.astro +0 -13
  487. package/dist/hero/HeroBackgroundImage.astro +0 -12
  488. package/dist/hero/HeroBasic.astro +0 -12
  489. package/dist/hero/HeroGradientBackground.astro +0 -10
  490. package/dist/hero/HeroPlainBackground.astro +0 -10
  491. package/dist/hero/HeroWithButton.astro +0 -11
  492. package/dist/hero/HeroWithImage.astro +0 -16
  493. package/dist/icons/AlertTriangle.astro +0 -24
  494. package/dist/icons/AstroIcon.astro +0 -61
  495. package/dist/icons/CalendarIcon.astro +0 -24
  496. package/dist/icons/CheckCircle.astro +0 -23
  497. package/dist/icons/CheckIcon.astro +0 -27
  498. package/dist/icons/ChevronDownIcon.astro +0 -24
  499. package/dist/icons/ClipboardIcon.astro +0 -27
  500. package/dist/icons/CloseIcon.astro +0 -27
  501. package/dist/icons/ErrorIcon.astro +0 -24
  502. package/dist/icons/GithubIcon.astro +0 -19
  503. package/dist/icons/InboxArchive.astro +0 -23
  504. package/dist/icons/InfoCircle.astro +0 -24
  505. package/dist/icons/InfoIcon.astro +0 -26
  506. package/dist/icons/LinkIcon.astro +0 -27
  507. package/dist/icons/LinkedinIcon.astro +0 -23
  508. package/dist/icons/MenuIcon.astro +0 -27
  509. package/dist/icons/SearchIcon.astro +0 -23
  510. package/dist/icons/SuccessIcon.astro +0 -24
  511. package/dist/icons/SunCloudyIcon.astro +0 -23
  512. package/dist/icons/TwitterIcon.astro +0 -24
  513. package/dist/icons/UserIcon.astro +0 -24
  514. package/dist/icons/WarningIcon.astro +0 -27
  515. package/dist/icons/XCircle.astro +0 -24
  516. package/dist/icons/index.ts +0 -3
  517. package/dist/image/Image.astro +0 -342
  518. package/dist/image/ImageBasic.astro +0 -1
  519. package/dist/image/ImageEffects.astro +0 -32
  520. package/dist/image/ImageLoading.astro +0 -35
  521. package/dist/index.ts +0 -3
  522. package/dist/index_astro.ts +0 -68
  523. package/dist/index_collection.ts +0 -104
  524. package/dist/index_icons.ts +0 -24
  525. package/dist/index_utils.ts +0 -8
  526. package/dist/index_vue.ts +0 -44
  527. package/dist/integration.ts +0 -14
  528. package/dist/layout-app/AppLayoutBasic.astro +0 -53
  529. package/dist/layout-basic/BaseLayoutBasic.astro +0 -16
  530. package/dist/layout-dashboard/DashboardLayout.astro +0 -671
  531. package/dist/layout-dashboard/DashboardLayoutBasic.astro +0 -48
  532. package/dist/link/LinkAnimations.astro +0 -21
  533. package/dist/link/LinkBasic.astro +0 -17
  534. package/dist/link/LinkVariants.astro +0 -20
  535. package/dist/main/index.ts +0 -1
  536. package/dist/modal/Modal.astro +0 -119
  537. package/dist/modal/index.ts +0 -1
  538. package/dist/module/ModuleBasic.astro +0 -12
  539. package/dist/module/ModuleCustom.astro +0 -14
  540. package/dist/module/ModuleGrid.astro +0 -26
  541. package/dist/nav-item/NavItems.astro +0 -44
  542. package/dist/nav-item/NavItemsBasic.astro +0 -27
  543. package/dist/nav-section/NavSection.astro +0 -42
  544. package/dist/nav-section/NavSectionBasic.astro +0 -12
  545. package/dist/products/ProductCard.astro +0 -375
  546. package/dist/products/Products.astro +0 -195
  547. package/dist/products/index.ts +0 -2
  548. package/dist/section/Section.astro +0 -140
  549. package/dist/section/index.ts +0 -1
  550. package/dist/sidebar/Sidebar.astro +0 -174
  551. package/dist/sidebar/SidebarBasic.astro +0 -1
  552. package/dist/sidebar-nav/SidebarNav.astro +0 -117
  553. package/dist/sidebar-nav/SidebarNavBasic.astro +0 -32
  554. package/dist/speak/Speak.astro +0 -65
  555. package/dist/speak/SpeakBasic.astro +0 -13
  556. package/dist/speak/SpeakGrid.astro +0 -29
  557. package/dist/stack/StackBasic.astro +0 -15
  558. package/dist/team-member/TeamMember.astro +0 -135
  559. package/dist/team-member/TeamMemberBasic.astro +0 -25
  560. package/dist/team-member/TeamMemberCustomStyle.astro +0 -26
  561. package/dist/team-member/TeamMemberGroup.astro +0 -60
  562. package/dist/team-member/TeamMemberWithSocial.astro +0 -30
  563. package/dist/text/TextSizes.astro +0 -11
  564. package/dist/theme-switcher/ThemeSwitcher.astro +0 -120
  565. package/dist/toc/TableOfContents.astro +0 -405
  566. package/dist/toc/TableOfContentsBasic.astro +0 -25
  567. package/dist/types/article.ts +0 -22
  568. package/dist/types/footer.ts +0 -129
  569. package/dist/types/header.ts +0 -87
  570. package/dist/types/heading.ts +0 -13
  571. package/dist/types/layout.ts +0 -71
  572. package/dist/types/main.ts +0 -80
  573. package/dist/types/menu.ts +0 -24
  574. package/dist/types/meta.ts +0 -55
  575. package/dist/types/product.ts +0 -10
  576. package/dist/types/sidebar.ts +0 -39
  577. package/dist/types/static-path.ts +0 -8
  578. package/dist/utils/component.ts +0 -39
  579. package/dist/utils/i18n.ts +0 -83
  580. package/dist/utils/image.ts +0 -126
  581. package/dist/utils/lang_entry.ts +0 -240
  582. package/dist/utils/lang_package.ts +0 -150
  583. package/dist/utils/language.ts +0 -118
  584. package/dist/utils/link.ts +0 -248
  585. package/dist/utils/logger.ts +0 -130
  586. package/dist/utils/path.ts +0 -55
  587. package/dist/utils/social.ts +0 -90
  588. package/dist/utils/theme.ts +0 -114
  589. /package/dist/{assets → src-astro/assets}/book.png +0 -0
  590. /package/dist/{assets → src-astro/assets}/logo-rounded.png +0 -0
  591. /package/dist/{assets → src-astro/assets}/logo.png +0 -0
  592. /package/dist/{button → src-astro/button}/ButtonBlock.astro +0 -0
  593. /package/dist/{button → src-astro/button}/ButtonError.astro +0 -0
  594. /package/dist/{button → src-astro/button}/ButtonGhost.astro +0 -0
  595. /package/dist/{button → src-astro/button}/ButtonInfo.astro +0 -0
  596. /package/dist/{button → src-astro/button}/ButtonLink.astro +0 -0
  597. /package/dist/{button → src-astro/button}/ButtonNeutral.astro +0 -0
  598. /package/dist/{button → src-astro/button}/ButtonOutline.astro +0 -0
  599. /package/dist/{button → src-astro/button}/ButtonShapeCircle.astro +0 -0
  600. /package/dist/{button → src-astro/button}/ButtonShapeDefault.astro +0 -0
  601. /package/dist/{button → src-astro/button}/ButtonShapeSquare.astro +0 -0
  602. /package/dist/{button → src-astro/button}/ButtonSuccess.astro +0 -0
  603. /package/dist/{button → src-astro/button}/ButtonWarning.astro +0 -0
  604. /package/dist/{button → src-astro/button}/ButtonWide.astro +0 -0
  605. /package/dist/{card → src-astro/card}/CardBasic.astro +0 -0
  606. /package/dist/{heading → src-astro/heading}/HeadingBasic.astro +0 -0
  607. /package/dist/{types → src-astro/types}/nav.ts +0 -0
@@ -1,195 +0,0 @@
1
- import { render, type RenderResult, type CollectionEntry, type DataEntryMap } from 'astro:content';
2
- import { SidebarItemEntity, type SidebarProvider } from './SidebarItem';
3
- import { cosyLogger, ERROR_PREFIX } from '../cosy';
4
-
5
- /**
6
- * 文档基类,提供所有文档类型共享的基本功能
7
- */
8
- export abstract class BaseDoc<
9
- Collection extends keyof DataEntryMap,
10
- T extends CollectionEntry<Collection>,
11
- > implements SidebarProvider {
12
- protected entry: T;
13
-
14
- constructor(entry: T) {
15
- this.entry = entry;
16
- }
17
-
18
- /**
19
- * 获取顶级文档
20
- * 子类应该实现此方法以提供正确的顶级文档
21
- */
22
- abstract getTopDoc(): Promise<BaseDoc<Collection, T> | null>;
23
-
24
- /**
25
- * 获取子文档
26
- * 子类应该实现此方法以提供正确的子文档列表
27
- */
28
- abstract getChildren(): Promise<BaseDoc<Collection, T>[]>;
29
-
30
- /**
31
- * 获取文档的层级深度
32
- * 例如:对于 ID 为 "zh-cn/blog/typescript" 的文档,深度为3
33
- */
34
- getLevel(): number {
35
- return this.entry.id.split('/').length;
36
- }
37
-
38
- /**
39
- * 获取所有祖先文档的ID
40
- * 例如:对于 ID 为 "zh-cn/blog/typescript" 的文档,祖先ID为 ["zh-cn/blog", "zh-cn"]
41
- * @returns 祖先文档的ID列表
42
- */
43
- getAncestorIds(): string[] {
44
- const parts = this.entry.id.split('/');
45
- return parts.slice(0, -1).map((_part, index) => parts.slice(0, index + 1).join('/'));
46
- }
47
-
48
- /**
49
- * 获取指定层级的祖先文档ID
50
- * 例如:对于 ID 为 "zh-cn/blog/typescript" 的文档,level=2 的祖先ID为 "zh-cn/blog"
51
- * @param level 层级深度,从1开始
52
- * @returns 祖先文档的ID
53
- */
54
- getAncestorId(level: number): string {
55
- const ancestorIds = this.getAncestorIds();
56
-
57
- if (level < 1) {
58
- cosyLogger.error('Level must be greater than 0');
59
- throw new Error(ERROR_PREFIX + 'Level must be greater than 0');
60
- }
61
-
62
- if (level >= this.getLevel()) {
63
- cosyLogger.debug("当前文档的ID:" + this.entry.id);
64
- cosyLogger.debug("当前文档的Level:" + this.getLevel());
65
- cosyLogger.debug("正在获取祖先ID,level:" + level);
66
-
67
- throw new Error(ERROR_PREFIX + 'Level must be less than the document level');
68
- }
69
-
70
- if (ancestorIds.length < level) {
71
- cosyLogger.debug("当前文档的ID\n" + this.entry.id);
72
- cosyLogger.array("当前文档的祖先IDs", ancestorIds);
73
- cosyLogger.debug("正在获取祖先ID,level:\n" + level);
74
-
75
- throw new Error(ERROR_PREFIX + 'Level must be greater than 0');
76
- }
77
-
78
- return ancestorIds[level - 1];
79
- }
80
-
81
- /**
82
- * 获取顶级侧边栏项目
83
- * 如果有顶级文档,返回顶级文档的侧边栏项目
84
- * 否则返回当前文档的侧边栏项目
85
- */
86
- async getTopSidebarItem(): Promise<SidebarItemEntity> {
87
- const topDoc = await this.getTopDoc();
88
- if (topDoc) {
89
- return await topDoc.toSidebarItem();
90
- }
91
-
92
- return new SidebarItemEntity({
93
- text: this.getTitle(),
94
- items: [],
95
- link: this.getLink(),
96
- });
97
- }
98
-
99
- /**
100
- * 获取父文档ID
101
- * 例如:对于 ID 为 "zh-cn/blog/typescript" 的文档,父ID为 "zh-cn/blog"
102
- *
103
- * @returns 父文档ID,如果没有父文档则返回null
104
- */
105
- getParentId(): string | null {
106
- return this.getAncestorId(this.getLevel() - 1);
107
- }
108
-
109
- /**
110
- * 获取顶级文档的ID
111
- * 例如:对于 ID 为 "zh-cn/blog/typescript" 的文档,顶级ID为 "zh-cn/blog"
112
- *
113
- * 默认实现假设顶级ID是前两部分
114
- * 子类可以根据需要覆盖此方法
115
- */
116
- getTopDocId(): string {
117
- const level = this.getLevel();
118
-
119
- if (level <= 2) {
120
- return this.entry.id;
121
- }
122
-
123
- return this.getAncestorId(2);
124
- }
125
-
126
- /**
127
- * 获取文档ID
128
- */
129
- getId(): string {
130
- return this.entry.id;
131
- }
132
-
133
- /**
134
- * 获取文档标题
135
- */
136
- getTitle(): string {
137
- return this.entry.data.title as string;
138
- }
139
-
140
- /**
141
- * 获取文档语言
142
- */
143
- getLang(): string {
144
- return this.entry.id.split('/')[0];
145
- }
146
-
147
- /**
148
- * 获取文档slug
149
- */
150
- getSlug(): string {
151
- return this.getId().split('/').slice(1).join('/');
152
- }
153
-
154
- /**
155
- * 获取文档描述
156
- */
157
- getDescription(): string {
158
- return this.entry.data.description as string;
159
- }
160
-
161
- /**
162
- * 获取文档链接
163
- * 每个子类必须实现此方法以提供正确的链接
164
- */
165
- abstract getLink(): string;
166
-
167
- /**
168
- * 渲染文档内容
169
- */
170
- async render(): Promise<RenderResult> {
171
- return await render(this.entry);
172
- }
173
-
174
- /**
175
- * 转换为侧边栏项目
176
- * 如果文档有子文档,会包含子文档的侧边栏项目
177
- */
178
- async toSidebarItem(): Promise<SidebarItemEntity> {
179
- const debug = false;
180
-
181
- const children = await this.getChildren();
182
- const childItems = await Promise.all(children.map((child) => child.toSidebarItem()));
183
-
184
- if (debug) {
185
- cosyLogger.info(`${this.entry.id} 的侧边栏项目`);
186
- console.log(childItems);
187
- }
188
-
189
- return new SidebarItemEntity({
190
- text: this.getTitle(),
191
- items: childItems,
192
- link: this.getLink(),
193
- });
194
- }
195
- }
@@ -1,96 +0,0 @@
1
- import { cosyLogger } from '../cosy';
2
- import { SidebarItemEntity } from './SidebarItem';
3
- import type { CourseEntry } from '../database/CourseDB';
4
- import { courseDB } from '../database/CourseDB';
5
- import { LinkUtil } from '../utils/link';
6
- import { COLLECTION_COURSE } from '../database/CourseDB';
7
- import { BaseDoc } from './BaseDoc';
8
-
9
- export default class CourseDoc extends BaseDoc<typeof COLLECTION_COURSE, CourseEntry> {
10
- constructor(entry: CourseEntry) {
11
- super(entry);
12
- }
13
-
14
- static fromEntry(entry: CourseEntry) {
15
- return new CourseDoc(entry);
16
- }
17
-
18
- getLink(): string {
19
- return LinkUtil.getCourseLink(this.entry.id);
20
- }
21
-
22
- getOrder(): number {
23
- return this.entry.data.order;
24
- }
25
-
26
- isFolder(): boolean {
27
- return this.entry.data.folder;
28
- }
29
-
30
- async getTopDoc(): Promise<CourseDoc | null> {
31
- const id = this.getTopDocId();
32
- const doc = await courseDB.find(id);
33
- return doc;
34
- }
35
-
36
- async getAncestor(level: number): Promise<CourseDoc | null> {
37
- const debug = false;
38
- if (debug) {
39
- cosyLogger.info(`获取 ${this.entry.id} 的祖先文档,level: ${level}`);
40
- }
41
-
42
- if (level >= this.getLevel()) {
43
- if (debug) {
44
- cosyLogger.info(`祖先文档为自身`);
45
- }
46
- return this;
47
- }
48
-
49
- const id = this.getAncestorId(level);
50
- const doc = await courseDB.find(id);
51
- return doc;
52
- }
53
-
54
- /**
55
- * 获取子文档
56
- * @returns 子文档列表
57
- */
58
- async getChildren(): Promise<CourseDoc[]> {
59
- const debug = false;
60
- const children = (await courseDB.getChildren(this.entry.id)).sort(
61
- (a, b) => a.getOrder() - b.getOrder()
62
- );
63
- if (debug && children.length > 0) {
64
- cosyLogger.array(
65
- `${this.entry.id} 的子文档(${children.length})`,
66
- children.map((child) => `#${child.getOrder()} ${child.entry.id}`)
67
- );
68
- }
69
- return children;
70
- }
71
-
72
- override async toSidebarItem(): Promise<SidebarItemEntity> {
73
- const debug = false;
74
- const children = await this.getChildren();
75
- let childItems = await Promise.all(children.map((child) => child.toSidebarItem()));
76
-
77
- if (this.isBook()) {
78
- childItems = [...childItems];
79
- }
80
-
81
- if (debug) {
82
- cosyLogger.info(`${this.entry.id} 的侧边栏项目`);
83
- console.log(childItems);
84
- }
85
-
86
- return new SidebarItemEntity({
87
- text: this.getTitle(),
88
- items: childItems,
89
- link: this.getLink(),
90
- });
91
- }
92
-
93
- isBook(): boolean {
94
- return this.entry.id.split('/').length === 2;
95
- }
96
- }
@@ -1,114 +0,0 @@
1
- import type { ExperimentEntry } from '../database/ExperimentDB';
2
- import { experimentDB } from '../database/ExperimentDB';
3
- import { cosyLogger } from '../cosy';
4
- import { SidebarItemEntity } from './SidebarItem';
5
- import { LinkUtil } from '../utils/link';
6
- import { COLLECTION_EXPERIMENT } from '../database/ExperimentDB';
7
- import { BaseDoc } from './BaseDoc';
8
- import type { IHeadingType } from '../types/heading';
9
-
10
- export default class ExperimentDoc extends BaseDoc<typeof COLLECTION_EXPERIMENT, ExperimentEntry> {
11
- constructor(entry: ExperimentEntry) {
12
- super(entry);
13
- }
14
-
15
- isBook(): boolean {
16
- return this.entry.id.split('/').length === 2;
17
- }
18
-
19
- async getBookId(): Promise<string> {
20
- return this.getTopDocId();
21
- }
22
-
23
- async getBook(): Promise<ExperimentDoc | null> {
24
- const bookId = await this.getBookId();
25
- return await experimentDB.find(bookId);
26
- }
27
-
28
- getLink(): string {
29
- const debug = false;
30
- const lang = this.getLang();
31
- const link = LinkUtil.getExperimentLink(lang, this.getId());
32
-
33
- if (debug) {
34
- cosyLogger.info(`获取 ${this.entry.id} 的链接: ${link}`);
35
- }
36
-
37
- return link;
38
- }
39
-
40
- /**
41
- * 获取文档的语言
42
- *
43
- * 文档的 id 格式为 `book-id/zh-cn/chapter-id/lesson-id`
44
- *
45
- * @returns 语言
46
- */
47
- override getLang(): string {
48
- const debug = false;
49
-
50
- const parts = this.entry.id.split('/');
51
- const lang = parts[1];
52
-
53
- if (debug) {
54
- cosyLogger.info(`获取 ${this.entry.id} 的语言: ${lang}`);
55
- }
56
-
57
- return lang;
58
- }
59
-
60
- getHTML(): string {
61
- const debug = false;
62
-
63
- if (debug) {
64
- cosyLogger.info(`获取 ${this.entry.id} 的 HTML`);
65
- }
66
-
67
- return this.entry.rendered?.html || '';
68
- }
69
-
70
- getHeadings(): IHeadingType[] {
71
- const debug = false;
72
-
73
- if (debug) {
74
- cosyLogger.info(`获取 ${this.entry.id} 的 headings`);
75
- }
76
-
77
- return (this.entry.rendered?.metadata?.headings as IHeadingType[]) || [];
78
- }
79
-
80
- async getTopDoc(): Promise<ExperimentDoc | null> {
81
- const bookId = await this.getBookId();
82
- return await experimentDB.find(bookId);
83
- }
84
-
85
- async getChildren(): Promise<ExperimentDoc[]> {
86
- return await experimentDB.getChildren(this.entry.id);
87
- }
88
-
89
- async getDescendants(): Promise<ExperimentDoc[]> {
90
- return await experimentDB.getDescendantDocs(this.entry.id);
91
- }
92
-
93
- override async toSidebarItem(): Promise<SidebarItemEntity> {
94
- const debug = false;
95
-
96
- const children = await this.getChildren();
97
- let childItems = await Promise.all(children.map((child) => child.toSidebarItem()));
98
-
99
- if (this.isBook()) {
100
- childItems = [...childItems];
101
- }
102
-
103
- if (debug) {
104
- cosyLogger.info(`${this.entry.id} 的侧边栏项目`);
105
- console.log(childItems);
106
- }
107
-
108
- return new SidebarItemEntity({
109
- text: this.getTitle(),
110
- items: childItems,
111
- link: this.getLink(),
112
- });
113
- }
114
- }
@@ -1,53 +0,0 @@
1
- class Feature {
2
- private translations: Map<string, string>;
3
- public emoji: string = '';
4
- public link: string = '';
5
- public presetIcon: string = '';
6
-
7
- private constructor() {
8
- this.translations = new Map();
9
- this.translations.set('zh-cn', '');
10
- this.translations.set('en', '');
11
- }
12
-
13
- public static createWithIcon(emoji: string): Feature {
14
- const feature = new Feature();
15
- feature.emoji = emoji;
16
- return feature;
17
- }
18
-
19
- public static createWithPresetIcon(presetIcon: string): Feature {
20
- const feature = new Feature();
21
- feature.presetIcon = presetIcon;
22
- return feature;
23
- }
24
-
25
- public setTitle(title: string, lang: string): Feature {
26
- this.translations.set(lang, title);
27
- return this;
28
- }
29
-
30
- public setLink(link: string): Feature {
31
- this.link = link;
32
- return this;
33
- }
34
-
35
- public setPresetIcon(presetIcon: string): Feature {
36
- this.presetIcon = presetIcon;
37
- return this;
38
- }
39
-
40
- public setZh(title: string): Feature {
41
- return this.setTitle(title, 'zh-cn');
42
- }
43
-
44
- public setEn(title: string): Feature {
45
- return this.setTitle(title, 'en');
46
- }
47
-
48
- public getTitle(lang: string): string {
49
- return this.translations.get(lang) || '';
50
- }
51
- }
52
-
53
- export default Feature;
@@ -1,148 +0,0 @@
1
- import type { LessonEntry } from '../database/LessonDB';
2
- import { lessonDB } from '../database/LessonDB';
3
- import { cosyLogger } from '../cosy';
4
- import { SidebarItemEntity } from './SidebarItem';
5
- import { LinkUtil } from '../utils/link';
6
- import { COLLECTION_LESSON } from '../database/LessonDB';
7
- import { BaseDoc } from './BaseDoc';
8
- import type { IHeadingType } from '../types/heading';
9
-
10
- /**
11
- * 课程文档类,配合 LessonDB 使用
12
- *
13
- * 目录结构:
14
- * ```
15
- * lessons/
16
- * ├── build_your_own_web_toolbox/ # 课程目录
17
- * │ ├── images/ # 课程图片资源
18
- * │ ├── components/ # 课程组件
19
- * │ ├── en/ # 英文版本
20
- * │ │ ├── index.mdx # 课程首页
21
- * │ │ ├── 1.mdx # 第一章
22
- * │ │ └── 2.mdx # 第二章
23
- * │ └── zh-cn/ # 中文版本
24
- * │ ├── index.mdx # 课程首页
25
- * │ ├── 1.mdx # 第一章
26
- * │ └── 2.mdx # 第二章
27
- * └── learn_astro/ # 另一个课程
28
- * ├── en/
29
- * │ ├── index.mdx
30
- * │ ├── 1.mdx
31
- * │ └── 2.mdx
32
- * └── zh-cn/
33
- * ├── index.mdx
34
- * ├── 1.mdx
35
- * └── 2.mdx
36
- * ```
37
- *
38
- * 说明:
39
- * - 每个课程(如 build_your_own_web_toolbox)是一个独立的目录
40
- * - 课程目录可以包含多语言版本(en, zh-cn 等)
41
- * - 每个语言版本包含完整的课程内容
42
- * - 课程目录可以作为 git 子模块独立管理
43
- */
44
- export default class LessonDoc extends BaseDoc<typeof COLLECTION_LESSON, LessonEntry> {
45
- constructor(entry: LessonEntry) {
46
- super(entry);
47
- }
48
-
49
- isBook(): boolean {
50
- return this.entry.id.split('/').length === 2;
51
- }
52
-
53
- async getBookId(): Promise<string> {
54
- return this.getTopDocId();
55
- }
56
-
57
- async getBook(): Promise<LessonDoc | null> {
58
- const bookId = await this.getBookId();
59
- return await lessonDB.find(bookId);
60
- }
61
-
62
- getLink(): string {
63
- const debug = false;
64
- const lang = this.getLang();
65
- const link = LinkUtil.getLessonLink(lang, this.getId());
66
-
67
- if (debug) {
68
- cosyLogger.info(`获取 ${this.entry.id} 的链接: ${link}`);
69
- }
70
-
71
- return link;
72
- }
73
-
74
- /**
75
- * 获取文档的语言
76
- *
77
- * 文档的 id 格式为 `book-id/zh-cn/chapter-id/lesson-id`
78
- *
79
- * @returns 语言
80
- */
81
- override getLang(): string {
82
- const debug = false;
83
-
84
- const parts = this.entry.id.split('/');
85
- const lang = parts[1];
86
-
87
- if (debug) {
88
- cosyLogger.info(`获取 ${this.entry.id} 的语言: ${lang}`);
89
- }
90
-
91
- return lang;
92
- }
93
-
94
- getHTML(): string {
95
- const debug = false;
96
-
97
- if (debug) {
98
- cosyLogger.info(`获取 ${this.entry.id} 的 HTML`);
99
- }
100
-
101
- return this.entry.rendered?.html || '';
102
- }
103
-
104
- getHeadings(): IHeadingType[] {
105
- const debug = false;
106
-
107
- if (debug) {
108
- cosyLogger.info(`获取 ${this.entry.id} 的 headings`);
109
- }
110
-
111
- return (this.entry.rendered?.metadata?.headings as IHeadingType[]) || [];
112
- }
113
-
114
- async getTopDoc(): Promise<LessonDoc | null> {
115
- const bookId = await this.getBookId();
116
- return await lessonDB.find(bookId);
117
- }
118
-
119
- async getChildren(): Promise<LessonDoc[]> {
120
- return await lessonDB.getChildren(this.entry.id);
121
- }
122
-
123
- async getDescendants(): Promise<LessonDoc[]> {
124
- return await lessonDB.getDescendantDocs(this.entry.id);
125
- }
126
-
127
- override async toSidebarItem(): Promise<SidebarItemEntity> {
128
- const debug = false;
129
-
130
- const children = await this.getChildren();
131
- let childItems = await Promise.all(children.map((child) => child.toSidebarItem()));
132
-
133
- if (this.isBook()) {
134
- childItems = [...childItems];
135
- }
136
-
137
- if (debug) {
138
- cosyLogger.info(`${this.entry.id} 的侧边栏项目`);
139
- console.log(childItems);
140
- }
141
-
142
- return new SidebarItemEntity({
143
- text: this.getTitle(),
144
- items: childItems,
145
- link: this.getLink(),
146
- });
147
- }
148
- }
@@ -1,90 +0,0 @@
1
- import { SidebarItemEntity } from './SidebarItem';
2
- import type { MetaEntry } from '../database/MetaDB';
3
- import { LinkUtil } from '../utils/link';
4
- import { BaseDoc } from './BaseDoc';
5
- import { metaDB } from '../database/MetaDB';
6
- import { COLLECTION_META } from '../database/MetaDB';
7
-
8
- export default class MetaDoc extends BaseDoc<typeof COLLECTION_META, MetaEntry> {
9
- constructor(entry: MetaEntry) {
10
- super(entry);
11
- }
12
-
13
- static fromEntry(entry: MetaEntry) {
14
- return new MetaDoc(entry);
15
- }
16
-
17
- getTopDoc(): Promise<MetaDoc | null> {
18
- return Promise.resolve(null);
19
- }
20
-
21
- getChildren(): Promise<MetaDoc[]> {
22
- return Promise.resolve([]);
23
- }
24
-
25
- getLink(): string {
26
- return LinkUtil.getMetaLink(this.getLang(), this.getSlug());
27
- }
28
-
29
- getLang(): string {
30
- return this.entry.id.split('/')[0];
31
- }
32
-
33
- /**
34
- * 获取元数据页面的 slug
35
- * 例如:
36
- * ID: zh-cn/about 的 slug 为 about
37
- * ID: en/privacy 的 slug 为 privacy
38
- */
39
- override getSlug(): string {
40
- // 从 ID 中获取 slug,即删除以/分割后的第一个元素
41
- return this.getId().split('/').slice(1).join('/');
42
- }
43
-
44
- /**
45
- * 获取兄弟文档
46
- * 例如:对于 'zh-cn/about',会返回 'zh-cn' 下的其他文档
47
- */
48
- async getSiblingDocs(): Promise<MetaDoc[]> {
49
- return await metaDB.getSiblings(this.entry.id);
50
- }
51
-
52
- /**
53
- * 获取兄弟文档的侧边栏项目
54
- */
55
- async getSiblingSidebarItems(): Promise<SidebarItemEntity[]> {
56
- const siblings = await this.getSiblingDocs();
57
- const siblingItems = await Promise.all(
58
- siblings.map((sibling) => {
59
- return new SidebarItemEntity({
60
- text: sibling.getTitle(),
61
- link: sibling.getLink(),
62
- });
63
- })
64
- );
65
- return siblingItems;
66
- }
67
-
68
- /**
69
- * 重写侧边栏项目方法
70
- * 对于元数据页面,我们不显示子项目
71
- */
72
- override async toSidebarItem(): Promise<SidebarItemEntity> {
73
- return new SidebarItemEntity({
74
- text: this.getTitle(),
75
- link: this.getLink(),
76
- });
77
- }
78
-
79
- /**
80
- * 重写顶级侧边栏项目方法
81
- * 对于元数据页面,我们显示所有兄弟页面作为侧边栏项目
82
- */
83
- async getTopSidebarItem(): Promise<SidebarItemEntity> {
84
- return new SidebarItemEntity({
85
- text: '了解我们',
86
- items: await this.getSiblingSidebarItems(),
87
- link: '',
88
- });
89
- }
90
- }