@tnotesjs/core 0.1.20 → 0.1.22

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 (49) hide show
  1. package/dist/{chunk-4MO7F7Q4.js → chunk-BSTQOJVE.js} +1 -1
  2. package/dist/{chunk-SQVHJR2Z.js → chunk-O4DCXHOV.js} +0 -3
  3. package/dist/cli/index.js +2 -2
  4. package/dist/index.js +1 -1
  5. package/dist/vitepress/config/index.js +2 -2
  6. package/package.json +3 -4
  7. package/types/config.ts +0 -1
  8. package/vitepress/components/CodeBlockFullscreen/CodeBlockFullscreen.vue +2 -2
  9. package/vitepress/components/CodeBlockFullscreen/index.ts +1 -5
  10. package/vitepress/components/CodeBlockFullscreen/styles.css +4 -4
  11. package/vitepress/components/Discussions/Discussions.vue +37 -4
  12. package/vitepress/components/EnWordList/EnWordList.vue +135 -15
  13. package/vitepress/components/EnWordList/RightClickMenu.vue +33 -10
  14. package/vitepress/components/Footprints/Footprints.vue +105 -10
  15. package/vitepress/components/Layout/AboutModal.vue +242 -16
  16. package/vitepress/components/Layout/AboutPanel.vue +258 -44
  17. package/vitepress/components/Layout/ContentCollapse.vue +1 -14
  18. package/vitepress/components/Layout/DocBeforeControls.vue +221 -19
  19. package/vitepress/components/Layout/ImagePreview.vue +212 -9
  20. package/vitepress/components/Layout/Layout.vue +133 -10
  21. package/vitepress/components/Layout/NavBarSettingsTrigger.vue +0 -2
  22. package/vitepress/components/Layout/SidebarNavBefore.vue +0 -1
  23. package/vitepress/components/Layout/SidebarResizeHandle.vue +2 -10
  24. package/vitepress/components/Layout/ToggleFullContent.vue +14 -2
  25. package/vitepress/components/Layout/ToggleSidebar.vue +14 -3
  26. package/vitepress/components/LoadingPage/LoadingPage.vue +1 -6
  27. package/vitepress/components/MarkMap/MarkMap.vue +162 -3
  28. package/vitepress/components/Mermaid/Mermaid.vue +300 -22
  29. package/vitepress/components/NotesTable/NotesTable.vue +86 -10
  30. package/vitepress/components/Settings/Settings.vue +434 -57
  31. package/vitepress/components/Settings/SettingsDialog.vue +1 -11
  32. package/vitepress/components/SidebarCard/MindMapView.vue +28 -28
  33. package/vitepress/components/SidebarCard/SidebarCard.vue +3 -4
  34. package/vitepress/components/Tooltip/Tooltip.vue +28 -28
  35. package/vitepress/configs/markdown.config.ts +3 -2
  36. package/vitepress/theme/styles/base.scss +2 -2
  37. package/vitepress/components/Discussions/Discussions.module.scss +0 -32
  38. package/vitepress/components/EnWordList/EnWordList.module.scss +0 -124
  39. package/vitepress/components/EnWordList/RightClickMenu.module.scss +0 -22
  40. package/vitepress/components/Footprints/Footprints.module.scss +0 -93
  41. package/vitepress/components/Layout/AboutModal.module.scss +0 -233
  42. package/vitepress/components/Layout/ImagePreview.module.scss +0 -201
  43. package/vitepress/components/Layout/Layout.module.scss +0 -661
  44. package/vitepress/components/Layout/ToggleFullContent.module.scss +0 -11
  45. package/vitepress/components/Layout/ToggleSidebar.module.scss +0 -11
  46. package/vitepress/components/MarkMap/MarkMap.module.scss +0 -159
  47. package/vitepress/components/Mermaid/Mermaid.module.scss +0 -275
  48. package/vitepress/components/NotesTable/NotesTable.module.scss +0 -77
  49. package/vitepress/components/Settings/Settings.module.scss +0 -375
@@ -1,25 +1,18 @@
1
1
  <template>
2
2
  <!-- 使用 teleport 将 modal 放到 body 之下(避免父容器样式影响) -->
3
3
  <teleport to="body">
