wiki-viewer 1.0.0

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 (119) hide show
  1. package/.next/standalone/.github/workflows/publish.yml +37 -0
  2. package/.next/standalone/DESIGN.md +521 -0
  3. package/.next/standalone/README.md +283 -0
  4. package/.next/standalone/bin/wiki-viewer.js +158 -0
  5. package/.next/standalone/next.config.ts +11 -0
  6. package/.next/standalone/package.json +120 -0
  7. package/.next/standalone/pnpm-lock.yaml +5654 -0
  8. package/.next/standalone/pnpm-workspace.yaml +2 -0
  9. package/.next/standalone/postcss.config.mjs +2 -0
  10. package/.next/standalone/public/logo.svg +11 -0
  11. package/.next/standalone/public/public/logo.svg +11 -0
  12. package/.next/standalone/server.js +44 -0
  13. package/.next/standalone/src/app/api/app-proxy/[...path]/route.ts +247 -0
  14. package/.next/standalone/src/app/api/assets/[...path]/route.ts +70 -0
  15. package/.next/standalone/src/app/api/system/browse/route.ts +78 -0
  16. package/.next/standalone/src/app/api/system/clear-root/route.ts +9 -0
  17. package/.next/standalone/src/app/api/system/config/route.ts +10 -0
  18. package/.next/standalone/src/app/api/system/pins/route.ts +31 -0
  19. package/.next/standalone/src/app/api/system/reveal/route.ts +28 -0
  20. package/.next/standalone/src/app/api/system/root-status/route.ts +9 -0
  21. package/.next/standalone/src/app/api/system/set-root/route.ts +23 -0
  22. package/.next/standalone/src/app/api/upload/[...path]/route.ts +80 -0
  23. package/.next/standalone/src/app/api/wiki/app/route.ts +41 -0
  24. package/.next/standalone/src/app/api/wiki/content/route.ts +60 -0
  25. package/.next/standalone/src/app/api/wiki/file/route.ts +52 -0
  26. package/.next/standalone/src/app/api/wiki/folder/route.ts +26 -0
  27. package/.next/standalone/src/app/api/wiki/move/route.ts +45 -0
  28. package/.next/standalone/src/app/api/wiki/page/route.ts +84 -0
  29. package/.next/standalone/src/app/api/wiki/route.ts +98 -0
  30. package/.next/standalone/src/app/api/wiki/slugs/route.ts +50 -0
  31. package/.next/standalone/src/app/api/wiki/upload/route.ts +87 -0
  32. package/.next/standalone/src/app/api/wiki/watch/route.ts +86 -0
  33. package/.next/standalone/src/app/globals.css +716 -0
  34. package/.next/standalone/src/app/icon.svg +11 -0
  35. package/.next/standalone/src/app/layout.tsx +35 -0
  36. package/.next/standalone/src/app/page.tsx +1509 -0
  37. package/.next/standalone/src/components/confirm-dialog.tsx +56 -0
  38. package/.next/standalone/src/components/dir-picker.tsx +393 -0
  39. package/.next/standalone/src/components/editor/bubble-menu.tsx +286 -0
  40. package/.next/standalone/src/components/editor/callout-extension.ts +36 -0
  41. package/.next/standalone/src/components/editor/csv-viewer.tsx +335 -0
  42. package/.next/standalone/src/components/editor/editor-toolbar.tsx +564 -0
  43. package/.next/standalone/src/components/editor/editor.tsx +633 -0
  44. package/.next/standalone/src/components/editor/extensions/drag-handle.ts +325 -0
  45. package/.next/standalone/src/components/editor/extensions/heading-anchors.ts +55 -0
  46. package/.next/standalone/src/components/editor/extensions/resizable-image.tsx +159 -0
  47. package/.next/standalone/src/components/editor/extensions.ts +148 -0
  48. package/.next/standalone/src/components/editor/file-fallback-viewer.tsx +74 -0
  49. package/.next/standalone/src/components/editor/folder-index.tsx +235 -0
  50. package/.next/standalone/src/components/editor/google-doc-viewer.tsx +73 -0
  51. package/.next/standalone/src/components/editor/image-viewer.tsx +56 -0
  52. package/.next/standalone/src/components/editor/link-popover.tsx +111 -0
  53. package/.next/standalone/src/components/editor/media-popover.tsx +211 -0
  54. package/.next/standalone/src/components/editor/media-viewer.tsx +69 -0
  55. package/.next/standalone/src/components/editor/mermaid-viewer.tsx +285 -0
  56. package/.next/standalone/src/components/editor/node-app-viewer.tsx +269 -0
  57. package/.next/standalone/src/components/editor/notebook-viewer.tsx +370 -0
  58. package/.next/standalone/src/components/editor/office/docx-viewer.tsx +92 -0
  59. package/.next/standalone/src/components/editor/office/office-chrome.tsx +82 -0
  60. package/.next/standalone/src/components/editor/office/pptx-viewer.tsx +103 -0
  61. package/.next/standalone/src/components/editor/office/xlsx-viewer.tsx +116 -0
  62. package/.next/standalone/src/components/editor/pdf-viewer.tsx +31 -0
  63. package/.next/standalone/src/components/editor/slash-commands.tsx +454 -0
  64. package/.next/standalone/src/components/editor/source-viewer.tsx +212 -0
  65. package/.next/standalone/src/components/editor/table-menu.tsx +232 -0
  66. package/.next/standalone/src/components/editor/website-viewer.tsx +74 -0
  67. package/.next/standalone/src/components/editor/wiki-link-create-dialog.tsx +188 -0
  68. package/.next/standalone/src/components/editor/wiki-link-decorator.ts +79 -0
  69. package/.next/standalone/src/components/editor/wiki-link-extension.ts +120 -0
  70. package/.next/standalone/src/components/editor/wiki-link-picker.tsx +250 -0
  71. package/.next/standalone/src/components/layout/viewer-toolbar.tsx +54 -0
  72. package/.next/standalone/src/components/theme-provider.tsx +16 -0
  73. package/.next/standalone/src/components/theme-toggle.tsx +24 -0
  74. package/.next/standalone/src/components/ui/badge.tsx +35 -0
  75. package/.next/standalone/src/components/ui/button.tsx +56 -0
  76. package/.next/standalone/src/components/ui/card.tsx +63 -0
  77. package/.next/standalone/src/components/ui/collapsible.tsx +9 -0
  78. package/.next/standalone/src/components/ui/command.tsx +150 -0
  79. package/.next/standalone/src/components/ui/context-menu.tsx +191 -0
  80. package/.next/standalone/src/components/ui/dialog.tsx +119 -0
  81. package/.next/standalone/src/components/ui/dropdown-menu.tsx +194 -0
  82. package/.next/standalone/src/components/ui/input.tsx +22 -0
  83. package/.next/standalone/src/components/ui/label.tsx +25 -0
  84. package/.next/standalone/src/components/ui/popover.tsx +33 -0
  85. package/.next/standalone/src/components/ui/scroll-area.tsx +47 -0
  86. package/.next/standalone/src/components/ui/select.tsx +156 -0
  87. package/.next/standalone/src/components/ui/separator.tsx +30 -0
  88. package/.next/standalone/src/components/ui/sheet.tsx +140 -0
  89. package/.next/standalone/src/components/ui/skeleton.tsx +15 -0
  90. package/.next/standalone/src/components/ui/switch.tsx +28 -0
  91. package/.next/standalone/src/components/ui/tabs.tsx +54 -0
  92. package/.next/standalone/src/components/ui/textarea.tsx +21 -0
  93. package/.next/standalone/src/components/ui/tip.tsx +23 -0
  94. package/.next/standalone/src/components/ui/toggle-group.tsx +41 -0
  95. package/.next/standalone/src/components/ui/tooltip.tsx +27 -0
  96. package/.next/standalone/src/components/wiki/frontmatter-header.tsx +164 -0
  97. package/.next/standalone/src/lib/app-runner.ts +231 -0
  98. package/.next/standalone/src/lib/cabinets/tree.ts +75 -0
  99. package/.next/standalone/src/lib/config.ts +32 -0
  100. package/.next/standalone/src/lib/embeds/detect.ts +142 -0
  101. package/.next/standalone/src/lib/google/detect.ts +107 -0
  102. package/.next/standalone/src/lib/markdown/parse-frontmatter.ts +84 -0
  103. package/.next/standalone/src/lib/markdown/remark-wikilinks.ts +100 -0
  104. package/.next/standalone/src/lib/markdown/to-html.ts +168 -0
  105. package/.next/standalone/src/lib/markdown/to-markdown.ts +238 -0
  106. package/.next/standalone/src/lib/root-dir.ts +35 -0
  107. package/.next/standalone/src/lib/toast.ts +9 -0
  108. package/.next/standalone/src/lib/utils.ts +6 -0
  109. package/.next/standalone/src/lib/wiki-helpers.ts +36 -0
  110. package/.next/standalone/src/stores/ai-panel-store.ts +23 -0
  111. package/.next/standalone/src/stores/editor-store.ts +244 -0
  112. package/.next/standalone/src/stores/tree-store.ts +52 -0
  113. package/.next/standalone/src/stores/wiki-slugs-store.ts +74 -0
  114. package/.next/standalone/src/types/index.ts +47 -0
  115. package/.next/standalone/tailwind.config.ts +201 -0
  116. package/.next/standalone/tsconfig.json +41 -0
  117. package/README.md +283 -0
  118. package/bin/wiki-viewer.js +158 -0
  119. package/package.json +120 -0
