@coffic/cosy-ui 0.8.11 → 0.8.13

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 (82) hide show
  1. package/dist/app.css +1 -1
  2. package/dist/index-astro.ts +18 -10
  3. package/dist/{src-astro → src}/utils/language.ts +1 -1
  4. package/dist/src/utils/link.ts +250 -0
  5. package/dist/{src-astro → src}/utils/path.ts +1 -1
  6. package/dist/src-astro/article/index.ts +1 -1
  7. package/dist/src-astro/assets/iconData.ts +5 -0
  8. package/dist/src-astro/banner/index.ts +1 -1
  9. package/dist/src-astro/code-container/CodeContainer.astro +6 -91
  10. package/dist/src-astro/confirm-dialog/ConfirmDialog.astro +119 -0
  11. package/dist/src-astro/confirm-dialog/index.ts +2 -0
  12. package/dist/src-astro/confirm-dialog/types.ts +47 -0
  13. package/dist/src-astro/cosy.ts +1 -1
  14. package/dist/src-astro/database/index.ts +3 -0
  15. package/dist/src-astro/entities/BlogDoc.ts +1 -1
  16. package/dist/src-astro/entities/CourseDoc.ts +1 -1
  17. package/dist/src-astro/entities/ExperimentDoc.ts +1 -1
  18. package/dist/src-astro/entities/LessonDoc.ts +1 -1
  19. package/dist/src-astro/entities/MetaDoc.ts +1 -1
  20. package/dist/src-astro/entities/Tag.ts +1 -1
  21. package/dist/src-astro/errors/403.astro +1 -1
  22. package/dist/src-astro/errors/404.astro +1 -1
  23. package/dist/src-astro/errors/500.astro +1 -1
  24. package/dist/src-astro/errors/503.astro +1 -1
  25. package/dist/src-astro/flex/index.ts +1 -1
  26. package/dist/src-astro/footer/Footer.astro +1 -1
  27. package/dist/src-astro/grid/index.ts +1 -1
  28. package/dist/src-astro/heading/index.ts +1 -1
  29. package/dist/src-astro/icons/LogOut.astro +28 -0
  30. package/dist/src-astro/icons/index.ts +1 -0
  31. package/dist/src-astro/image/index.ts +1 -1
  32. package/dist/src-astro/language-switcher/index.ts +1 -1
  33. package/dist/src-astro/layout-basic/index.ts +1 -1
  34. package/dist/src-astro/layout-dashboard/DashboardLayout.astro +156 -23
  35. package/dist/src-astro/layout-dashboard/DashboardSidebar.astro +76 -63
  36. package/dist/src-astro/layout-dashboard/DashboardTopNavbar.astro +47 -15
  37. package/dist/src-astro/layout-dashboard/tools.ts +158 -0
  38. package/dist/src-astro/layout-dashboard/types.ts +37 -184
  39. package/dist/src-astro/link/index.ts +1 -1
  40. package/dist/src-astro/login/Login.astro +251 -0
  41. package/dist/src-astro/login/index.ts +2 -0
  42. package/dist/src-astro/logout/Logout.astro +117 -0
  43. package/dist/src-astro/logout/index.ts +2 -0
  44. package/dist/src-astro/module/index.ts +1 -1
  45. package/dist/src-astro/nav-item/NavItems.astro +1 -1
  46. package/dist/src-astro/nav-item/index.ts +1 -1
  47. package/dist/src-astro/nav-section/index.ts +1 -1
  48. package/dist/src-astro/register/Register.astro +289 -0
  49. package/dist/src-astro/register/index.ts +2 -0
  50. package/dist/src-astro/sidebar/Sidebar.astro +1 -1
  51. package/dist/src-astro/sidebar/index.ts +1 -1
  52. package/dist/src-astro/sidebar-nav/SidebarNav.astro +1 -1
  53. package/dist/src-astro/sidebar-nav/index.ts +1 -1
  54. package/dist/src-astro/speak/index.ts +1 -1
  55. package/dist/src-astro/stack/index.ts +1 -1
  56. package/dist/src-astro/team-member/TeamMemberBasic.astro +1 -1
  57. package/dist/src-astro/team-member/TeamMemberCustomStyle.astro +1 -1
  58. package/dist/src-astro/team-member/TeamMemberGroup.astro +1 -1
  59. package/dist/src-astro/team-member/TeamMemberWithSocial.astro +1 -1
  60. package/dist/src-astro/team-member/index.ts +1 -1
  61. package/dist/src-astro/text/index.ts +1 -1
  62. package/dist/src-astro/theme-switcher/ThemeSwitcher.astro +1 -1
  63. package/dist/src-astro/theme-switcher/index.ts +1 -1
  64. package/dist/src-astro/toast/Toast.astro +114 -0
  65. package/dist/src-astro/toast/ToastContainer.astro +249 -0
  66. package/dist/src-astro/toast/index.ts +4 -0
  67. package/dist/src-astro/toast/types.ts +78 -0
  68. package/dist/src-astro/toc/TableOfContents.astro +2 -2
  69. package/dist/src-astro/toc/index.ts +1 -1
  70. package/dist/src-astro/types/nav.ts +26 -1
  71. package/dist/vue/utils/link.ts +238 -238
  72. package/package.json +1 -1
  73. package/dist/src-astro/utils/link.ts +0 -250
  74. /package/dist/{src-astro → src}/utils/component.ts +0 -0
  75. /package/dist/{src-astro → src}/utils/i18n.ts +0 -0
  76. /package/dist/{src-astro → src}/utils/image.ts +0 -0
  77. /package/dist/{src-astro → src}/utils/lang_entry.ts +0 -0
  78. /package/dist/{src-astro → src}/utils/lang_package.ts +0 -0
  79. /package/dist/{src-astro → src}/utils/logger.ts +0 -0
  80. /package/dist/{src-astro → src}/utils/social.ts +0 -0
  81. /package/dist/{src-astro → src}/utils/theme.ts +0 -0
  82. /package/dist/{src-astro → src}/utils/url.ts +0 -0