4
- <div v-if="modelValue" :class="$style.modalBackdrop" @click.self="close">
5
- <div
6
- :class="$style.modal"
7
- role="dialog"
8
- :aria-labelledby="titleId"
9
- aria-modal="true"
10
- ref="modalRef"
11
- >
12
- <header :class="$style.modalHeader">
13
- <h3 :id="titleId" :class="$style.modalTitle">
4
+ <div v-if="modelValue" class="modalBackdrop" @click.self="close">
5
+ <div class="modal" ref="modalRef">
6
+ <header class="modalHeader">
7
+ <h3 class="modalTitle">
14
8
  <!-- 标题通过 slot #title 提供,未提供则使用 prop title -->
15
9
  <slot name="title">
16
10
  {{ title }}
17
11
  </slot>
18
12
  </h3>
19
13
  <button
20
- :class="$style.closeBtn"
14
+ class="closeBtn"
21
15
  @click="close"
22
- aria-label="Close"
23
16
  title="Close"
24
17
  type="button"
25
18
  >
@@ -27,7 +20,7 @@
27
20
  </button>
28
21
  </header>
29
22
 
30
- <section :class="$style.modalBody">
23
+ <section class="modalBody">
31
24
  <!-- 默认插槽用于传入内容 -->
32
25
  <slot>
33
26
  <!-- fallback 内容(如果父组件没有传入插槽) -->
@@ -35,7 +28,7 @@
35
28
  </slot>
36
29
  </section>
37
30
 
38
- <footer :class="$style.modalFooter" v-if="$slots.footer">
31
+ <footer class="modalFooter" v-if="$slots.footer">
39
32
  <slot name="footer"></slot>
40
33
  </footer>
41
34
  </div>