@@ -0,0 +1,716 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ :root {
6
+ --background: #f5f5f5;
7
+ --foreground: #0c0a09;
8
+ --card: #ffffff;
9
+ --card-foreground: #0c0a09;
10
+ --popover: #ffffff;
11
+ --popover-foreground: #0c0a09;
12
+ --primary: #292524;
13
+ --primary-foreground: #ffffff;
14
+ --secondary: #fafafa;
15
+ --secondary-foreground: #0c0a09;
16
+ --muted: #f0efed;
17
+ --muted-foreground: #777169;
18
+ --accent: #292524;
19
+ --accent-foreground: #ffffff;
20
+ --accent-soft: #e7e5e4;
21
+ --primary-soft: #e7e5e4;
22
+ --success-soft: #dcfce7;
23
+ --quadrant-do-soft: #f0fdf4;
24
+ --quadrant-schedule-soft: #fff7ed;
25
+ --quadrant-delegate-soft: #eff6ff;
26
+ --quadrant-eliminate-soft: #faf5ff;
27
+ --destructive: #dc2626;
28
+ --destructive-foreground: #ffffff;
29
+ --destructive-soft: #fee2e2;
30
+ --warning-soft: #fef3c7;
31
+ --warning-ink: #a16207;
32
+ --border: #e7e5e4;
33
+ --input: #d6d3d1;
34
+ --ring: #292524;
35
+ --radius: 8px;
36
+
37
+ --chart-1: #292524;
38
+ --chart-2: #777169;
39
+ --chart-3: #a8a29e;
40
+ --chart-4: #d6d3d1;
41
+ --chart-5: #0c0a09;
42
+
43
+ --sidebar-background: #fafafa;
44
+ --sidebar-foreground: #0c0a09;
45
+ --sidebar-primary: #292524;
46
+ --sidebar-primary-foreground: #ffffff;
47
+ --sidebar-accent: #ffffff;
48
+ --sidebar-accent-foreground: #0c0a09;
49
+ --sidebar-border: #e7e5e4;
50
+ --sidebar-ring: #292524;
51
+
52
+ /* Eisenhower quadrant accent colors — light mode */
53
+ --quadrant-do: #a7e5d3;
54
+ --quadrant-schedule: #f4c5a8;
55
+ --quadrant-delegate: #a8c8e8;
56
+ --quadrant-eliminate: #c8b8e0;
57
+
58
+ /* Status colors — light mode */
59
+ --status-not-started: #777169;
60
+ --status-in-progress: #a8a29e;
61
+ --status-done: #16a34a;
62
+
63
+ /* Success / Warning / Info — light mode */
64
+ --success: #16a34a;
65
+ --warning: #d97706;
66
+ --info: #292524;
67
+
68
+ /* Gradient orb tokens */
69
+ --gradient-mint: #a7e5d3;
70
+ --gradient-peach: #f4c5a8;
71
+ --gradient-lavender: #c8b8e0;
72
+ --gradient-sky: #a8c8e8;
73
+ --gradient-rose: #e8b8c4;
74
+
75
+ /* Elevation backing — light mode editorial */
76
+ --shadow-golden-card: 0 4px 16px rgba(0, 0, 0, 0.04);
77
+ --shadow-golden-pop: 0 8px 24px rgba(0, 0, 0, 0.06);
78
+ --shadow-golden-dialog: 0 16px 48px rgba(0, 0, 0, 0.08);
79
+ --shadow-golden-toast: 0 24px 64px rgba(0, 0, 0, 0.10);
80
+
81
+ /* === State tokens === */
82
+ --state-disabled-opacity: 0.5;
83
+ --state-hover-overlay: 0 0 0 / 0.05; /* black 5% for light */
84
+ --state-active-scale: 0.98;
85
+ --ring-width-input: 1px;
86
+ --ring-width-interactive: 2px;
87
+
88
+ /* === Motion tokens === */
89
+ --motion-fast: 100ms;
90
+ --motion-base: 150ms;
91
+ --motion-slow: 300ms;
92
+ --motion-easing: cubic-bezier(0, 0, 0.2, 1); /* ease-out */
93
+
94
+ /* === Z-index tokens === */
95
+ --z-sticky: 10;
96
+ --z-sidebar: 30;
97
+ --z-overlay: 40;
98
+ --z-float: 50;
99
+ }
100
+
101
+ .dark {
102
+ --background: #0c0a09;
103
+ --foreground: #ffffff;
104
+ --card: #1c1917;
105
+ --card-foreground: #ffffff;
106
+ --popover: #1c1917;
107
+ --popover-foreground: #ffffff;
108
+ --primary: #292524;
109
+ --primary-foreground: #ffffff;
110
+ --secondary: #1c1917;
111
+ --secondary-foreground: #ffffff;
112
+ --muted: #292524;
113
+ --muted-foreground: #a8a29e;
114
+ --accent: #ffffff;
115
+ --accent-foreground: #0c0a09;
116
+ --accent-soft: #3d3d3d;
117
+ --primary-soft: #453c35;
118
+ --success-soft: #14532d;
119
+ --quadrant-do-soft: #14532d;
120
+ --quadrant-schedule-soft: #7c2d12;
121
+ --quadrant-delegate-soft: #1e3a5f;
122
+ --quadrant-eliminate-soft: #4a1d6a;
123
+ --destructive: #dc2626;
124
+ --destructive-foreground: #ffffff;
125
+ --destructive-soft: #7f1d1d;
126
+ --warning-soft: #3d2b1a;
127
+ --warning-ink: #fbbf24;
128
+ --border: #292524;
129
+ --input: #292524;
130
+ --ring: #ffffff;
131
+
132
+ --chart-1: #ffffff;
133
+ --chart-2: #a8a29e;
134
+ --chart-3: #777169;
135
+ --chart-4: #4e4e4e;
136
+ --chart-5: #f5f5f5;
137
+
138
+ --sidebar-background: #0c0a09;
139
+ --sidebar-foreground: #ffffff;
140
+ --sidebar-primary: #292524;
141
+ --sidebar-primary-foreground: #ffffff;
142
+ --sidebar-accent: #1c1917;
143
+ --sidebar-accent-foreground: #ffffff;
144
+ --sidebar-border: #292524;
145
+ --sidebar-ring: #ffffff;
146
+
147
+ /* Eisenhower quadrant accent colors */
148
+ --quadrant-do: #a7e5d3;
149
+ --quadrant-schedule: #f4c5a8;
150
+ --quadrant-delegate: #a8c8e8;
151
+ --quadrant-eliminate: #c8b8e0;
152
+
153
+ /* Status colors */
154
+ --status-not-started: #a8a29e;
155
+ --status-in-progress: #777169;
156
+ --status-done: #16a34a;
157
+
158
+ /* Success / Warning / Info */
159
+ --success: #16a34a;
160
+ --warning: #fbbf24;
161
+ --info: #ffffff;
162
+
163
+ --state-hover-overlay: 255 255 255 / 0.1; /* white 10% for dark */
164
+
165
+ /* Elevation backing — dark mode editorial */
166
+ --shadow-golden-card: 0 4px 16px rgba(0, 0, 0, 0.3);
167
+ --shadow-golden-pop: 0 8px 24px rgba(0, 0, 0, 0.4);
168
+ --shadow-golden-dialog: 0 16px 48px rgba(0, 0, 0, 0.5);
169
+ --shadow-golden-toast: 0 24px 64px rgba(0, 0, 0, 0.6);
170
+ }
171
+
172
+ /* Shadow override on dark bg */
173
+ .dark .shadow-golden {
174
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
175
+ }
176
+
177
+ @layer base {
178
+ * {
179
+ @apply border-border;
180
+ }
181
+ body {
182
+ @apply bg-background text-foreground;
183
+ }
184
+ }
185
+
186
+ /* Smooth transitions for interactive elements */
187
+ @layer base {
188
+ a,
189
+ button,
190
+ input,
191
+ textarea,
192
+ select {
193
+ @apply transition-colors duration-150;
194
+ }
195
+ }
196
+
197
+ /* Enhanced focus visibility for accessibility */
198
+ @layer base {
199
+ :focus-visible {
200
+ outline: 2px solid var(--ring);
201
+ outline-offset: 2px;
202
+ border-radius: var(--radius);
203
+ }
204
+ }
205
+
206
+ /* Skip to content link for keyboard navigation */
207
+ .skip-to-content {
208
+ position: absolute;
209
+ left: -9999px;
210
+ top: 0;
211
+ z-index: 9999;
212
+ padding: 0.5rem 1rem;
213
+ background: var(--primary);
214
+ color: var(--primary-foreground);
215
+ font-size: 0.875rem;
216
+ font-weight: 400;
217
+ border-radius: 0 0 0.5rem 0;
218
+ }
219
+
220
+ .skip-to-content:focus {
221
+ left: 0;
222
+ }
223
+
224
+ /* Shimmer animation for active progress bars */
225
+ @keyframes shimmer {
226
+ 0% {
227
+ background-position: -200% 0;
228
+ }
229
+ 100% {
230
+ background-position: 200% 0;
231
+ }
232
+ }
233
+
234
+ .animate-shimmer {
235
+ background-size: 200% 100%;
236
+ animation: shimmer 2s ease-in-out infinite;
237
+ }
238
+
239
+ /* Card entrance animation */
240
+ @keyframes fade-in-up {
241
+ from {
242
+ opacity: 0;
243
+ transform: translateY(8px);
244
+ }
245
+ to {
246
+ opacity: 1;
247
+ transform: translateY(0);
248
+ }
249
+ }
250
+
251
+ .animate-fade-in-up {
252
+ animation: fade-in-up 0.3s ease-out both;
253
+ }
254
+
255
+ /* Hide Next.js dev mode indicator */
256
+ [data-next-mark],
257
+ nextjs-portal {
258
+ display: none;
259
+ }
260
+
261
+ /* Custom scrollbar — light mode */
262
+ @layer base {
263
+ ::-webkit-scrollbar {
264
+ width: 8px;
265
+ height: 8px;
266
+ }
267
+ ::-webkit-scrollbar-track {
268
+ background: transparent;
269
+ }
270
+ ::-webkit-scrollbar-thumb {
271
+ background: #d6d3d1;
272
+ border-radius: 4px;
273
+ }
274
+ ::-webkit-scrollbar-thumb:hover {
275
+ background: #a8a29e;
276
+ }
277
+ }
278
+
279
+ /* Custom scrollbar — dark theme override */
280
+ @layer base {
281
+ .dark ::-webkit-scrollbar {
282
+ width: 8px;
283
+ height: 8px;
284
+ }
285
+ .dark ::-webkit-scrollbar-track {
286
+ background: transparent;
287
+ }
288
+ .dark ::-webkit-scrollbar-thumb {
289
+ background: #292524;
290
+ border-radius: 4px;
291
+ }
292
+ .dark ::-webkit-scrollbar-thumb:hover {
293
+ background: #4e4e4e;
294
+ }
295
+ }
296
+
297
+ /* ============================================================ */
298
+ /* Editor: tiptap / ProseMirror */
299
+ /* Reconciled to ElevenLabs design tokens. */
300
+ /* ============================================================ */
301
+
302
+ .tiptap {
303
+ font-size: 0.875rem;
304
+ line-height: 1.55;
305
+ letter-spacing: -0.01em;
306
+ outline: none;
307
+ }
308
+
309
+ .tiptap h1 {
310
+ font-size: 1.5rem;
311
+ font-weight: 600;
312
+ line-height: 1.25;
313
+ letter-spacing: -0.02em;
314
+ margin: 1.5rem 0 0.5rem;
315
+ }
316
+
317
+ .tiptap h2 {
318
+ font-size: 1.25rem;
319
+ font-weight: 600;
320
+ line-height: 1.3;
321
+ letter-spacing: -0.015em;
322
+ margin: 1.25rem 0 0.4rem;
323
+ }
324
+
325
+ .tiptap h3 {
326
+ font-size: 1.0625rem;
327
+ font-weight: 600;
328
+ line-height: 1.4;
329
+ letter-spacing: -0.01em;
330
+ margin: 1rem 0 0.35rem;
331
+ }
332
+
333
+ .tiptap h4 {
334
+ font-size: 0.9375rem;
335
+ font-weight: 600;
336
+ line-height: 1.4;
337
+ margin: 0.85rem 0 0.3rem;
338
+ }
339
+
340
+ .tiptap p {
341
+ margin-bottom: 0.6rem;
342
+ }
343
+
344
+ .tiptap ul,
345
+ .tiptap ol {
346
+ padding-left: 1.4rem;
347
+ margin-bottom: 0.6rem;
348
+ }
349
+
350
+ .tiptap li p {
351
+ margin-bottom: 0.2rem;
352
+ }
353
+
354
+ .tiptap blockquote {
355
+ border-left: 2px solid var(--border);
356
+ padding-left: 0.85rem;
357
+ color: var(--muted-foreground);
358
+ font-style: italic;
359
+ }
360
+
361
+ .tiptap code {
362
+ background: var(--muted);
363
+ color: var(--foreground);
364
+ padding: 0.1rem 0.3rem;
365
+ border-radius: var(--radius);
366
+ font-size: 0.85em;
367
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
368
+ }
369
+
370
+ .tiptap pre {
371
+ background: var(--muted);
372
+ color: var(--foreground);
373
+ padding: 0.75rem 0.9rem;
374
+ border-radius: calc(var(--radius) * 2);
375
+ overflow-x: auto;
376
+ font-size: 0.8125rem;
377
+ line-height: 1.55;
378
+ margin: 0.75rem 0;
379
+ }
380
+
381
+ .tiptap pre code {
382
+ background: transparent;
383
+ padding: 0;
384
+ }
385
+
386
+ .tiptap pre code .hljs-keyword,
387
+ .tiptap pre code .hljs-selector-tag,
388
+ .tiptap pre code .hljs-built_in {
389
+ color: var(--accent);
390
+ font-weight: 500;
391
+ }
392
+
393
+ .tiptap pre code .hljs-string,
394
+ .tiptap pre code .hljs-attr {
395
+ color: var(--success);
396
+ }
397
+
398
+ .tiptap pre code .hljs-number,
399
+ .tiptap pre code .hljs-literal,
400
+ .tiptap pre code .hljs-bullet,
401
+ .tiptap pre code .hljs-symbol {
402
+ color: var(--warning-ink);
403
+ }
404
+
405
+ .tiptap pre code .hljs-comment,
406
+ .tiptap pre code .hljs-quote {
407
+ color: var(--muted-foreground);
408
+ font-style: italic;
409
+ }
410
+
411
+ .tiptap pre code .hljs-function,
412
+ .tiptap pre code .hljs-title,
413
+ .tiptap pre code .hljs-section {
414
+ color: var(--accent);
415
+ font-weight: 600;
416
+ }
417
+
418
+ .tiptap pre code .hljs-type,
419
+ .tiptap pre code .hljs-class .hljs-title,
420
+ .tiptap pre code .hljs-name,
421
+ .tiptap pre code .hljs-meta {
422
+ color: var(--warning-ink);
423
+ }
424
+
425
+ .tiptap pre code .hljs-variable,
426
+ .tiptap pre code .hljs-template-variable,
427
+ .tiptap pre code .hljs-attribute {
428
+ color: var(--foreground);
429
+ }
430
+
431
+ .tiptap pre code .hljs-tag,
432
+ .tiptap pre code .hljs-regexp {
433
+ color: var(--destructive);
434
+ }
435
+
436
+ .tiptap pre code .hljs-emphasis {
437
+ font-style: italic;
438
+ }
439
+
440
+ .tiptap pre code .hljs-strong {
441
+ font-weight: 600;
442
+ }
443
+
444
+ .tiptap hr {
445
+ border: 0;
446
+ border-top: 1px solid var(--border);
447
+ margin: 1.25rem 0;
448
+ }
449
+
450
+ .tiptap a {
451
+ color: var(--accent);
452
+ text-decoration: underline;
453
+ text-underline-offset: 2px;
454
+ }
455
+
456
+ .tiptap strong {
457
+ font-weight: 600;
458
+ color: var(--foreground);
459
+ }
460
+
461
+ .tiptap p.is-editor-empty:first-child::before {
462
+ content: attr(data-placeholder);
463
+ color: var(--muted-foreground);
464
+ float: left;
465
+ height: 0;
466
+ pointer-events: none;
467
+ }
468
+
469
+ .tiptap .tableWrapper {
470
+ overflow-x: auto;
471
+ margin: 0.75rem 0;
472
+ }
473
+
474
+ .tiptap table {
475
+ border-collapse: collapse;
476
+ table-layout: fixed;
477
+ width: 100%;
478
+ margin: 0.75rem 0;
479
+ overflow: hidden;
480
+ border-radius: var(--radius);
481
+ border: 1px solid var(--border);
482
+ }
483
+
484
+ .tiptap th,
485
+ .tiptap td {
486
+ border: 1px solid var(--border);
487
+ padding: 0.4rem 0.6rem;
488
+ vertical-align: top;
489
+ position: relative;
490
+ }
491
+
492
+ .tiptap th {
493
+ background: var(--muted);
494
+ font-weight: 600;
495
+ text-align: left;
496
+ }
497
+
498
+ .tiptap td {
499
+ background: transparent;
500
+ }
501
+
502
+ .tiptap tr:hover td {
503
+ background: color-mix(in srgb, var(--muted) 60%, transparent);
504
+ }
505
+
506
+ .tiptap .selectedCell {
507
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
508
+ position: relative;
509
+ }
510
+
511
+ .tiptap .selectedCell::after {
512
+ content: "";
513
+ position: absolute;
514
+ inset: 0;
515
+ pointer-events: none;
516
+ background: color-mix(in srgb, var(--accent) 6%, transparent);
517
+ }
518
+
519
+ .tiptap .column-resize-handle {
520
+ position: absolute;
521
+ right: -2px;
522
+ top: 0;
523
+ bottom: -2px;
524
+ width: 4px;
525
+ background: var(--accent);
526
+ pointer-events: none;
527
+ }
528
+
529
+ .tiptap.resize-cursor {
530
+ cursor: col-resize;
531
+ }
532
+
533
+ .tiptap .task-list {
534
+ list-style: none;
535
+ padding-left: 0;
536
+ }
537
+
538
+ .tiptap .task-list li {
539
+ display: flex;
540
+ align-items: flex-start;
541
+ gap: 0.5rem;
542
+ margin-bottom: 0.25rem;
543
+ }
544
+
545
+ .tiptap .task-list li > label {
546
+ flex-shrink: 0;
547
+ margin-top: 0.2rem;
548
+ user-select: none;
549
+ }
550
+
551
+ .tiptap .task-list li label input[type="checkbox"] {
552
+ appearance: none;
553
+ width: 0.95rem;
554
+ height: 0.95rem;
555
+ border: 1.5px solid var(--border);
556
+ border-radius: var(--radius);
557
+ background: var(--background);
558
+ cursor: pointer;
559
+ position: relative;
560
+ transition: border-color 120ms;
561
+ }
562
+
563
+ .tiptap .task-list li label input[type="checkbox"]:checked {
564
+ background: var(--accent);
565
+ border-color: var(--accent);
566
+ }
567
+
568
+ .tiptap .task-list li label input[type="checkbox"]:checked::after {
569
+ content: "✓";
570
+ color: var(--accent-foreground);
571
+ font-size: 0.7rem;
572
+ position: absolute;
573
+ left: 50%;
574
+ top: 50%;
575
+ transform: translate(-50%, -52%);
576
+ }
577
+
578
+ .tiptap .task-list li[data-checked="true"] > div > p {
579
+ color: var(--muted-foreground);
580
+ text-decoration: line-through;
581
+ }
582
+
583
+ .tiptap .callout-info {
584
+ border-left: 2px solid var(--accent);
585
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
586
+ }
587
+
588
+ .tiptap .callout-warning {
589
+ border-left: 2px solid var(--warning-ink);
590
+ background: var(--warning-soft);
591
+ }
592
+
593
+ .tiptap .callout-success {
594
+ border-left: 2px solid var(--success);
595
+ background: var(--success-soft);
596
+ }
597
+
598
+ .tiptap .callout-error {
599
+ border-left: 2px solid var(--destructive);
600
+ background: var(--destructive-soft);
601
+ }
602
+
603
+ .tiptap .resizable-image {
604
+ position: relative;
605
+ max-width: 100%;
606
+ height: auto;
607
+ display: block;
608
+ margin: 0.75rem 0;
609
+ border-radius: var(--radius);
610
+ }
611
+
612
+ .tiptap .resizable-image[data-align="left"] {
613
+ margin-left: 0;
614
+ margin-right: auto;
615
+ }
616
+
617
+ .tiptap .resizable-image[data-align="right"] {
618
+ margin-left: auto;
619
+ margin-right: 0;
620
+ }
621
+
622
+ .tiptap .resizable-image[data-align="center"] {
623
+ margin-left: auto;
624
+ margin-right: auto;
625
+ }
626
+
627
+ .tiptap [style*="text-align: center"] {
628
+ text-align: center;
629
+ }
630
+
631
+ .tiptap [style*="text-align: right"] {
632
+ text-align: right;
633
+ }
634
+
635
+ .tiptap [style*="text-align: justify"] {
636
+ text-align: justify;
637
+ }
638
+
639
+ .tiptap a[href$=".pdf"]::after {
640
+ content: "📄";
641
+ color: var(--muted-foreground);
642
+ font-size: 0.75em;
643
+ margin-left: 0.25rem;
644
+ }
645
+
646
+ #cabinet-drag-handle {
647
+ font-family: var(--font-sans);
648
+ background: var(--muted);
649
+ color: var(--muted-foreground);
650
+ border-radius: var(--radius);
651
+ }
652
+
653
+ #cabinet-drag-handle:hover {
654
+ background: var(--accent);
655
+ color: var(--accent-foreground);
656
+ }
657
+
658
+ #cabinet-drag-handle:active {
659
+ cursor: grabbing;
660
+ }
661
+
662
+ #cabinet-gutter-add {
663
+ background: var(--muted);
664
+ color: var(--muted-foreground);
665
+ border-radius: var(--radius);
666
+ }
667
+
668
+ #cabinet-gutter-add:hover {
669
+ background: var(--accent);
670
+ color: var(--accent-foreground);
671
+ }
672
+
673
+ .tiptap :is(h1, h2, h3, h4)[id] {
674
+ position: relative;
675
+ }
676
+
677
+ .tiptap :is(h1, h2, h3, h4)[id]::before {
678
+ content: "#";
679
+ position: absolute;
680
+ left: -1em;
681
+ opacity: 0;
682
+ color: var(--muted-foreground);
683
+ transition:
684
+ opacity 120ms ease,
685
+ color 120ms ease;
686
+ pointer-events: none;
687
+ }
688
+
689
+ .tiptap :is(h1, h2, h3, h4)[id]:hover::before {
690
+ opacity: 1;
691
+ color: var(--accent);
692
+ }
693
+
694
+ /* Wiki-link mark styles */
695
+ .wiki-link {
696
+ color: var(--accent);
697
+ text-decoration: none;
698
+ border-bottom: 1px dotted var(--accent);
699
+ padding: 0 1px;
700
+ cursor: pointer;
701
+ transition:
702
+ color 120ms,
703
+ background 120ms;
704
+ }
705
+ .wiki-link:hover {
706
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
707
+ border-bottom-style: solid;
708
+ }
709
+ .wiki-link[data-broken="true"] {
710
+ color: var(--destructive);
711
+ border-bottom-color: var(--destructive);
712
+ border-bottom-style: dashed;
713
+ }
714
+ .wiki-link[data-broken="true"]:hover {
715
+ background: color-mix(in srgb, var(--destructive) 10%, transparent);
716
+ }
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <rect x="15" y="15" width="70" height="70" rx="8" fill="#292524"/>
3
+
4
+ <rect x="23" y="29" width="46" height="8" rx="2" fill="#ffffff"/>
5
+ <rect x="23" y="45" width="34" height="8" rx="2" fill="#ffffff"/>
6
+
7
+ <rect x="23" y="61" width="16" height="8" rx="2" fill="#ffffff"/>
8
+ <rect x="43" y="61" width="28" height="8" rx="2" fill="#ffffff"/>
9
+
10
+ <path d="M 69 57 L 78 65 L 69 73 Z" fill="#ffffff"/>
11
+ </svg>