@tnotesjs/core 0.1.19 → 0.1.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.
Files changed (114) hide show
  1. package/README.md +87 -87
  2. package/package.json +1 -1
  3. package/types/config.ts +61 -61
  4. package/types/index.ts +11 -11
  5. package/types/note.ts +33 -33
  6. package/vitepress/assets/icons/icon__check.svg +3 -3
  7. package/vitepress/assets/icons/icon__clipboard.svg +7 -7
  8. package/vitepress/assets/icons/icon__close.svg +1 -1
  9. package/vitepress/assets/icons/icon__collapse.svg +1 -1
  10. package/vitepress/assets/icons/icon__confirm.svg +1 -1
  11. package/vitepress/assets/icons/icon__copy.svg +4 -4
  12. package/vitepress/assets/icons/icon__focus.svg +1 -1
  13. package/vitepress/assets/icons/icon__fold.svg +3 -3
  14. package/vitepress/assets/icons/icon__folder.svg +1 -1
  15. package/vitepress/assets/icons/icon__fullscreen.svg +1 -1
  16. package/vitepress/assets/icons/icon__fullscreen_exit.svg +1 -1
  17. package/vitepress/assets/icons/icon__github.svg +3 -3
  18. package/vitepress/assets/icons/icon__mindmap.svg +1 -1
  19. package/vitepress/assets/icons/icon__next.svg +1 -1
  20. package/vitepress/assets/icons/icon__number_gray.svg +1 -1
  21. package/vitepress/assets/icons/icon__number_purple.svg +1 -1
  22. package/vitepress/assets/icons/icon__prev.svg +1 -1
  23. package/vitepress/assets/icons/icon__restore.svg +1 -1
  24. package/vitepress/assets/icons/icon__rotate.svg +4 -4
  25. package/vitepress/assets/icons/icon__search.svg +1 -1
  26. package/vitepress/assets/icons/icon__sidebar_collapsed.svg +1 -1
  27. package/vitepress/assets/icons/icon__sidebar_opened.svg +1 -1
  28. package/vitepress/assets/icons/icon__totop.svg +5 -5
  29. package/vitepress/assets/icons/icon__vscode.svg +5 -5
  30. package/vitepress/assets/icons/icon__zoom_fit.svg +1 -1
  31. package/vitepress/assets/icons/icon__zoom_in.svg +1 -1
  32. package/vitepress/assets/icons/icon__zoom_out.svg +1 -1
  33. package/vitepress/assets/icons/icon__zoom_reset.svg +1 -1
  34. package/vitepress/assets/icons/index.ts +39 -39
  35. package/vitepress/components/BilibiliOutsidePlayer/BilibiliOutsidePlayer.vue +20 -20
  36. package/vitepress/components/CodeBlockFullscreen/CodeBlockFullscreen.vue +369 -369
  37. package/vitepress/components/CodeBlockFullscreen/index.ts +213 -213
  38. package/vitepress/components/CodeBlockFullscreen/styles.css +126 -126
  39. package/vitepress/components/Discussions/Discussions.module.scss +32 -32
  40. package/vitepress/components/Discussions/Discussions.vue +211 -211
  41. package/vitepress/components/EnWordList/EnWordList.module.scss +124 -124
  42. package/vitepress/components/EnWordList/EnWordList.vue +543 -543
  43. package/vitepress/components/EnWordList/RightClickMenu.module.scss +22 -22
  44. package/vitepress/components/EnWordList/RightClickMenu.vue +66 -66
  45. package/vitepress/components/Footprints/Footprints.module.scss +93 -93
  46. package/vitepress/components/Footprints/Footprints.vue +377 -377
  47. package/vitepress/components/Layout/AboutModal.module.scss +233 -233
  48. package/vitepress/components/Layout/AboutModal.vue +105 -105
  49. package/vitepress/components/Layout/AboutPanel.vue +270 -270
  50. package/vitepress/components/Layout/ContentCollapse.vue +603 -603
  51. package/vitepress/components/Layout/CustomSidebar.vue +817 -817
  52. package/vitepress/components/Layout/DocBeforeControls.vue +149 -149
  53. package/vitepress/components/Layout/DocFooter.vue +233 -233
  54. package/vitepress/components/Layout/ImagePreview.module.scss +201 -201
  55. package/vitepress/components/Layout/ImagePreview.vue +281 -281
  56. package/vitepress/components/Layout/Layout.module.scss +661 -661
  57. package/vitepress/components/Layout/Layout.vue +621 -621
  58. package/vitepress/components/Layout/NoteStatus.vue +140 -140
  59. package/vitepress/components/Layout/SidebarItems.vue +1083 -1083
  60. package/vitepress/components/Layout/SidebarNavBefore.vue +171 -171
  61. package/vitepress/components/Layout/SidebarResizeHandle.vue +319 -319
  62. package/vitepress/components/Layout/Swiper.vue +167 -167
  63. package/vitepress/components/Layout/ToggleFullContent.module.scss +11 -11
  64. package/vitepress/components/Layout/ToggleFullContent.vue +35 -35
  65. package/vitepress/components/Layout/ToggleSidebar.module.scss +11 -11
  66. package/vitepress/components/Layout/ToggleSidebar.vue +26 -26
  67. package/vitepress/components/Layout/composables/useCollapseControl.ts +88 -88
  68. package/vitepress/components/Layout/composables/useNoteConfig.ts +119 -119
  69. package/vitepress/components/Layout/composables/useNoteSave.ts +178 -178
  70. package/vitepress/components/Layout/composables/useNoteValidation.ts +85 -85
  71. package/vitepress/components/Layout/composables/useRedirect.ts +113 -113
  72. package/vitepress/components/Layout/composables/useSidebarLayout.ts +122 -122
  73. package/vitepress/components/Layout/composables/useVSCodeIntegration.ts +85 -85
  74. package/vitepress/components/Layout/homeReadme.data.ts +124 -124
  75. package/vitepress/components/MarkMap/MarkMap.module.scss +159 -159
  76. package/vitepress/components/MarkMap/MarkMap.vue +405 -405
  77. package/vitepress/components/Mermaid/Mermaid.module.scss +275 -275
  78. package/vitepress/components/Mermaid/Mermaid.vue +365 -365
  79. package/vitepress/components/NotesTable/NotesTable.module.scss +77 -77
  80. package/vitepress/components/NotesTable/NotesTable.vue +98 -98
  81. package/vitepress/components/NotesTable/README.md +67 -67
  82. package/vitepress/components/Settings/Settings.module.scss +375 -375
  83. package/vitepress/components/Settings/Settings.vue +334 -334
  84. package/vitepress/components/SidebarCard/MindMapView.vue +484 -484
  85. package/vitepress/components/SidebarCard/NotesTrendChart.vue +108 -108
  86. package/vitepress/components/SidebarCard/SidebarCard.vue +946 -946
  87. package/vitepress/components/Tooltip/Tooltip.vue +70 -70
  88. package/vitepress/components/constants.ts +109 -109
  89. package/vitepress/components/notesConfig.data.ts +73 -73
  90. package/vitepress/components/sidebar.data.ts +59 -59
  91. package/vitepress/components/tnotes-config.data.ts +21 -21
  92. package/vitepress/components/utils.ts +26 -26
  93. package/vitepress/config/index.ts +169 -169
  94. package/vitepress/configs/constants.ts +26 -26
  95. package/vitepress/configs/head.config.ts +25 -25
  96. package/vitepress/configs/index.ts +9 -9
  97. package/vitepress/configs/markdown-it.d.ts +23 -23
  98. package/vitepress/configs/markdown.config.ts +366 -366
  99. package/vitepress/configs/theme.config.ts +108 -108
  100. package/vitepress/plugins/buildProgressPlugin.ts +434 -434
  101. package/vitepress/plugins/getNoteByConfigIdPlugin.ts +107 -107
  102. package/vitepress/plugins/renameNotePlugin.ts +68 -68
  103. package/vitepress/plugins/sidebarStructurePlugin.ts +260 -260
  104. package/vitepress/plugins/updateConfigPlugin.ts +63 -63
  105. package/vitepress/theme/index.ts +137 -137
  106. package/vitepress/theme/styles/base.scss +64 -59
  107. package/vitepress/theme/styles/components/404.scss +31 -31
  108. package/vitepress/theme/styles/components/collapse.scss +172 -172
  109. package/vitepress/theme/styles/components/markmap.scss +101 -101
  110. package/vitepress/theme/styles/components/swiper.scss +255 -255
  111. package/vitepress/theme/styles/index.scss +25 -25
  112. package/vitepress/theme/styles/layout.scss +78 -78
  113. package/vitepress/theme/styles/utilities.scss +39 -39
  114. package/vitepress/theme/styles/vitepress-override.scss +25 -25
@@ -1,375 +1,375 @@
1
- .settingsWrapper {
2
- max-width: 680px;
3
- margin: 0 auto;
4
- padding: 12px 4px 0;
5
- }
6
-
7
- .settingsSection {
8
- border-top: 1px solid var(--vp-c-divider);
9
- }
10
-
11
- .settingItem {
12
- display: grid;
13
- grid-template-columns: minmax(150px, 0.42fr) minmax(220px, 1fr);
14
- gap: 18px;
15
- padding: 18px 0;
16
- border-bottom: 1px solid var(--vp-c-divider);
17
- }
18
-
19
- .settingMeta {
20
- min-width: 0;
21
- }
22
-
23
- .labelLine {
24
- display: flex;
25
- align-items: center;
26
- gap: 6px;
27
- }
28
-
29
- .itemName {
30
- color: var(--vp-c-text-1);
31
- font-size: 14px;
32
- font-weight: 600;
33
- line-height: 22px;
34
- }
35
-
36
- .statusText {
37
- display: inline-block;
38
- margin-top: 4px;
39
- color: var(--vp-c-text-3);
40
- font-size: 12px;
41
- line-height: 18px;
42
- }
43
-
44
- .infoWrap {
45
- position: relative;
46
- display: inline-flex;
47
- }
48
-
49
- .infoIcon {
50
- display: inline-flex;
51
- align-items: center;
52
- justify-content: center;
53
- width: 16px;
54
- height: 16px;
55
- color: var(--vp-c-text-3);
56
- border: 1px solid var(--vp-c-divider);
57
- border-radius: 50%;
58
- cursor: help;
59
- font-size: 11px;
60
- line-height: 1;
61
- }
62
-
63
- .tooltip {
64
- position: absolute;
65
- left: 50%;
66
- bottom: calc(100% + 8px);
67
- z-index: 10;
68
- width: 240px;
69
- padding: 8px 10px;
70
- color: var(--vp-c-text-1);
71
- background: var(--vp-c-bg-elv);
72
- border: 1px solid var(--vp-c-divider);
73
- border-radius: 6px;
74
- box-shadow: var(--vp-shadow-2);
75
- font-size: 12px;
76
- line-height: 18px;
77
- opacity: 0;
78
- pointer-events: none;
79
- transform: translate(-50%, 4px);
80
- transition:
81
- opacity 0.15s ease,
82
- transform 0.15s ease;
83
- }
84
-
85
- .infoWrap:hover .tooltip,
86
- .infoWrap:focus-within .tooltip {
87
- opacity: 1;
88
- transform: translate(-50%, 0);
89
- }
90
-
91
- .inputGroup {
92
- position: relative;
93
- }
94
-
95
- .input,
96
- .select {
97
- width: 100%;
98
- height: 34px;
99
- box-sizing: border-box;
100
- color: var(--vp-c-text-1);
101
- background: var(--vp-c-bg);
102
- border: 1px solid var(--vp-c-divider);
103
- border-radius: 6px;
104
- font-size: 13px;
105
- outline: none;
106
- }
107
-
108
- .input {
109
- padding: 0 34px 0 10px;
110
- font-family: var(--vp-font-family-mono);
111
- }
112
-
113
- .select {
114
- padding: 0 10px;
115
- cursor: pointer;
116
- }
117
-
118
- .input::placeholder {
119
- color: var(--vp-c-text-3);
120
- }
121
-
122
- .input:focus,
123
- .select:focus {
124
- border-color: var(--vp-c-brand-1);
125
- }
126
-
127
- .clearBtn {
128
- position: absolute;
129
- top: 50%;
130
- right: 7px;
131
- display: inline-flex;
132
- align-items: center;
133
- justify-content: center;
134
- width: 20px;
135
- height: 20px;
136
- padding: 0;
137
- color: var(--vp-c-text-3);
138
- background: transparent;
139
- border: none;
140
- border-radius: 4px;
141
- cursor: pointer;
142
- font-size: 16px;
143
- transform: translateY(-50%);
144
- }
145
-
146
- .clearBtn:hover {
147
- color: var(--vp-c-danger-1);
148
- background: var(--vp-c-danger-soft);
149
- }
150
-
151
- .fieldStack {
152
- display: flex;
153
- flex-direction: column;
154
- gap: 12px;
155
- }
156
-
157
- .checkRow {
158
- display: inline-flex;
159
- align-items: center;
160
- gap: 8px;
161
- width: max-content;
162
- color: var(--vp-c-text-1);
163
- cursor: pointer;
164
- font-size: 13px;
165
- line-height: 20px;
166
- user-select: none;
167
- }
168
-
169
- .checkbox {
170
- width: 16px;
171
- height: 16px;
172
- margin: 0;
173
- accent-color: var(--vp-c-brand-1);
174
- cursor: pointer;
175
- }
176
-
177
- .controlRow,
178
- .field {
179
- display: flex;
180
- flex-direction: column;
181
- gap: 6px;
182
- }
183
-
184
- .controlLabel {
185
- color: var(--vp-c-text-2);
186
- font-size: 12px;
187
- line-height: 18px;
188
- }
189
-
190
- .segmented {
191
- display: grid;
192
- grid-template-columns: repeat(3, 1fr);
193
- overflow: hidden;
194
- border: 1px solid var(--vp-c-divider);
195
- border-radius: 6px;
196
- }
197
-
198
- .segment {
199
- display: inline-flex;
200
- align-items: center;
201
- justify-content: center;
202
- min-width: 0;
203
- height: 32px;
204
- color: var(--vp-c-text-2);
205
- border-right: 1px solid var(--vp-c-divider);
206
- cursor: pointer;
207
- font-size: 13px;
208
- user-select: none;
209
- }
210
-
211
- .segment:last-child {
212
- border-right: none;
213
- }
214
-
215
- .segment input {
216
- position: absolute;
217
- opacity: 0;
218
- pointer-events: none;
219
- }
220
-
221
- .segment:hover,
222
- .activeSegment {
223
- color: var(--vp-c-brand-1);
224
- background: var(--vp-c-default-soft);
225
- }
226
-
227
- .activeSegment {
228
- font-weight: 600;
229
- }
230
-
231
- .inlineGrid {
232
- display: grid;
233
- grid-template-columns: 1fr 120px;
234
- gap: 12px;
235
- }
236
-
237
- .prefixGrid {
238
- display: grid;
239
- grid-template-columns: repeat(2, minmax(0, 1fr));
240
- gap: 12px;
241
- }
242
-
243
- .prefixInput {
244
- padding-right: 10px;
245
- font-family: var(--vp-font-family-base);
246
- }
247
-
248
- .inputWithUnit {
249
- position: relative;
250
- }
251
-
252
- .inputWithUnit .input {
253
- padding-right: 34px;
254
- }
255
-
256
- .unit {
257
- position: absolute;
258
- top: 50%;
259
- right: 10px;
260
- color: var(--vp-c-text-3);
261
- font-size: 12px;
262
- pointer-events: none;
263
- transform: translateY(-50%);
264
- }
265
-
266
- .actionBar {
267
- display: flex;
268
- justify-content: flex-end;
269
- gap: 8px;
270
- padding-top: 16px;
271
- }
272
-
273
- .saveBtn,
274
- .resetBtn {
275
- display: inline-flex;
276
- align-items: center;
277
- justify-content: center;
278
- min-width: 72px;
279
- height: 34px;
280
- padding: 0 14px;
281
- border-radius: 6px;
282
- cursor: pointer;
283
- font-size: 13px;
284
- font-weight: 500;
285
- }
286
-
287
- .saveBtn {
288
- color: #fff;
289
- background: var(--vp-c-brand-1);
290
- border: 1px solid var(--vp-c-brand-1);
291
- }
292
-
293
- .saveBtn:hover:not(.disabled) {
294
- background: var(--vp-c-brand-2);
295
- }
296
-
297
- .saveBtn.disabled {
298
- opacity: 0.45;
299
- cursor: not-allowed;
300
- }
301
-
302
- .resetBtn {
303
- color: var(--vp-c-text-1);
304
- background: var(--vp-c-bg);
305
- border: 1px solid var(--vp-c-divider);
306
- }
307
-
308
- .resetBtn:hover {
309
- border-color: var(--vp-c-brand-1);
310
- }
311
-
312
- .toast {
313
- position: fixed;
314
- top: 78px;
315
- left: 50%;
316
- z-index: 1000;
317
- padding: 8px 12px;
318
- color: #fff;
319
- background: var(--vp-c-brand-1);
320
- border-radius: 6px;
321
- box-shadow: var(--vp-shadow-2);
322
- font-size: 13px;
323
- transform: translateX(-50%);
324
- }
325
-
326
- :global(.toast-enter-active),
327
- :global(.toast-leave-active) {
328
- transition: all 0.2s ease;
329
- }
330
-
331
- :global(.toast-enter-from),
332
- :global(.toast-leave-to) {
333
- opacity: 0;
334
- transform: translate(-50%, -8px);
335
- }
336
-
337
- @media (max-width: 768px) {
338
- .settingsWrapper {
339
- padding: 0;
340
- }
341
-
342
- .settingItem {
343
- grid-template-columns: 1fr;
344
- gap: 10px;
345
- padding: 16px 0;
346
- }
347
-
348
- .inlineGrid {
349
- grid-template-columns: 1fr;
350
- }
351
-
352
- .prefixGrid {
353
- grid-template-columns: 1fr;
354
- }
355
-
356
- .tooltip {
357
- left: 0;
358
- width: min(260px, calc(100vw - 48px));
359
- transform: translate(0, 4px);
360
- }
361
-
362
- .infoWrap:hover .tooltip,
363
- .infoWrap:focus-within .tooltip {
364
- transform: translate(0, 0);
365
- }
366
-
367
- .actionBar {
368
- flex-direction: column-reverse;
369
- }
370
-
371
- .saveBtn,
372
- .resetBtn {
373
- width: 100%;
374
- }
375
- }
1
+ .settingsWrapper {
2
+ max-width: 680px;
3
+ margin: 0 auto;
4
+ padding: 12px 4px 0;
5
+ }
6
+
7
+ .settingsSection {
8
+ border-top: 1px solid var(--vp-c-divider);
9
+ }
10
+
11
+ .settingItem {
12
+ display: grid;
13
+ grid-template-columns: minmax(150px, 0.42fr) minmax(220px, 1fr);
14
+ gap: 18px;
15
+ padding: 18px 0;
16
+ border-bottom: 1px solid var(--vp-c-divider);
17
+ }
18
+
19
+ .settingMeta {
20
+ min-width: 0;
21
+ }
22
+
23
+ .labelLine {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 6px;
27
+ }
28
+
29
+ .itemName {
30
+ color: var(--vp-c-text-1);
31
+ font-size: 14px;
32
+ font-weight: 600;
33
+ line-height: 22px;
34
+ }
35
+
36
+ .statusText {
37
+ display: inline-block;
38
+ margin-top: 4px;
39
+ color: var(--vp-c-text-3);
40
+ font-size: 12px;
41
+ line-height: 18px;
42
+ }
43
+
44
+ .infoWrap {
45
+ position: relative;
46
+ display: inline-flex;
47
+ }
48
+
49
+ .infoIcon {
50
+ display: inline-flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ width: 16px;
54
+ height: 16px;
55
+ color: var(--vp-c-text-3);
56
+ border: 1px solid var(--vp-c-divider);
57
+ border-radius: 50%;
58
+ cursor: help;
59
+ font-size: 11px;
60
+ line-height: 1;
61
+ }
62
+
63
+ .tooltip {
64
+ position: absolute;
65
+ left: 50%;
66
+ bottom: calc(100% + 8px);
67
+ z-index: 10;
68
+ width: 240px;
69
+ padding: 8px 10px;
70
+ color: var(--vp-c-text-1);
71
+ background: var(--vp-c-bg-elv);
72
+ border: 1px solid var(--vp-c-divider);
73
+ border-radius: 6px;
74
+ box-shadow: var(--vp-shadow-2);
75
+ font-size: 12px;
76
+ line-height: 18px;
77
+ opacity: 0;
78
+ pointer-events: none;
79
+ transform: translate(-50%, 4px);
80
+ transition:
81
+ opacity 0.15s ease,
82
+ transform 0.15s ease;
83
+ }
84
+
85
+ .infoWrap:hover .tooltip,
86
+ .infoWrap:focus-within .tooltip {
87
+ opacity: 1;
88
+ transform: translate(-50%, 0);
89
+ }
90
+
91
+ .inputGroup {
92
+ position: relative;
93
+ }
94
+
95
+ .input,
96
+ .select {
97
+ width: 100%;
98
+ height: 34px;
99
+ box-sizing: border-box;
100
+ color: var(--vp-c-text-1);
101
+ background: var(--vp-c-bg);
102
+ border: 1px solid var(--vp-c-divider);
103
+ border-radius: 6px;
104
+ font-size: 13px;
105
+ outline: none;
106
+ }
107
+
108
+ .input {
109
+ padding: 0 34px 0 10px;
110
+ font-family: var(--vp-font-family-mono);
111
+ }
112
+
113
+ .select {
114
+ padding: 0 10px;
115
+ cursor: pointer;
116
+ }
117
+
118
+ .input::placeholder {
119
+ color: var(--vp-c-text-3);
120
+ }
121
+
122
+ .input:focus,
123
+ .select:focus {
124
+ border-color: var(--vp-c-brand-1);
125
+ }
126
+
127
+ .clearBtn {
128
+ position: absolute;
129
+ top: 50%;
130
+ right: 7px;
131
+ display: inline-flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ width: 20px;
135
+ height: 20px;
136
+ padding: 0;
137
+ color: var(--vp-c-text-3);
138
+ background: transparent;
139
+ border: none;
140
+ border-radius: 4px;
141
+ cursor: pointer;
142
+ font-size: 16px;
143
+ transform: translateY(-50%);
144
+ }
145
+
146
+ .clearBtn:hover {
147
+ color: var(--vp-c-danger-1);
148
+ background: var(--vp-c-danger-soft);
149
+ }
150
+
151
+ .fieldStack {
152
+ display: flex;
153
+ flex-direction: column;
154
+ gap: 12px;
155
+ }
156
+
157
+ .checkRow {
158
+ display: inline-flex;
159
+ align-items: center;
160
+ gap: 8px;
161
+ width: max-content;
162
+ color: var(--vp-c-text-1);
163
+ cursor: pointer;
164
+ font-size: 13px;
165
+ line-height: 20px;
166
+ user-select: none;
167
+ }
168
+
169
+ .checkbox {
170
+ width: 16px;
171
+ height: 16px;
172
+ margin: 0;
173
+ accent-color: var(--vp-c-brand-1);
174
+ cursor: pointer;
175
+ }
176
+
177
+ .controlRow,
178
+ .field {
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: 6px;
182
+ }
183
+
184
+ .controlLabel {
185
+ color: var(--vp-c-text-2);
186
+ font-size: 12px;
187
+ line-height: 18px;
188
+ }
189
+
190
+ .segmented {
191
+ display: grid;
192
+ grid-template-columns: repeat(3, 1fr);
193
+ overflow: hidden;
194
+ border: 1px solid var(--vp-c-divider);
195
+ border-radius: 6px;
196
+ }
197
+
198
+ .segment {
199
+ display: inline-flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ min-width: 0;
203
+ height: 32px;
204
+ color: var(--vp-c-text-2);
205
+ border-right: 1px solid var(--vp-c-divider);
206
+ cursor: pointer;
207
+ font-size: 13px;
208
+ user-select: none;
209
+ }
210
+
211
+ .segment:last-child {
212
+ border-right: none;
213
+ }
214
+
215
+ .segment input {
216
+ position: absolute;
217
+ opacity: 0;
218
+ pointer-events: none;
219
+ }
220
+
221
+ .segment:hover,
222
+ .activeSegment {
223
+ color: var(--vp-c-brand-1);
224
+ background: var(--vp-c-default-soft);
225
+ }
226
+
227
+ .activeSegment {
228
+ font-weight: 600;
229
+ }
230
+
231
+ .inlineGrid {
232
+ display: grid;
233
+ grid-template-columns: 1fr 120px;
234
+ gap: 12px;
235
+ }
236
+
237
+ .prefixGrid {
238
+ display: grid;
239
+ grid-template-columns: repeat(2, minmax(0, 1fr));
240
+ gap: 12px;
241
+ }
242
+
243
+ .prefixInput {
244
+ padding-right: 10px;
245
+ font-family: var(--vp-font-family-base);
246
+ }
247
+
248
+ .inputWithUnit {
249
+ position: relative;
250
+ }
251
+
252
+ .inputWithUnit .input {
253
+ padding-right: 34px;
254
+ }
255
+
256
+ .unit {
257
+ position: absolute;
258
+ top: 50%;
259
+ right: 10px;
260
+ color: var(--vp-c-text-3);
261
+ font-size: 12px;
262
+ pointer-events: none;
263
+ transform: translateY(-50%);
264
+ }
265
+
266
+ .actionBar {
267
+ display: flex;
268
+ justify-content: flex-end;
269
+ gap: 8px;
270
+ padding-top: 16px;
271
+ }
272
+
273
+ .saveBtn,
274
+ .resetBtn {
275
+ display: inline-flex;
276
+ align-items: center;
277
+ justify-content: center;
278
+ min-width: 72px;
279
+ height: 34px;
280
+ padding: 0 14px;
281
+ border-radius: 6px;
282
+ cursor: pointer;
283
+ font-size: 13px;
284
+ font-weight: 500;
285
+ }
286
+
287
+ .saveBtn {
288
+ color: #fff;
289
+ background: var(--vp-c-brand-1);
290
+ border: 1px solid var(--vp-c-brand-1);
291
+ }
292
+
293
+ .saveBtn:hover:not(.disabled) {
294
+ background: var(--vp-c-brand-2);
295
+ }
296
+
297
+ .saveBtn.disabled {
298
+ opacity: 0.45;
299
+ cursor: not-allowed;
300
+ }
301
+
302
+ .resetBtn {
303
+ color: var(--vp-c-text-1);
304
+ background: var(--vp-c-bg);
305
+ border: 1px solid var(--vp-c-divider);
306
+ }
307
+
308
+ .resetBtn:hover {
309
+ border-color: var(--vp-c-brand-1);
310
+ }
311
+
312
+ .toast {
313
+ position: fixed;
314
+ top: 78px;
315
+ left: 50%;
316
+ z-index: 1000;
317
+ padding: 8px 12px;
318
+ color: #fff;
319
+ background: var(--vp-c-brand-1);
320
+ border-radius: 6px;
321
+ box-shadow: var(--vp-shadow-2);
322
+ font-size: 13px;
323
+ transform: translateX(-50%);
324
+ }
325
+
326
+ :global(.toast-enter-active),
327
+ :global(.toast-leave-active) {
328
+ transition: all 0.2s ease;
329
+ }
330
+
331
+ :global(.toast-enter-from),
332
+ :global(.toast-leave-to) {
333
+ opacity: 0;
334
+ transform: translate(-50%, -8px);
335
+ }
336
+
337
+ @media (max-width: 768px) {
338
+ .settingsWrapper {
339
+ padding: 0;
340
+ }
341
+
342
+ .settingItem {
343
+ grid-template-columns: 1fr;
344
+ gap: 10px;
345
+ padding: 16px 0;
346
+ }
347
+
348
+ .inlineGrid {
349
+ grid-template-columns: 1fr;
350
+ }
351
+
352
+ .prefixGrid {
353
+ grid-template-columns: 1fr;
354
+ }
355
+
356
+ .tooltip {
357
+ left: 0;
358
+ width: min(260px, calc(100vw - 48px));
359
+ transform: translate(0, 4px);
360
+ }
361
+
362
+ .infoWrap:hover .tooltip,
363
+ .infoWrap:focus-within .tooltip {
364
+ transform: translate(0, 0);
365
+ }
366
+
367
+ .actionBar {
368
+ flex-direction: column-reverse;
369
+ }
370
+
371
+ .saveBtn,
372
+ .resetBtn {
373
+ width: 100%;
374
+ }
375
+ }