@@ -1,250 +0,0 @@
1
- import { cosyLogger } from '../cosy';
2
-
3
- export class LinkUtil {
4
- // 从 astro.config.ts 中获取基础路径
5
- static getBaseUrl = (): string => {
6
- return import.meta.env.BASE_URL;
7
- };
8
-
9
- // 生成带基础路径的完整 URL
10
- static createUrl = (path: string): string => {
11
- const baseUrl = LinkUtil.getBaseUrl();
12
- // 如果路径以 '/' 开头,去除开头的 '/'
13
- if (path.startsWith('/')) {
14
- path = path.substring(1);
15
- }
16
-
17
- return `${baseUrl}${path}`;
18
- };
19
-
20
- /**
21
- * 规范化语言代码
22
- * @param lang - 语言代码
23
- * @returns 规范化后的语言代码
24
- */
25
- static normalizeLanguage(lang: string): string {
26
- const normalizedLang = lang.toLowerCase().replace('zh-CN', 'zh-cn');
27
- if (normalizedLang.length == 0) {
28
- console.error('lang is empty');
29
- return 'en';
30
- }
31
- return normalizedLang;
32
- }
33
-
34
- static getHomeLink(lang: string): string {
35
- return `${this.getBaseUrl}/${lang}`;
36
- }
37
-
38
- static getLessonsLink(lang: string): string {
39
- return `/${lang}/lessons`;
40
- }
41
-
42
- static getExperimentsLink(lang: string): string {
43
- return `/${lang}/experiments`;
44
- }
45
-
46
- static getExperimentLink(lang: string, experimentId: string): string {
47
- if (experimentId.endsWith(lang)) {
48
- return `/${lang}/experiments/${experimentId.replace(`${lang}`, '')}`;
49
- } else {
50
- const idWithoutLang = experimentId.replace(`${lang}/`, '');
51
- return `/${lang}/experiments/${idWithoutLang}`;
52
- }
53
- }
54
-
55
- static getCoursesLink(lang: string): string {
56
- return `/${lang}/courses`;
57
- }
58
-
59
- static getBlogsLink(lang: string): string {
60
- return `/${lang}/blogs`;
61
- }
62
-
63
- static getLessonLink(lang: string, lessonId: string): string {
64
- if (lessonId.endsWith(lang)) {
65
- return `/${lang}/lessons/${lessonId.replace(`${lang}`, '')}`;
66
- } else {
67
- const idWithoutLang = lessonId.replace(`${lang}/`, '');
68
- return `/${lang}/lessons/${idWithoutLang}`;
69
- }
70
- }
71
-
72
- static getTagLink(lang: string, tagName: string): string {
73
- return `/${lang}/blogs/tag/${tagName}`;
74
- }
75
-
76
- static getBlogLink(blogId: string, lang: string): string {
77
- const debug = false;
78
- const blogIdWithoutLang = blogId.replace(`${lang}/`, '');
79
-
80
- if (debug) {
81
- cosyLogger.info(`获取博客文档链接,博客文档ID: ${blogId}`);
82
- }
83
-
84
- return `/${lang}/blogs/${blogIdWithoutLang}`;
85
- }
86
-
87
- static getCourseLink(courseId: string): string {
88
- const debug = false;
89
- const lang = courseId.split('/')[0];
90
- const courseIdWithoutLang = courseId.replace(`${lang}/`, '');
91
-
92
- if (debug) {
93
- cosyLogger.info(`获取课程文档链接,课程文档ID: ${courseId}`);
94
- }
95
-
96
- return LinkUtil.createUrl(`/${lang}/courses/${courseIdWithoutLang}`);
97
- }
98
-
99
- static getMetaLink(lang: string, slug: string): string {
100
- return `/${this.normalizeLanguage(lang)}/meta/${slug}`;
101
- }
102
-
103
- static getSigninLink(lang: string): string {
104
- return `/${this.normalizeLanguage(lang)}/signin`;
105
- }
106
-
107
- static getAuthCallbackCookieLink(lang: string): string {
108
- return `/${this.normalizeLanguage(lang)}/auth/callback_cookie`;
109
- }
110
-
111
- static getAuthCallbackTokenLink(lang: string): string {
112
- return `/${this.normalizeLanguage(lang)}/auth/callback_token`;
113
- }
114
-
115
- static getAuthAccountLink(lang: string): string {
116
- return `/${this.normalizeLanguage(lang)}/auth/account`;
117
- }
118
-
119
- static getDashboardUrl(lang: string): string {
120
- return `/${this.normalizeLanguage(lang)}/auth/dashboard`;
121
- }
122
-
123
- static getAuthErrorLink(lang: string): string {
124
- return `/${this.normalizeLanguage(lang)}/auth/error`;
125
- }
126
-
127
- static getPrivacyLink(lang: string): string {
128
- return this.getMetaLink(lang, 'privacy');
129
- }
130
-
131
- static getTermsLink(lang: string): string {
132
- return this.getMetaLink(lang, 'terms');
133
- }
134
-
135
- static getAboutLink(lang: string): string {
136
- return this.getMetaLink(lang, 'about');
137
- }
138
-
139
- /**
140
- * 根据ID生成链接
141
- *
142
- * 该函数根据文档ID生成对应的链接路径。
143
- *
144
- * @param {string} id - 文档ID, 例如 'courses/zh-cn/supervisor/index.md'
145
- * @returns {string} 返回生成的链接路径
146
- * @example
147
- * // 例如:
148
- * // id=courses/zh-cn/supervisor/index.md,则返回/zh-cn/courses/supervisor
149
- * // id=courses/en/supervisor/index.md,则返回/en/courses/supervisor
150
- */
151
- static getLink(id: string): string {
152
- const category = id.split('/')[0];
153
- const lang = id.split('/')[1];
154
- const path = id.split('/').slice(2).join('/');
155
-
156
- const link = `/${lang}/${category}/${path}`;
157
- return link.replace(/\/+/g, '/');
158
- }
159
-
160
- /**
161
- * 根据分类生成顶级链接
162
- *
163
- * @param {string} category - 分类名称
164
- * @param {string} lang - 语言代码,例如 'zh-cn', 'en'
165
- * @returns {string} 返回生成的顶级链接路径
166
- * @example
167
- * // 例如:
168
- * // category=courses, lang=zh-cn,则返回/zh-cn/courses
169
- * // category=courses, lang=en,则返回/en/courses
170
- */
171
- static getTopLevelLink(category: string, lang: string): string {
172
- return `/${lang}/${category}`;
173
- }
174
-
175
- /**
176
- * 处理首页重定向
177
- * @param locale - 语言代码
178
- * @returns 规范化的语言代码
179
- */
180
- static homeRedirect(locale: string): string {
181
- return locale || 'en';
182
- }
183
-
184
- /**
185
- * 检查是否为首页路径
186
- * @param pathname - 路径
187
- * @returns 是否为首页
188
- */
189
- static isHomePath(pathname: string): boolean {
190
- return pathname === '/' || pathname === '';
191
- }
192
-
193
- static isHomeLink(path: string, lang: string): boolean {
194
- return path === `/${lang}` || path === `/${lang}/`;
195
- }
196
-
197
- static isLessonsLink(path: string, lang: string): boolean {
198
- return (
199
- path === `/${lang}/lessons` ||
200
- path === `/${lang}/lessons/` ||
201
- path.startsWith(`/${lang}/lessons/`)
202
- );
203
- }
204
-
205
- static isExperimentsLink(path: string, lang: string): boolean {
206
- return (
207
- path === `/${lang}/experiments` ||
208
- path === `/${lang}/experiments/` ||
209
- path.startsWith(`/${lang}/experiments/`)
210
- );
211
- }
212
-
213
- static isCoursesLink(path: string, lang: string): boolean {
214
- return (
215
- path === `/${lang}/courses` ||
216
- path === `/${lang}/courses/` ||
217
- path.startsWith(`/${lang}/courses/`)
218
- );
219
- }
220
-
221
- static isBlogsLink(path: string, lang: string): boolean {
222
- return (
223
- path === `/${lang}/blogs` ||
224
- path === `/${lang}/blogs/` ||
225
- path.startsWith(`/${lang}/blogs/`)
226
- );
227
- }
228
-
229
- static getOAuthSuccessLink(currentOrigin: string): string {
230
- return `${currentOrigin}/api/callback_success`;
231
- }
232
-
233
- static getOAuthErrorLink(currentOrigin: string): string {
234
- return `${currentOrigin}/api/callback_error`;
235
- }
236
-
237
- static getLoginLink(currentOrigin: string): string {
238
- return `${currentOrigin}/api/login`;
239
- }
240
-
241
- static getActiveLink(currentLink: string, links: string[]): string {
242
- let activeLink = '';
243
- for (const link of links) {
244
- if (currentLink.startsWith(link) && link.length > activeLink.length) {
245
- activeLink = link;
246
- }
247
- }
248
- return activeLink;
249
- }
250
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes