@lapis-notes/lapis-plugin-docs 0.0.0-stage → 0.2.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 (197) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +188 -2
  3. package/dist/docs/DocsBlockMarkdownEditor.svelte +37 -0
  4. package/dist/docs/DocsBlockMarkdownEditor.svelte.d.ts +13 -0
  5. package/dist/docs/DocsBlockRefPicker.svelte +75 -0
  6. package/dist/docs/DocsBlockRefPicker.svelte.d.ts +11 -0
  7. package/dist/docs/DocsBookEditor.svelte +141 -0
  8. package/dist/docs/DocsBookEditor.svelte.d.ts +10 -0
  9. package/dist/docs/DocsBookNavigation.svelte +838 -0
  10. package/dist/docs/DocsBookNavigation.svelte.d.ts +11 -0
  11. package/dist/docs/DocsBooksColumn.svelte +82 -0
  12. package/dist/docs/DocsBooksColumn.svelte.d.ts +10 -0
  13. package/dist/docs/DocsCardBackMatter.svelte +32 -0
  14. package/dist/docs/DocsCardBackMatter.svelte.d.ts +10 -0
  15. package/dist/docs/DocsCardBlockExtra.svelte +43 -0
  16. package/dist/docs/DocsCardBlockExtra.svelte.d.ts +9 -0
  17. package/dist/docs/DocsCardPreviewFlip.svelte +143 -0
  18. package/dist/docs/DocsCardPreviewFlip.svelte.d.ts +17 -0
  19. package/dist/docs/DocsCardPreviewStack.svelte +139 -0
  20. package/dist/docs/DocsCardPreviewStack.svelte.d.ts +13 -0
  21. package/dist/docs/DocsCardPrompt.svelte +33 -0
  22. package/dist/docs/DocsCardPrompt.svelte.d.ts +8 -0
  23. package/dist/docs/DocsCardReviewAnswer.svelte +45 -0
  24. package/dist/docs/DocsCardReviewAnswer.svelte.d.ts +8 -0
  25. package/dist/docs/DocsCardTagChips.svelte +19 -0
  26. package/dist/docs/DocsCardTagChips.svelte.d.ts +7 -0
  27. package/dist/docs/DocsCardsPanel.svelte +232 -0
  28. package/dist/docs/DocsCardsPanel.svelte.d.ts +17 -0
  29. package/dist/docs/DocsCardsReview.css +1050 -0
  30. package/dist/docs/DocsChapterFooter.svelte +248 -0
  31. package/dist/docs/DocsChapterFooter.svelte.d.ts +11 -0
  32. package/dist/docs/DocsChapterScrollRing.svelte +101 -0
  33. package/dist/docs/DocsChapterScrollRing.svelte.d.ts +6 -0
  34. package/dist/docs/DocsDisplayPanel.css +627 -0
  35. package/dist/docs/DocsDisplayPanel.svelte +78 -0
  36. package/dist/docs/DocsDisplayPanel.svelte.d.ts +16 -0
  37. package/dist/docs/DocsEditorPanel.css +325 -0
  38. package/dist/docs/DocsEditorPanel.svelte +570 -0
  39. package/dist/docs/DocsEditorPanel.svelte.d.ts +22 -0
  40. package/dist/docs/DocsFlipCard.svelte +68 -0
  41. package/dist/docs/DocsFlipCard.svelte.d.ts +8 -0
  42. package/dist/docs/DocsFolderDirectoryList.svelte +206 -0
  43. package/dist/docs/DocsFolderDirectoryList.svelte.d.ts +14 -0
  44. package/dist/docs/DocsFolderPanel.css +357 -0
  45. package/dist/docs/DocsFolderPanel.svelte +102 -0
  46. package/dist/docs/DocsFolderPanel.svelte.d.ts +17 -0
  47. package/dist/docs/DocsLinksPanel.css +61 -0
  48. package/dist/docs/DocsLinksPanel.svelte +55 -0
  49. package/dist/docs/DocsLinksPanel.svelte.d.ts +11 -0
  50. package/dist/docs/DocsMarkdownField.svelte +93 -0
  51. package/dist/docs/DocsMarkdownField.svelte.d.ts +11 -0
  52. package/dist/docs/DocsMarkdownPreview.svelte +278 -0
  53. package/dist/docs/DocsMarkdownPreview.svelte.d.ts +17 -0
  54. package/dist/docs/DocsReviewPanel.svelte +63 -0
  55. package/dist/docs/DocsReviewPanel.svelte.d.ts +11 -0
  56. package/dist/docs/DocsRichBlock.svelte +291 -0
  57. package/dist/docs/DocsRichBlock.svelte.d.ts +13 -0
  58. package/dist/docs/DocsRichDisplay.svelte +316 -0
  59. package/dist/docs/DocsRichDisplay.svelte.d.ts +14 -0
  60. package/dist/docs/DocsSlidesPreview.css +243 -0
  61. package/dist/docs/DocsSlidesPreview.svelte +206 -0
  62. package/dist/docs/DocsSlidesPreview.svelte.d.ts +10 -0
  63. package/dist/docs/DocsWorkspace.css +570 -0
  64. package/dist/docs/DocsWorkspace.svelte +831 -0
  65. package/dist/docs/DocsWorkspace.svelte.d.ts +48 -0
  66. package/dist/docs/DocsWorkspaceToolbar.svelte +211 -0
  67. package/dist/docs/DocsWorkspaceToolbar.svelte.d.ts +27 -0
  68. package/dist/docs/candidates/ChoiceMenu.svelte +114 -0
  69. package/dist/docs/candidates/ChoiceMenu.svelte.d.ts +10 -0
  70. package/dist/docs/candidates/FlipCardDeck.svelte +817 -0
  71. package/dist/docs/candidates/FlipCardDeck.svelte.d.ts +37 -0
  72. package/dist/docs/candidates/MarkdownFloatingToc.svelte +313 -0
  73. package/dist/docs/candidates/MarkdownFloatingToc.svelte.d.ts +14 -0
  74. package/dist/docs/candidates/SearchableChoicePicker.css +161 -0
  75. package/dist/docs/candidates/SearchableChoicePicker.svelte +208 -0
  76. package/dist/docs/candidates/SearchableChoicePicker.svelte.d.ts +19 -0
  77. package/dist/docs/candidates/StructuredTable.svelte +98 -0
  78. package/dist/docs/candidates/StructuredTable.svelte.d.ts +8 -0
  79. package/dist/docs/candidates/StructuredTableEditor.svelte +374 -0
  80. package/dist/docs/candidates/StructuredTableEditor.svelte.d.ts +12 -0
  81. package/dist/docs/candidates/TagEditor.svelte +31 -0
  82. package/dist/docs/candidates/TagEditor.svelte.d.ts +14 -0
  83. package/dist/docs/candidates/WorkspaceHistoryControls.svelte +112 -0
  84. package/dist/docs/candidates/WorkspaceHistoryControls.svelte.d.ts +8 -0
  85. package/dist/docs/candidates/markdown-floating-toc.css +151 -0
  86. package/dist/docs/candidates/markdown-floating-toc.d.ts +1 -0
  87. package/dist/docs/candidates/markdown-floating-toc.js +1 -0
  88. package/dist/docs/docs-anki-import.d.ts +34 -0
  89. package/dist/docs/docs-anki-import.js +516 -0
  90. package/dist/docs/docs-book-view-model.d.ts +9 -0
  91. package/dist/docs/docs-book-view-model.js +71 -0
  92. package/dist/docs/docs-card-answer-markdown.d.ts +1 -0
  93. package/dist/docs/docs-card-answer-markdown.js +63 -0
  94. package/dist/docs/docs-card-display.d.ts +10 -0
  95. package/dist/docs/docs-card-display.js +18 -0
  96. package/dist/docs/docs-display-focus.d.ts +7 -0
  97. package/dist/docs/docs-display-focus.js +42 -0
  98. package/dist/docs/docs-document-surface.d.ts +7 -0
  99. package/dist/docs/docs-document-surface.js +25 -0
  100. package/dist/docs/docs-folder-directory.d.ts +21 -0
  101. package/dist/docs/docs-folder-directory.js +56 -0
  102. package/dist/docs/docs-link-mode.d.ts +16 -0
  103. package/dist/docs/docs-link-mode.js +94 -0
  104. package/dist/docs/docs-workspace-helpers.d.ts +25 -0
  105. package/dist/docs/docs-workspace-helpers.js +195 -0
  106. package/dist/docs/docs.tokens.css +13 -0
  107. package/dist/docs/import-anki-package.d.ts +10 -0
  108. package/dist/docs/import-anki-package.js +30 -0
  109. package/dist/docs/lapis-markdown-extensions.d.ts +9 -0
  110. package/dist/docs/lapis-markdown-extensions.js +128 -0
  111. package/dist/docs/pin-reading-chrome.d.ts +4 -0
  112. package/dist/docs/pin-reading-chrome.js +32 -0
  113. package/dist/docs/sidebar/DocsFoldersSidebar.svelte +134 -0
  114. package/dist/docs/sidebar/DocsFoldersSidebar.svelte.d.ts +15 -0
  115. package/dist/docs/sidebar/DocsLinksSidebar.svelte +105 -0
  116. package/dist/docs/sidebar/DocsLinksSidebar.svelte.d.ts +11 -0
  117. package/dist/docs/sidebar/DocsSidebar.css +346 -0
  118. package/dist/docs/sidebar/DocsSidebar.svelte +430 -0
  119. package/dist/docs/sidebar/DocsSidebar.svelte.d.ts +18 -0
  120. package/dist/docs/sidebar/DocsSidebarHost.svelte +139 -0
  121. package/dist/docs/sidebar/DocsSidebarHost.svelte.d.ts +12 -0
  122. package/dist/docs/sidebar/DocsTagsSidebar.svelte +176 -0
  123. package/dist/docs/sidebar/DocsTagsSidebar.svelte.d.ts +12 -0
  124. package/dist/docs/sidebar/docs-book-note-tree.d.ts +23 -0
  125. package/dist/docs/sidebar/docs-book-note-tree.js +88 -0
  126. package/dist/docs/sidebar/docs-note-sort.d.ts +26 -0
  127. package/dist/docs/sidebar/docs-note-sort.js +54 -0
  128. package/dist/docs/sidebar/docs-sidebar-filters.d.ts +17 -0
  129. package/dist/docs/sidebar/docs-sidebar-filters.js +74 -0
  130. package/dist/docs/sidebar/docs-sidebar-ui-storage.d.ts +24 -0
  131. package/dist/docs/sidebar/docs-sidebar-ui-storage.js +87 -0
  132. package/dist/docs/sidebar/docs-source-folder-tree.d.ts +16 -0
  133. package/dist/docs/sidebar/docs-source-folder-tree.js +143 -0
  134. package/dist/docs/sidebar/docs-tag-tree.d.ts +17 -0
  135. package/dist/docs/sidebar/docs-tag-tree.js +84 -0
  136. package/dist/docs-cards-view.d.ts +18 -0
  137. package/dist/docs-cards-view.js +52 -0
  138. package/dist/docs-document-view.d.ts +24 -0
  139. package/dist/docs-document-view.js +127 -0
  140. package/dist/docs-document-workspace.svelte +215 -0
  141. package/dist/docs-document-workspace.svelte.d.ts +16 -0
  142. package/dist/docs-index.d.ts +5 -0
  143. package/dist/docs-index.js +49 -0
  144. package/dist/docs-path.d.ts +6 -0
  145. package/dist/docs-path.js +10 -0
  146. package/dist/docs-plugin.d.ts +21 -0
  147. package/dist/docs-plugin.js +140 -0
  148. package/dist/docs-repository.d.ts +15 -0
  149. package/dist/docs-repository.js +75 -0
  150. package/dist/docs-review-view.d.ts +18 -0
  151. package/dist/docs-review-view.js +52 -0
  152. package/dist/docs-settings-tab.d.ts +8 -0
  153. package/dist/docs-settings-tab.js +25 -0
  154. package/dist/docs-settings.d.ts +17 -0
  155. package/dist/docs-settings.js +38 -0
  156. package/dist/docs-view.d.ts +22 -0
  157. package/dist/docs-view.js +51 -0
  158. package/dist/docs-workspace.svelte +394 -0
  159. package/dist/docs-workspace.svelte.d.ts +15 -0
  160. package/dist/index.d.ts +12 -0
  161. package/dist/index.js +12 -0
  162. package/dist/model/book.d.ts +6 -0
  163. package/dist/model/book.js +101 -0
  164. package/dist/model/coding-runtime.d.ts +4 -0
  165. package/dist/model/coding-runtime.js +9 -0
  166. package/dist/model/docs-card-context.d.ts +32 -0
  167. package/dist/model/docs-card-context.js +89 -0
  168. package/dist/model/docs-card-preview-stack-motion.d.ts +51 -0
  169. package/dist/model/docs-card-preview-stack-motion.js +94 -0
  170. package/dist/model/docs-media-context.d.ts +9 -0
  171. package/dist/model/docs-media-context.js +18 -0
  172. package/dist/model/docs-note-list.d.ts +8 -0
  173. package/dist/model/docs-note-list.js +25 -0
  174. package/dist/model/docs-relative-media.d.ts +30 -0
  175. package/dist/model/docs-relative-media.js +116 -0
  176. package/dist/model/docs-review-constants.d.ts +4 -0
  177. package/dist/model/docs-review-constants.js +13 -0
  178. package/dist/model/fsrs.d.ts +14 -0
  179. package/dist/model/fsrs.js +153 -0
  180. package/dist/model/graph.d.ts +12 -0
  181. package/dist/model/graph.js +169 -0
  182. package/dist/model/index.d.ts +14 -0
  183. package/dist/model/index.js +14 -0
  184. package/dist/model/markdown-normalize.d.ts +11 -0
  185. package/dist/model/markdown-normalize.js +755 -0
  186. package/dist/model/markdown.d.ts +167 -0
  187. package/dist/model/markdown.js +365 -0
  188. package/dist/model/sample.d.ts +7 -0
  189. package/dist/model/sample.js +524 -0
  190. package/dist/model/types.d.ts +328 -0
  191. package/dist/model/types.js +1 -0
  192. package/dist/model/workspace.d.ts +6 -0
  193. package/dist/model/workspace.js +81 -0
  194. package/dist/storybook.css +52 -0
  195. package/dist/styles.css +1 -0
  196. package/manifest.json +11 -0
  197. package/package.json +147 -4
@@ -0,0 +1,12 @@
1
+ type TablePatch = {
2
+ columns: string[];
3
+ rows: string[][];
4
+ };
5
+ type $$ComponentProps = {
6
+ columns?: string[];
7
+ rows?: string[][];
8
+ onChange?: (table: TablePatch) => void;
9
+ };
10
+ declare const StructuredTableEditor: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type StructuredTableEditor = ReturnType<typeof StructuredTableEditor>;
12
+ export default StructuredTableEditor;
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ /**
3
+ * DESIGN_CORE_CANDIDATE: TagEditor is a thin ChipAutocomplete wrapper.
4
+ * Prefer promoting to design-core/forms when shared consumers need it.
5
+ */
6
+ import ChipAutocomplete from "@lapismd/design-core/forms/ChipAutocomplete.svelte";
7
+
8
+ let {
9
+ value = [],
10
+ suggestions = [],
11
+ label = "Tags",
12
+ showLabel = true,
13
+ placeholder = "Add tag...",
14
+ id = undefined,
15
+ embedded = false,
16
+ uppercase = true,
17
+ onChange = () => {}
18
+ }: {
19
+ value?: string[];
20
+ suggestions?: string[];
21
+ label?: string;
22
+ showLabel?: boolean;
23
+ placeholder?: string;
24
+ id?: string;
25
+ embedded?: boolean;
26
+ uppercase?: boolean;
27
+ onChange?: (tags: string[]) => void | Promise<void>;
28
+ } = $props();
29
+ </script>
30
+
31
+ <ChipAutocomplete {value} {suggestions} {label} {showLabel} {placeholder} {id} {embedded} {uppercase} {onChange} />
@@ -0,0 +1,14 @@
1
+ type $$ComponentProps = {
2
+ value?: string[];
3
+ suggestions?: string[];
4
+ label?: string;
5
+ showLabel?: boolean;
6
+ placeholder?: string;
7
+ id?: string;
8
+ embedded?: boolean;
9
+ uppercase?: boolean;
10
+ onChange?: (tags: string[]) => void | Promise<void>;
11
+ };
12
+ declare const TagEditor: import("svelte").Component<$$ComponentProps, {}, "">;
13
+ type TagEditor = ReturnType<typeof TagEditor>;
14
+ export default TagEditor;
@@ -0,0 +1,112 @@
1
+ <script lang="ts">
2
+ /**
3
+ * DESIGN_CORE_CANDIDATE: WorkspaceHistoryControls — ported for Docs; promote to design-core/forms later.
4
+ */
5
+ import ArrowLeftIcon from '@lucide/svelte/icons/arrow-left';
6
+ import ArrowRightIcon from '@lucide/svelte/icons/arrow-right';
7
+
8
+ let {
9
+ ariaLabel = 'Workspace history navigation',
10
+ class: className = '',
11
+ onNavigate = defaultNavigate
12
+ }: {
13
+ ariaLabel?: string;
14
+ class?: string;
15
+ onNavigate?: (direction: -1 | 1) => void | Promise<void>;
16
+ } = $props();
17
+
18
+ let pointerActionHandled = false;
19
+
20
+ function defaultNavigate(direction: -1 | 1) {
21
+ if (typeof window === 'undefined') return;
22
+ window.history.go(direction);
23
+ }
24
+
25
+ function runPointerAction(event: PointerEvent, direction: -1 | 1) {
26
+ pointerActionHandled = true;
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ void onNavigate(direction);
30
+ setTimeout(() => {
31
+ pointerActionHandled = false;
32
+ }, 0);
33
+ }
34
+
35
+ function runKeyboardAction(event: MouseEvent, direction: -1 | 1) {
36
+ event.stopPropagation();
37
+ if (pointerActionHandled) return;
38
+ void onNavigate(direction);
39
+ }
40
+ </script>
41
+
42
+ <div
43
+ class={`workspace-history-controls topbar-history-controls ${className}`.trim()}
44
+ role="group"
45
+ aria-label={ariaLabel}
46
+ >
47
+ <button
48
+ type="button"
49
+ aria-label="Go back"
50
+ title="Go back"
51
+ onpointerdown={(event) => runPointerAction(event, -1)}
52
+ onclick={(event) => runKeyboardAction(event, -1)}
53
+ >
54
+ <ArrowLeftIcon aria-hidden="true" />
55
+ </button>
56
+ <button
57
+ type="button"
58
+ aria-label="Go forward"
59
+ title="Go forward"
60
+ onpointerdown={(event) => runPointerAction(event, 1)}
61
+ onclick={(event) => runKeyboardAction(event, 1)}
62
+ >
63
+ <ArrowRightIcon aria-hidden="true" />
64
+ </button>
65
+ </div>
66
+
67
+ <style>
68
+ .workspace-history-controls.topbar-history-controls {
69
+ display: inline-flex;
70
+ flex: 0 0 auto;
71
+ align-self: center;
72
+ inline-size: max-content;
73
+ min-inline-size: max-content;
74
+ overflow: hidden;
75
+ border: 1px solid var(--workspace-history-border, var(--border));
76
+ border-radius: 0.45rem;
77
+ background: var(--workspace-history-background, var(--background));
78
+ box-shadow: 0 1px 2px var(--workspace-history-shadow, rgb(0 0 0 / 0.08));
79
+ }
80
+
81
+ .workspace-history-controls.topbar-history-controls button {
82
+ display: grid;
83
+ flex: 0 0 2rem;
84
+ width: 2rem;
85
+ height: 2rem;
86
+ min-height: 2rem;
87
+ place-items: center;
88
+ border: 0;
89
+ border-radius: 0;
90
+ background: transparent;
91
+ color: inherit;
92
+ cursor: pointer;
93
+ font: inherit;
94
+ padding: 0;
95
+ }
96
+
97
+ .workspace-history-controls button:hover,
98
+ .workspace-history-controls button:focus-visible {
99
+ outline: 0;
100
+ background: var(
101
+ --workspace-history-hover-background,
102
+ color-mix(in srgb, var(--muted-foreground) 10%, transparent)
103
+ );
104
+ color: var(--workspace-history-hover-foreground, currentColor);
105
+ }
106
+
107
+ .workspace-history-controls :global(svg) {
108
+ width: 1rem;
109
+ height: 1rem;
110
+ flex: none;
111
+ }
112
+ </style>
@@ -0,0 +1,8 @@
1
+ type $$ComponentProps = {
2
+ ariaLabel?: string;
3
+ class?: string;
4
+ onNavigate?: (direction: -1 | 1) => void | Promise<void>;
5
+ };
6
+ declare const WorkspaceHistoryControls: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type WorkspaceHistoryControls = ReturnType<typeof WorkspaceHistoryControls>;
8
+ export default WorkspaceHistoryControls;
@@ -0,0 +1,151 @@
1
+ .markdown-floating-toc {
2
+ position: absolute;
3
+ top: 50%;
4
+ right: max(
5
+ calc(0.8rem + var(--markdown-floating-toc-scrollbar-offset, 1rem)),
6
+ calc(env(safe-area-inset-right) + var(--markdown-floating-toc-scrollbar-offset, 1rem))
7
+ );
8
+ z-index: 35;
9
+ width: var(--markdown-floating-toc-gutter, 1.45rem);
10
+ min-height: min(68vh, max(5rem, calc(var(--toc-heading-count, 2) * 0.82rem)));
11
+ transform: translateY(-50%);
12
+ pointer-events: auto;
13
+ }
14
+
15
+ .markdown-floating-toc.is-open {
16
+ width: calc(14rem + var(--markdown-floating-toc-gutter, 1.45rem) + 0.45rem);
17
+ }
18
+
19
+ .markdown-floating-toc__rail {
20
+ position: absolute;
21
+ top: 50%;
22
+ right: 0;
23
+ display: flex;
24
+ width: var(--markdown-floating-toc-gutter, 1.45rem);
25
+ max-height: min(68vh, max(5rem, calc(var(--toc-heading-count, 2) * 0.82rem)));
26
+ flex-direction: column;
27
+ align-items: flex-end;
28
+ justify-content: center;
29
+ gap: 0.55rem;
30
+ overflow: hidden;
31
+ transform: translateY(-50%);
32
+ border: 0;
33
+ background: transparent;
34
+ cursor: pointer;
35
+ padding: 0;
36
+ opacity: 0.72;
37
+ }
38
+
39
+ .markdown-floating-toc__rail-marker {
40
+ display: flex;
41
+ width: var(--markdown-floating-toc-gutter, 1.45rem);
42
+ height: 0.36rem;
43
+ align-items: center;
44
+ justify-content: flex-end;
45
+ border: 0;
46
+ background: transparent;
47
+ cursor: pointer;
48
+ padding: 0;
49
+ }
50
+
51
+ .markdown-floating-toc__rail-line {
52
+ width: var(--toc-marker-width, 1rem);
53
+ height: 0.16rem;
54
+ flex: 0 0 auto;
55
+ border-radius: 999px;
56
+ background: color-mix(in srgb, var(--kanban-muted, var(--docs-muted, rgb(100 116 139))) 62%, transparent);
57
+ }
58
+
59
+ .markdown-floating-toc__rail:hover,
60
+ .markdown-floating-toc__rail:focus-within,
61
+ .markdown-floating-toc.is-open .markdown-floating-toc__rail {
62
+ opacity: 1;
63
+ outline: 0;
64
+ transform: translateY(-50%) translateX(-0.08rem);
65
+ }
66
+
67
+ .markdown-floating-toc__rail-marker:focus-visible {
68
+ outline: 0;
69
+ }
70
+
71
+ .markdown-floating-toc__rail-marker:hover .markdown-floating-toc__rail-line,
72
+ .markdown-floating-toc__rail-marker:focus-visible .markdown-floating-toc__rail-line,
73
+ .markdown-floating-toc__rail-line.is-active {
74
+ width: calc(var(--toc-marker-width, 1rem) + 0.18rem);
75
+ height: 0.22rem;
76
+ background: var(--card-color, var(--column-color, var(--kanban-accent, var(--docs-brand, rgb(14 165 233)))));
77
+ }
78
+
79
+ .markdown-floating-toc__panel {
80
+ position: absolute;
81
+ top: 50%;
82
+ right: calc(var(--markdown-floating-toc-gutter, 1.45rem) + 0.45rem);
83
+ width: 14rem;
84
+ max-height: min(60vh, 24rem);
85
+ overflow: auto;
86
+ transform: translateY(-50%);
87
+ border: 1px solid color-mix(in srgb, var(--kanban-border, var(--docs-border, rgb(226 232 240))) 86%, transparent);
88
+ border-radius: 0.65rem;
89
+ background: color-mix(in srgb, var(--kanban-card, var(--docs-surface, rgb(255 255 255))) 96%, transparent);
90
+ box-shadow: 0 18px 45px color-mix(in srgb, var(--kanban-card-foreground, rgb(15 23 42)) 16%, transparent);
91
+ padding: 0.55rem;
92
+ }
93
+
94
+ .markdown-floating-toc__eyebrow {
95
+ margin: 0 0 0.35rem;
96
+ color: var(--kanban-muted, var(--docs-muted));
97
+ font-size: 0.68rem;
98
+ font-weight: 850;
99
+ letter-spacing: 0;
100
+ }
101
+
102
+ .markdown-floating-toc__panel ol {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 0.12rem;
106
+ margin: 0;
107
+ padding: 0;
108
+ list-style: none;
109
+ }
110
+
111
+ .markdown-floating-toc__item {
112
+ display: block;
113
+ width: 100%;
114
+ border: 0;
115
+ border-radius: 0.35rem;
116
+ background: transparent;
117
+ color: var(--kanban-card-foreground, var(--foreground, rgb(15 23 42)));
118
+ cursor: pointer;
119
+ font: inherit;
120
+ font-size: 0.78rem;
121
+ font-weight: 700;
122
+ letter-spacing: 0;
123
+ line-height: 1.25;
124
+ overflow-wrap: anywhere;
125
+ padding: 0.38rem 0.42rem 0.38rem calc(0.42rem + var(--toc-indent, 0rem));
126
+ text-align: left;
127
+ }
128
+
129
+ .markdown-floating-toc__item:hover,
130
+ .markdown-floating-toc__item:focus-visible,
131
+ .markdown-floating-toc__item.is-active {
132
+ outline: 0;
133
+ background: color-mix(
134
+ in srgb,
135
+ var(--card-color, var(--column-color, var(--kanban-accent, var(--docs-brand, rgb(14 165 233))))) 10%,
136
+ transparent
137
+ );
138
+ color: var(--card-color, var(--column-color, var(--kanban-accent, var(--docs-brand, rgb(14 165 233)))));
139
+ }
140
+
141
+ @media (max-width: 700px) {
142
+ .markdown-floating-toc {
143
+ display: none;
144
+ }
145
+ }
146
+
147
+ @media (prefers-reduced-motion: reduce) {
148
+ .markdown-floating-toc__rail {
149
+ transition: none;
150
+ }
151
+ }
@@ -0,0 +1 @@
1
+ export type MarkdownFloatingTocMode = "auto" | "on" | "off" | "always";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { type DocsNote, type DocsWorkspace } from '../model';
2
+ export type AnkiImportSummary = {
3
+ deckCount: number;
4
+ cardCount: number;
5
+ mediaCount: number;
6
+ };
7
+ export type ImportedAnkiNoteSummary = {
8
+ id: string;
9
+ title: string;
10
+ sourcePath: string;
11
+ cardCount: number;
12
+ mediaCount: number;
13
+ };
14
+ export type AnkiImportResult = {
15
+ summary: AnkiImportSummary;
16
+ warnings: string[];
17
+ importedNotes: ImportedAnkiNoteSummary[];
18
+ workspace?: DocsWorkspace;
19
+ };
20
+ export type AnkiImportOptions = {
21
+ bytes: Uint8Array;
22
+ filename?: string;
23
+ tags?: string[];
24
+ dryRun?: boolean;
25
+ docsRoot?: string;
26
+ now?: Date;
27
+ existingIds?: Iterable<string>;
28
+ writeNote?: (note: DocsNote) => Promise<void>;
29
+ writeMedia?: (note: DocsNote, file: {
30
+ filename: string;
31
+ bytes: Uint8Array;
32
+ }) => Promise<void>;
33
+ };
34
+ export declare function importAnkiPackage(options: AnkiImportOptions): Promise<AnkiImportResult>;