@@ -54,7 +47,6 @@ const props = defineProps({
54
47
  const emit = defineEmits(['update:modelValue', 'close'])
55
48
 
56
49
  const modalRef = ref(null)
57
- const titleId = `tm-title-${Math.random().toString(36).slice(2, 8)}`
58
50
 
59
51
  // close modal (emit update and close)
60
52
  function close() {
@@ -102,4 +94,238 @@ onUnmounted(() => {
102
94
  })
103
95
  </script>
104
96
 
105
- <style module src="./AboutModal.module.scss"></style>
97
+ <style scoped lang="scss">
98
+ // AboutModal 组件样式
99
+
100
+ // 模态框背景遮罩
101
+ .modalBackdrop {
102
+ position: fixed;
103
+ inset: 0;
104
+ background: rgba(0, 0, 0, 0.75);
105
+ backdrop-filter: blur(4px);
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ z-index: 1200;
110
+ padding: 1rem;
111
+ animation: fadeIn 0.2s ease-out;
112
+ }
113
+
114
+ @keyframes fadeIn {
115
+ from {
116
+ opacity: 0;
117
+ }
118
+ to {
119
+ opacity: 1;
120
+ }
121
+ }
122
+
123
+ @keyframes slideUp {
124
+ from {
125
+ opacity: 0;
126
+ transform: translateY(20px);
127
+ }
128
+ to {
129
+ opacity: 1;
130
+ transform: translateY(0);
131
+ }
132
+ }
133
+
134
+ // 模态框主体
135
+ .modal {
136
+ background: var(--vp-c-bg);
137
+ color: var(--vp-c-text-1);
138
+ border-radius: 16px;
139
+ max-width: 580px;
140
+ width: 100%;
141
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4),
142
+ 0 0 0 1px rgba(255, 255, 255, 0.05);
143
+ overflow: hidden;
144
+ outline: none;
145
+ animation: slideUp 0.3s ease-out;
146
+
147
+ // 暗色模式优化
148
+ :global(.dark) & {
149
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6),
150
+ 0 0 0 1px rgba(255, 255, 255, 0.08);
151
+ }
152
+ }
153
+
154
+ // 模态框头部
155
+ .modalHeader {
156
+ display: flex;
157
+ align-items: center;
158
+ justify-content: space-between;
159
+ padding: 1.25rem 1.5rem;
160
+ border-bottom: 1px solid var(--vp-c-divider);
161
+ background: linear-gradient(
162
+ 180deg,
163
+ var(--vp-c-bg-soft) 0%,
164
+ var(--vp-c-bg) 100%
165
+ );
166
+ position: relative;
167
+
168
+ // 添加顶部装饰条
169
+ &::before {
170
+ content: '';
171
+ position: absolute;
172
+ top: 0;
173
+ left: 0;
174
+ right: 0;
175
+ height: 3px;
176
+ background: linear-gradient(
177
+ 90deg,
178
+ var(--vp-c-brand-1),
179
+ var(--vp-c-brand-2)
180
+ );
181
+ }
182
+ }
183
+
184
+ // 模态框标题
185
+ .modalTitle {
186
+ margin: 0;
187
+ font-size: 1.125rem;
188
+ font-weight: 600;
189
+ color: var(--vp-c-text-1);
190
+ letter-spacing: -0.01em;
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 0.5rem;
194
+
195
+ // 添加图标装饰(可选,如果标题前有 emoji)
196
+ &::before {
197
+ content: '📝';
198
+ font-size: 1.25rem;
199
+ }
200
+ }
201
+
202
+ // 关闭按钮
203
+ .closeBtn {
204
+ background: transparent;
205
+ border: none;
206
+ cursor: pointer;
207
+ font-size: 1.25rem;
208
+ line-height: 1;
209
+ padding: 0.5rem;
210
+ border-radius: 8px;
211
+ color: var(--vp-c-text-2);
212
+ transition: all 0.2s ease;
213
+ display: flex;
214
+ align-items: center;
215
+ justify-content: center;
216
+ width: 32px;
217
+ height: 32px;
218
+
219
+ &:hover {
220
+ background: var(--vp-c-bg-soft);
221
+ color: var(--vp-c-text-1);
222
+ transform: rotate(90deg);
223
+ }
224
+
225
+ &:active {
226
+ transform: rotate(90deg) scale(0.95);
227
+ }
228
+ }
229
+
230
+ // 模态框主体内容
231
+ .modalBody {
232
+ padding: 1.5rem;
233
+ font-size: 0.95rem;
234
+ color: var(--vp-c-text-2);
235
+ line-height: 1.7;
236
+ max-height: 60vh;
237
+ overflow-y: auto;
238
+
239
+ // 美化滚动条
240
+ &::-webkit-scrollbar {
241
+ width: 6px;
242
+ }
243
+
244
+ &::-webkit-scrollbar-track {
245
+ background: transparent;
246
+ }
247
+
248
+ &::-webkit-scrollbar-thumb {
249
+ background: var(--vp-c-divider);
250
+ border-radius: 3px;
251
+
252
+ &:hover {
253
+ background: var(--vp-c-text-3);
254
+ }
255
+ }
256
+
257
+ // 优化内容样式
258
+ p {
259
+ margin: 0.75rem 0;
260
+
261
+ &:first-child {
262
+ margin-top: 0;
263
+ }
264
+
265
+ &:last-child {
266
+ margin-bottom: 0;
267
+ }
268
+ }
269
+
270
+ // 如果内容中有图标,增加间距
271
+ :deep(span) {
272
+ margin-right: 0.25rem;
273
+ }
274
+
275
+ // 强调文本
276
+ strong {
277
+ color: var(--vp-c-text-1);
278
+ font-weight: 600;
279
+ }
280
+
281
+ // 链接样式
282
+ a {
283
+ color: var(--vp-c-brand-1);
284
+ text-decoration: none;
285
+ transition: color 0.2s;
286
+
287
+ &:hover {
288
+ color: var(--vp-c-brand-2);
289
+ text-decoration: underline;
290
+ }
291
+ }
292
+ }
293
+
294
+ // 模态框底部(可选)
295
+ .modalFooter {
296
+ padding: 1rem 1.5rem;
297
+ border-top: 1px solid var(--vp-c-divider);
298
+ background: var(--vp-c-bg-soft);
299
+ text-align: right;
300
+ display: flex;
301
+ gap: 0.75rem;
302
+ justify-content: flex-end;
303
+ align-items: center;
304
+ }
305
+
306
+ // 响应式优化
307
+ @media (max-width: 640px) {
308
+ .modal {
309
+ max-width: 100%;
310
+ margin: 1rem;
311
+ border-radius: 12px;
312
+ }
313
+
314
+ .modalHeader {
315
+ padding: 1rem 1.25rem;
316
+ }
317
+
318
+ .modalTitle {
319
+ font-size: 1rem;
320
+ }
321
+
322
+ .modalBody {
323
+ padding: 1.25rem;
324
+ max-height: 50vh;
325
+ }
326
+
327
+ .modalFooter {
328
+ padding: 0.875rem 1.25rem;
329
+ }
330
+ }
331
+ </style>