@lapis-notes/history 0.1.2 → 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 (334) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE.md +3 -7
  3. package/README.md +2 -2
  4. package/dist/history-compare-panel.css +28 -6
  5. package/dist/history-compare-panel.svelte +115 -108
  6. package/dist/repository/NOTICE.md +11 -0
  7. package/dist/repository/components/RepositoryAuthorAvatar.svelte +77 -0
  8. package/dist/repository/components/RepositoryAuthorAvatar.svelte.d.ts +11 -0
  9. package/dist/repository/components/RepositoryBackupStatus.svelte +236 -0
  10. package/dist/repository/components/RepositoryBackupStatus.svelte.d.ts +11 -0
  11. package/dist/repository/components/RepositoryChangedFiles.svelte +104 -0
  12. package/dist/repository/components/RepositoryChangedFiles.svelte.d.ts +13 -0
  13. package/dist/repository/components/RepositoryCommitMessage.svelte +93 -0
  14. package/dist/repository/components/RepositoryCommitMessage.svelte.d.ts +6 -0
  15. package/dist/repository/components/RepositoryCommitPicker.svelte +205 -0
  16. package/dist/repository/components/RepositoryCommitPicker.svelte.d.ts +17 -0
  17. package/dist/repository/components/RepositoryComparisonBar.svelte +71 -0
  18. package/dist/repository/components/RepositoryComparisonBar.svelte.d.ts +9 -0
  19. package/dist/repository/components/RepositoryComparisonTime.svelte +32 -0
  20. package/dist/repository/components/RepositoryComparisonTime.svelte.d.ts +6 -0
  21. package/dist/repository/components/RepositoryDiff.svelte +56 -0
  22. package/dist/repository/components/RepositoryDiff.svelte.d.ts +11 -0
  23. package/dist/repository/components/RepositoryDiffColumn.svelte +78 -0
  24. package/dist/repository/components/RepositoryDiffColumn.svelte.d.ts +14 -0
  25. package/dist/repository/components/RepositoryDiffControls.svelte +117 -0
  26. package/dist/repository/components/RepositoryDiffControls.svelte.d.ts +8 -0
  27. package/dist/repository/components/RepositoryFileHistory.svelte +170 -0
  28. package/dist/repository/components/RepositoryFileHistory.svelte.d.ts +10 -0
  29. package/dist/repository/components/RepositoryFileTitle.svelte +30 -0
  30. package/dist/repository/components/RepositoryFileTitle.svelte.d.ts +6 -0
  31. package/dist/repository/components/RepositoryGraph.svelte +216 -0
  32. package/dist/repository/components/RepositoryGraph.svelte.d.ts +19 -0
  33. package/dist/repository/components/RepositoryGraphSvg.svelte +110 -0
  34. package/dist/repository/components/RepositoryGraphSvg.svelte.d.ts +11 -0
  35. package/dist/repository/components/RepositoryIdentifiers.svelte +221 -0
  36. package/dist/repository/components/RepositoryIdentifiers.svelte.d.ts +15 -0
  37. package/dist/repository/components/RepositoryLogHeader.svelte +90 -0
  38. package/dist/repository/components/RepositoryLogHeader.svelte.d.ts +23 -0
  39. package/dist/repository/components/RepositoryOperationArguments.svelte +52 -0
  40. package/dist/repository/components/RepositoryOperationArguments.svelte.d.ts +6 -0
  41. package/dist/repository/components/RepositoryOperationColumn.svelte +163 -0
  42. package/dist/repository/components/RepositoryOperationColumn.svelte.d.ts +11 -0
  43. package/dist/repository/components/RepositoryOperationFiles.svelte +245 -0
  44. package/dist/repository/components/RepositoryOperationFiles.svelte.d.ts +14 -0
  45. package/dist/repository/components/RepositoryOperationMessage.svelte +169 -0
  46. package/dist/repository/components/RepositoryOperationMessage.svelte.d.ts +10 -0
  47. package/dist/repository/components/RepositoryOperationOption.svelte +183 -0
  48. package/dist/repository/components/RepositoryOperationOption.svelte.d.ts +10 -0
  49. package/dist/repository/components/RepositoryOperationParentPicker.svelte +188 -0
  50. package/dist/repository/components/RepositoryOperationParentPicker.svelte.d.ts +14 -0
  51. package/dist/repository/components/RepositoryOperationPinPicker.svelte +170 -0
  52. package/dist/repository/components/RepositoryOperationPinPicker.svelte.d.ts +13 -0
  53. package/dist/repository/components/RepositoryOperationRail.svelte +136 -0
  54. package/dist/repository/components/RepositoryOperationRail.svelte.d.ts +9 -0
  55. package/dist/repository/components/RepositoryOperationTarget.svelte +99 -0
  56. package/dist/repository/components/RepositoryOperationTarget.svelte.d.ts +8 -0
  57. package/dist/repository/components/RepositoryOperations.svelte +199 -0
  58. package/dist/repository/components/RepositoryOperations.svelte.d.ts +12 -0
  59. package/dist/repository/components/RepositoryPanel.svelte +207 -0
  60. package/dist/repository/components/RepositoryPanel.svelte.d.ts +15 -0
  61. package/dist/repository/components/RepositoryParentSummary.svelte +52 -0
  62. package/dist/repository/components/RepositoryParentSummary.svelte.d.ts +10 -0
  63. package/dist/repository/components/RepositoryPickerSearch.svelte +51 -0
  64. package/dist/repository/components/RepositoryPickerSearch.svelte.d.ts +11 -0
  65. package/dist/repository/components/RepositoryRestoreDialog.svelte +81 -0
  66. package/dist/repository/components/RepositoryRestoreDialog.svelte.d.ts +7 -0
  67. package/dist/repository/components/RepositoryRevisionActions.svelte +53 -0
  68. package/dist/repository/components/RepositoryRevisionActions.svelte.d.ts +9 -0
  69. package/dist/repository/components/RepositoryRevisionFiles.svelte +110 -0
  70. package/dist/repository/components/RepositoryRevisionFiles.svelte.d.ts +14 -0
  71. package/dist/repository/components/RepositoryRevisionOption.svelte +60 -0
  72. package/dist/repository/components/RepositoryRevisionOption.svelte.d.ts +9 -0
  73. package/dist/repository/components/RepositoryRevisionPicker.svelte +165 -0
  74. package/dist/repository/components/RepositoryRevisionPicker.svelte.d.ts +14 -0
  75. package/dist/repository/components/RepositoryRevisions.svelte +115 -0
  76. package/dist/repository/components/RepositoryRevisions.svelte.d.ts +20 -0
  77. package/dist/repository/components/RepositoryShell.svelte +44 -0
  78. package/dist/repository/components/RepositoryShell.svelte.d.ts +11 -0
  79. package/dist/repository/components/RepositorySkeleton.svelte +138 -0
  80. package/dist/repository/components/RepositorySkeleton.svelte.d.ts +7 -0
  81. package/dist/repository/components/RepositorySourcePicker.svelte +114 -0
  82. package/dist/repository/components/RepositorySourcePicker.svelte.d.ts +7 -0
  83. package/dist/repository/components/RepositoryUpstreamActions.svelte +125 -0
  84. package/dist/repository/components/RepositoryUpstreamActions.svelte.d.ts +8 -0
  85. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte +290 -0
  86. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte.d.ts +11 -0
  87. package/dist/repository/components/RepositoryWorkspacePicker.svelte +158 -0
  88. package/dist/repository/components/RepositoryWorkspacePicker.svelte.d.ts +11 -0
  89. package/dist/repository/components/backup/AdoptionSettings.svelte +95 -0
  90. package/dist/repository/components/backup/AdoptionSettings.svelte.d.ts +7 -0
  91. package/dist/repository/components/backup/BackupCard.svelte +79 -0
  92. package/dist/repository/components/backup/BackupCard.svelte.d.ts +14 -0
  93. package/dist/repository/components/backup/BackupField.svelte +45 -0
  94. package/dist/repository/components/backup/BackupField.svelte.d.ts +10 -0
  95. package/dist/repository/components/backup/BackupSelect.svelte +71 -0
  96. package/dist/repository/components/backup/BackupSelect.svelte.d.ts +35 -0
  97. package/dist/repository/components/backup/BackupSettings.svelte +122 -0
  98. package/dist/repository/components/backup/BackupSettings.svelte.d.ts +18 -0
  99. package/dist/repository/components/backup/BackupSettingsField.svelte +13 -0
  100. package/dist/repository/components/backup/BackupSettingsField.svelte.d.ts +4 -0
  101. package/dist/repository/components/backup/ForgeAccounts.svelte +231 -0
  102. package/dist/repository/components/backup/ForgeAccounts.svelte.d.ts +9 -0
  103. package/dist/repository/components/backup/ForgeAuthorization.svelte +267 -0
  104. package/dist/repository/components/backup/ForgeAuthorization.svelte.d.ts +9 -0
  105. package/dist/repository/components/backup/ForgeIcon.svelte +21 -0
  106. package/dist/repository/components/backup/ForgeIcon.svelte.d.ts +7 -0
  107. package/dist/repository/components/backup/PublicationRecovery.svelte +129 -0
  108. package/dist/repository/components/backup/PublicationRecovery.svelte.d.ts +11 -0
  109. package/dist/repository/components/backup/RemoteSettings.svelte +288 -0
  110. package/dist/repository/components/backup/RemoteSettings.svelte.d.ts +11 -0
  111. package/dist/repository/components/backup/RepositorySettingsPage.svelte +51 -0
  112. package/dist/repository/components/backup/RepositorySettingsPage.svelte.d.ts +4 -0
  113. package/dist/repository/components/backup/StorageSettings.svelte +158 -0
  114. package/dist/repository/components/backup/StorageSettings.svelte.d.ts +7 -0
  115. package/dist/repository/components/backup/SyncConflictEditor.svelte +158 -0
  116. package/dist/repository/components/backup/SyncConflictEditor.svelte.d.ts +9 -0
  117. package/dist/repository/components/backup/SyncSettings.svelte +97 -0
  118. package/dist/repository/components/backup/SyncSettings.svelte.d.ts +9 -0
  119. package/dist/repository/components/backup/adoption-settings.d.ts +7 -0
  120. package/dist/repository/components/backup/adoption-settings.js +42 -0
  121. package/dist/repository/components/backup/backup-settings.d.ts +35 -0
  122. package/dist/repository/components/backup/backup-settings.js +96 -0
  123. package/dist/repository/components/backup/forge-icons.d.ts +10 -0
  124. package/dist/repository/components/backup/forge-icons.js +11 -0
  125. package/dist/repository/components/backup/remote-restore.d.ts +3 -0
  126. package/dist/repository/components/backup/remote-restore.js +17 -0
  127. package/dist/repository/components/backup/storage-settings.d.ts +8 -0
  128. package/dist/repository/components/backup/storage-settings.js +23 -0
  129. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte +212 -0
  130. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte.d.ts +14 -0
  131. package/dist/repository/components/blame/RepositoryBlameGroup.svelte +189 -0
  132. package/dist/repository/components/blame/RepositoryBlameGroup.svelte.d.ts +20 -0
  133. package/dist/repository/components/blame/RepositoryBlamePanel.svelte +148 -0
  134. package/dist/repository/components/blame/RepositoryBlamePanel.svelte.d.ts +13 -0
  135. package/dist/repository/components/blame/RepositoryBlameRows.svelte +137 -0
  136. package/dist/repository/components/blame/RepositoryBlameRows.svelte.d.ts +32 -0
  137. package/dist/repository/components/blame/RepositoryBlameView.svelte +121 -0
  138. package/dist/repository/components/blame/RepositoryBlameView.svelte.d.ts +16 -0
  139. package/dist/repository/components/blame/blame-view.d.ts +16 -0
  140. package/dist/repository/components/blame/blame-view.js +73 -0
  141. package/dist/repository/components/blame/editor-actions.d.ts +3 -0
  142. package/dist/repository/components/blame/editor-actions.js +53 -0
  143. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte +83 -0
  144. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte.d.ts +13 -0
  145. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte +93 -0
  146. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte.d.ts +16 -0
  147. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte +84 -0
  148. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte.d.ts +21 -0
  149. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte +35 -0
  150. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte.d.ts +9 -0
  151. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte +133 -0
  152. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte.d.ts +12 -0
  153. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte +105 -0
  154. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte.d.ts +23 -0
  155. package/dist/repository/components/conflicts/RepositoryConflictText.svelte +104 -0
  156. package/dist/repository/components/conflicts/RepositoryConflictText.svelte.d.ts +26 -0
  157. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte +52 -0
  158. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte.d.ts +7 -0
  159. package/dist/repository/components/conflicts/repository-conflict-file-tree.css +73 -0
  160. package/dist/repository/components/conflicts/repository-conflicts.css +125 -0
  161. package/dist/repository/components/file-history-view.d.ts +15 -0
  162. package/dist/repository/components/file-history-view.js +110 -0
  163. package/dist/repository/components/operation-view.d.ts +16 -0
  164. package/dist/repository/components/operation-view.js +95 -0
  165. package/dist/repository/components/repository-backup.d.ts +22 -0
  166. package/dist/repository/components/repository-backup.js +75 -0
  167. package/dist/repository/components/repository-column-chrome.css +35 -0
  168. package/dist/repository/components/repository-commit-picker.css +55 -0
  169. package/dist/repository/components/repository-feedback.d.ts +7 -0
  170. package/dist/repository/components/repository-feedback.js +40 -0
  171. package/dist/repository/components/repository-identifiers.css +199 -0
  172. package/dist/repository/components/repository-navigation.d.ts +4 -0
  173. package/dist/repository/components/repository-navigation.js +16 -0
  174. package/dist/repository/components/repository-operation-column.css +112 -0
  175. package/dist/repository/components/repository-picker-options.css +11 -0
  176. package/dist/repository/components/repository-plugin.d.ts +33 -0
  177. package/dist/repository/components/repository-plugin.js +191 -0
  178. package/dist/repository/components/repository-review-identifiers.css +50 -0
  179. package/dist/repository/components/repository-status.d.ts +13 -0
  180. package/dist/repository/components/repository-status.js +227 -0
  181. package/dist/repository/components/repository-sync.d.ts +13 -0
  182. package/dist/repository/components/repository-sync.js +93 -0
  183. package/dist/repository/components/repository-tools.d.ts +3 -0
  184. package/dist/repository/components/repository-tools.js +13 -0
  185. package/dist/repository/components/repository-view.d.ts +16 -0
  186. package/dist/repository/components/repository-view.js +140 -0
  187. package/dist/repository/components/restore-controller.d.ts +9 -0
  188. package/dist/repository/components/restore-controller.js +44 -0
  189. package/dist/repository/components/search/search-provider.d.ts +3 -0
  190. package/dist/repository/components/search/search-provider.js +185 -0
  191. package/dist/repository/controllers/adoption-controller.d.ts +29 -0
  192. package/dist/repository/controllers/adoption-controller.js +145 -0
  193. package/dist/repository/controllers/adoption.d.ts +30 -0
  194. package/dist/repository/controllers/adoption.js +21 -0
  195. package/dist/repository/controllers/ai-history.d.ts +57 -0
  196. package/dist/repository/controllers/ai-history.js +51 -0
  197. package/dist/repository/controllers/author.d.ts +2 -0
  198. package/dist/repository/controllers/author.js +11 -0
  199. package/dist/repository/controllers/background-work.d.ts +14 -0
  200. package/dist/repository/controllers/background-work.js +57 -0
  201. package/dist/repository/controllers/backup-follow.d.ts +5 -0
  202. package/dist/repository/controllers/backup-follow.js +29 -0
  203. package/dist/repository/controllers/backup.d.ts +39 -0
  204. package/dist/repository/controllers/backup.js +129 -0
  205. package/dist/repository/controllers/blame-chunks.d.ts +13 -0
  206. package/dist/repository/controllers/blame-chunks.js +51 -0
  207. package/dist/repository/controllers/blame-controller.d.ts +17 -0
  208. package/dist/repository/controllers/blame-controller.js +148 -0
  209. package/dist/repository/controllers/blame-model.d.ts +25 -0
  210. package/dist/repository/controllers/blame-model.js +31 -0
  211. package/dist/repository/controllers/blame-preferences.d.ts +3 -0
  212. package/dist/repository/controllers/blame-preferences.js +18 -0
  213. package/dist/repository/controllers/commit-cards.d.ts +4 -0
  214. package/dist/repository/controllers/commit-cards.js +38 -0
  215. package/dist/repository/controllers/conflict-menu.d.ts +2 -0
  216. package/dist/repository/controllers/conflict-menu.js +1 -0
  217. package/dist/repository/controllers/file-history-controller.d.ts +29 -0
  218. package/dist/repository/controllers/file-history-controller.js +182 -0
  219. package/dist/repository/controllers/forge-accounts.d.ts +48 -0
  220. package/dist/repository/controllers/forge-accounts.js +1 -0
  221. package/dist/repository/controllers/forge-controller.d.ts +24 -0
  222. package/dist/repository/controllers/forge-controller.js +168 -0
  223. package/dist/repository/controllers/graph/model.d.ts +20 -0
  224. package/dist/repository/controllers/graph/model.js +33 -0
  225. package/dist/repository/controllers/graph/repository-log-graph.d.ts +44 -0
  226. package/dist/repository/controllers/graph/repository-log-graph.js +182 -0
  227. package/dist/repository/controllers/graph/repository-log-lanes.d.ts +7 -0
  228. package/dist/repository/controllers/graph/repository-log-lanes.js +19 -0
  229. package/dist/repository/controllers/graph/revision-id.d.ts +3 -0
  230. package/dist/repository/controllers/graph/revision-id.js +10 -0
  231. package/dist/repository/controllers/history-canvas.d.ts +2 -0
  232. package/dist/repository/controllers/history-canvas.js +45 -0
  233. package/dist/repository/controllers/history-controller.d.ts +31 -0
  234. package/dist/repository/controllers/history-controller.js +238 -0
  235. package/dist/repository/controllers/history-files.d.ts +7 -0
  236. package/dist/repository/controllers/history-files.js +18 -0
  237. package/dist/repository/controllers/history-graph.d.ts +20 -0
  238. package/dist/repository/controllers/history-graph.js +89 -0
  239. package/dist/repository/controllers/history-index-controller.d.ts +22 -0
  240. package/dist/repository/controllers/history-index-controller.js +77 -0
  241. package/dist/repository/controllers/history-lifetime.d.ts +13 -0
  242. package/dist/repository/controllers/history-lifetime.js +40 -0
  243. package/dist/repository/controllers/history-reader.d.ts +22 -0
  244. package/dist/repository/controllers/history-reader.js +1 -0
  245. package/dist/repository/controllers/history-search-expression.d.ts +9 -0
  246. package/dist/repository/controllers/history-search-expression.js +86 -0
  247. package/dist/repository/controllers/history-selection.d.ts +5 -0
  248. package/dist/repository/controllers/history-selection.js +32 -0
  249. package/dist/repository/controllers/history-source.d.ts +10 -0
  250. package/dist/repository/controllers/history-source.js +7 -0
  251. package/dist/repository/controllers/history-state.d.ts +34 -0
  252. package/dist/repository/controllers/history-state.js +55 -0
  253. package/dist/repository/controllers/indexed-search-validation.d.ts +4 -0
  254. package/dist/repository/controllers/indexed-search-validation.js +64 -0
  255. package/dist/repository/controllers/indexed-search.d.ts +11 -0
  256. package/dist/repository/controllers/indexed-search.js +1 -0
  257. package/dist/repository/controllers/log-canvas.d.ts +2 -0
  258. package/dist/repository/controllers/log-canvas.js +25 -0
  259. package/dist/repository/controllers/native-indexed-search.d.ts +4 -0
  260. package/dist/repository/controllers/native-indexed-search.js +10 -0
  261. package/dist/repository/controllers/open-history-revision.d.ts +3 -0
  262. package/dist/repository/controllers/open-history-revision.js +8 -0
  263. package/dist/repository/controllers/operation-command.d.ts +2 -0
  264. package/dist/repository/controllers/operation-command.js +55 -0
  265. package/dist/repository/controllers/operation-controller.d.ts +33 -0
  266. package/dist/repository/controllers/operation-controller.js +267 -0
  267. package/dist/repository/controllers/operation-files.d.ts +33 -0
  268. package/dist/repository/controllers/operation-files.js +182 -0
  269. package/dist/repository/controllers/operation-graph.d.ts +17 -0
  270. package/dist/repository/controllers/operation-graph.js +50 -0
  271. package/dist/repository/controllers/operation-message.d.ts +5 -0
  272. package/dist/repository/controllers/operation-message.js +18 -0
  273. package/dist/repository/controllers/operation-metadata.d.ts +5 -0
  274. package/dist/repository/controllers/operation-metadata.js +26 -0
  275. package/dist/repository/controllers/operation-parent.d.ts +5 -0
  276. package/dist/repository/controllers/operation-parent.js +46 -0
  277. package/dist/repository/controllers/operation-state.d.ts +28 -0
  278. package/dist/repository/controllers/operation-state.js +26 -0
  279. package/dist/repository/controllers/parent-candidates.d.ts +4 -0
  280. package/dist/repository/controllers/parent-candidates.js +27 -0
  281. package/dist/repository/controllers/plugin-data.d.ts +9 -0
  282. package/dist/repository/controllers/plugin-data.js +33 -0
  283. package/dist/repository/controllers/preparation-queue.d.ts +9 -0
  284. package/dist/repository/controllers/preparation-queue.js +55 -0
  285. package/dist/repository/controllers/remote-controller.d.ts +23 -0
  286. package/dist/repository/controllers/remote-controller.js +98 -0
  287. package/dist/repository/controllers/remote.d.ts +48 -0
  288. package/dist/repository/controllers/remote.js +13 -0
  289. package/dist/repository/controllers/restore-recovery.d.ts +3 -0
  290. package/dist/repository/controllers/restore-recovery.js +32 -0
  291. package/dist/repository/controllers/restore.d.ts +66 -0
  292. package/dist/repository/controllers/restore.js +201 -0
  293. package/dist/repository/controllers/revision-comparison.d.ts +20 -0
  294. package/dist/repository/controllers/revision-comparison.js +89 -0
  295. package/dist/repository/controllers/search-controller.d.ts +19 -0
  296. package/dist/repository/controllers/search-controller.js +105 -0
  297. package/dist/repository/controllers/search-page.d.ts +2 -0
  298. package/dist/repository/controllers/search-page.js +39 -0
  299. package/dist/repository/controllers/search.d.ts +51 -0
  300. package/dist/repository/controllers/search.js +8 -0
  301. package/dist/repository/controllers/services.d.ts +7 -0
  302. package/dist/repository/controllers/services.js +24 -0
  303. package/dist/repository/controllers/storage-controller.d.ts +30 -0
  304. package/dist/repository/controllers/storage-controller.js +130 -0
  305. package/dist/repository/controllers/storage.d.ts +26 -0
  306. package/dist/repository/controllers/storage.js +1 -0
  307. package/dist/repository/controllers/sync-application.d.ts +17 -0
  308. package/dist/repository/controllers/sync-application.js +45 -0
  309. package/dist/repository/controllers/sync-controller.d.ts +31 -0
  310. package/dist/repository/controllers/sync-controller.js +300 -0
  311. package/dist/repository/controllers/sync-publication.d.ts +7 -0
  312. package/dist/repository/controllers/sync-publication.js +29 -0
  313. package/dist/repository/controllers/sync-recovery.d.ts +7 -0
  314. package/dist/repository/controllers/sync-recovery.js +27 -0
  315. package/dist/repository/controllers/sync.d.ts +62 -0
  316. package/dist/repository/controllers/sync.js +38 -0
  317. package/dist/repository/controllers/tags.d.ts +7 -0
  318. package/dist/repository/controllers/tags.js +71 -0
  319. package/dist/repository/controllers/transcript-paths.d.ts +2 -0
  320. package/dist/repository/controllers/transcript-paths.js +17 -0
  321. package/dist/repository/controllers/transcript-writers.d.ts +9 -0
  322. package/dist/repository/controllers/transcript-writers.js +37 -0
  323. package/dist/repository/controllers/working-copy-controller.d.ts +22 -0
  324. package/dist/repository/controllers/working-copy-controller.js +58 -0
  325. package/dist/repository/controllers/working-copy-status.d.ts +16 -0
  326. package/dist/repository/controllers/working-copy-status.js +57 -0
  327. package/dist/repository/controllers/workspaces.d.ts +7 -0
  328. package/dist/repository/controllers/workspaces.js +4 -0
  329. package/dist/repository/index.d.ts +9 -0
  330. package/dist/repository/index.js +6 -0
  331. package/manifest.json +12 -3
  332. package/package.json +43 -10
  333. package/registry-content/overview.md +10 -0
  334. package/registry.json +131 -2
@@ -0,0 +1,290 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import RepositoryUpstreamActions from "./RepositoryUpstreamActions.svelte";
4
+ import type { SyncController } from "../controllers/sync-controller.js";
5
+ import * as Popover from "@lapismd/design-core/shadcn/popover";
6
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
7
+ import { FileChangeStats } from "@lapismd/design-core/diff";
8
+ import { RelativeTime } from "@lapismd/design-core/shadcn/relative-time";
9
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
10
+ import GitCommitHorizontal from "@lucide/svelte/icons/git-commit-horizontal";
11
+ import RepositoryAuthorAvatar from "./RepositoryAuthorAvatar.svelte";
12
+ import RepositoryIdentifiers from "./RepositoryIdentifiers.svelte";
13
+ import { encodeJjChangeId } from "../controllers/graph/repository-log-graph.js";
14
+ import type {
15
+ WorkingCopyController,
16
+ WorkingCopyState,
17
+ } from "../controllers/working-copy-controller.js";
18
+ let {
19
+ controller,
20
+ openRevision,
21
+ copyText,
22
+ upstream,
23
+ }: {
24
+ controller: WorkingCopyController;
25
+ openRevision(operation: string, revision: string): Promise<void>;
26
+ copyText(value: string): Promise<void>;
27
+ upstream?: SyncController;
28
+ } = $props();
29
+ let statusState: WorkingCopyState = $state({ busy: true, status: "loading" });
30
+ let open = $state(false);
31
+ onMount(() =>
32
+ controller.subscribe((next) => {
33
+ statusState = next;
34
+ }),
35
+ );
36
+ const value = $derived(statusState.value);
37
+ const summaryLabel = $derived(
38
+ value
39
+ ? `${value.files} ${value.files === 1 ? "file" : "files"} ${value.lines ? `+${value.lines.additions} -${value.lines.deletions}` : "line counts unavailable"}`
40
+ : statusState.status === "loading"
41
+ ? "Loading working copy"
42
+ : "Working copy unavailable",
43
+ );
44
+ async function inspect() {
45
+ if (!value) return;
46
+ open = false;
47
+ await openRevision(value.operation, value.revision);
48
+ }
49
+ </script>
50
+
51
+ <div
52
+ class="repository-working-status"
53
+ aria-label="Repository working copy"
54
+ aria-busy={statusState.busy}
55
+ >
56
+ <Popover.Root bind:open>
57
+ <Popover.Trigger>
58
+ {#snippet child({ props })}
59
+ <button
60
+ {...props}
61
+ type="button"
62
+ class="summary"
63
+ aria-label={`Working copy details: ${summaryLabel}`}
64
+ >
65
+ <GitCommitHorizontal aria-hidden="true" />
66
+ {#if value}
67
+ <span>{value.files} {value.files === 1 ? "file" : "files"}</span>
68
+ {#if value.lines}<FileChangeStats
69
+ additions={value.lines.additions}
70
+ deletions={value.lines.deletions}
71
+ />{:else}<span>line counts unavailable</span>{/if}
72
+ {:else if statusState.status === "loading"}
73
+ <Skeleton style="height:.75rem;width:5.5rem" />
74
+ {:else}<span>Working copy unavailable</span>{/if}
75
+ </button>
76
+ {/snippet}
77
+ </Popover.Trigger>
78
+ <Popover.Content
79
+ side="top"
80
+ align="end"
81
+ collisionPadding={8}
82
+ sideOffset={6}
83
+ style="width:min(26rem,calc(100vw - 1rem));padding:0"
84
+ >
85
+ <section class="working-card" aria-label="Working copy details">
86
+ <header>
87
+ <GitCommitHorizontal aria-hidden="true" /><strong>Working copy</strong
88
+ >{#if value}<span class="workspace">{value.workspace}</span>{/if}
89
+ <RepositoryUpstreamActions
90
+ controller={upstream}
91
+ unavailable={statusState.busy}
92
+ />
93
+ </header>
94
+ {#if value}
95
+ <button type="button" class="subject" onclick={inspect}
96
+ >{value.description.split(/\r?\n/u)[0] ||
97
+ "(no description)"}</button
98
+ >
99
+ <div class="identifiers">
100
+ <RepositoryIdentifiers
101
+ {copyText}
102
+ placement="inline"
103
+ commitId={value.revision}
104
+ changeId={encodeJjChangeId(value.changeId)}
105
+ />
106
+ </div>
107
+ <div class="author">
108
+ <RepositoryAuthorAvatar
109
+ name={value.author.name}
110
+ email={value.author.email}
111
+ size="xs"
112
+ /><span>{value.author.name}</span><RelativeTime
113
+ timestamp={Number(value.author.timestamp.millis)}
114
+ />
115
+ </div>
116
+ <div class="totals">
117
+ <span
118
+ >{value.files} changed {value.files === 1
119
+ ? "file"
120
+ : "files"}</span
121
+ >{#if value.lines}<FileChangeStats
122
+ additions={value.lines.additions}
123
+ deletions={value.lines.deletions}
124
+ />{:else}<span
125
+ >Line totals unavailable for {value.uncounted}
126
+ {value.uncounted === 1 ? "file" : "files"}.</span
127
+ >{/if}
128
+ </div>
129
+ <p>
130
+ Includes unsnapshotted files and saved editor changes compared with
131
+ the working-copy parent. Editor changes appear after saving.
132
+ </p>
133
+ <button type="button" class="open-log" onclick={inspect}
134
+ >Open in JJ Log</button
135
+ >
136
+ {:else if statusState.status === "loading"}
137
+ <div class="loading" role="status" aria-label="Reading working copy">
138
+ <Skeleton style="height:1rem;width:90%" /><Skeleton
139
+ style="height:1rem;width:65%"
140
+ /><Skeleton style="height:1rem;width:80%" />
141
+ </div>
142
+ {:else}<p>
143
+ Status is unavailable. Refresh to read the current working copy.
144
+ </p>{/if}
145
+ </section>
146
+ </Popover.Content>
147
+ </Popover.Root>
148
+ <button
149
+ type="button"
150
+ class="refresh"
151
+ aria-label="Refresh working copy status"
152
+ title="Refresh working copy status"
153
+ disabled={statusState.busy}
154
+ onclick={() => controller.refresh()}
155
+ ><RefreshCw aria-hidden="true" /></button
156
+ >
157
+ </div>
158
+
159
+ <style>
160
+ .repository-working-status {
161
+ display: inline-flex;
162
+ min-height: 1.25rem;
163
+ align-items: stretch;
164
+ gap: 0;
165
+ border: 0;
166
+ background: color-mix(
167
+ in oklab,
168
+ var(--ui-workspace-muted-foreground) 6%,
169
+ var(--ui-workspace-panel)
170
+ );
171
+ border-radius: var(--radius);
172
+ font: inherit;
173
+ color: inherit;
174
+ }
175
+ button {
176
+ appearance: none;
177
+ background: transparent;
178
+ border: 0;
179
+ color: inherit;
180
+ font: inherit;
181
+ cursor: pointer;
182
+ }
183
+ button:hover {
184
+ background: var(--accent);
185
+ color: var(--accent-foreground);
186
+ }
187
+ button:focus-visible {
188
+ outline: 2px solid var(--ring);
189
+ outline-offset: 1px;
190
+ }
191
+ button:disabled {
192
+ opacity: 0.5;
193
+ cursor: default;
194
+ }
195
+ .summary {
196
+ display: inline-flex;
197
+ align-items: center;
198
+ gap: 0.35rem;
199
+ padding: 0 0.4rem;
200
+ border-radius: var(--radius) 0 0 var(--radius);
201
+ line-height: 1;
202
+ white-space: nowrap;
203
+ }
204
+ .summary :global(svg),
205
+ .refresh :global(svg),
206
+ header :global(svg) {
207
+ width: 0.8rem;
208
+ height: 0.8rem;
209
+ flex: none;
210
+ }
211
+ .refresh {
212
+ display: flex;
213
+ align-items: center;
214
+ padding: 0 0.35rem;
215
+ background: color-mix(
216
+ in oklab,
217
+ var(--ui-workspace-muted-foreground) 12%,
218
+ var(--ui-workspace-panel)
219
+ );
220
+ border-radius: 0 var(--radius) var(--radius) 0;
221
+ }
222
+ .refresh:hover:not(:disabled) {
223
+ background: var(--accent);
224
+ color: var(--accent-foreground);
225
+ }
226
+ .working-card {
227
+ font-family: var(--font-sans, sans-serif);
228
+ font-size: 0.8125rem;
229
+ color: var(--foreground);
230
+ }
231
+ header {
232
+ display: flex;
233
+ align-items: center;
234
+ gap: 0.5rem;
235
+ padding: 0.75rem 1rem;
236
+ border-bottom: 1px solid var(--border);
237
+ }
238
+ .workspace {
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ white-space: nowrap;
242
+ color: var(--muted-foreground);
243
+ }
244
+ .subject {
245
+ display: -webkit-box;
246
+ -webkit-box-orient: vertical;
247
+ -webkit-line-clamp: 2;
248
+ line-clamp: 2;
249
+ overflow: hidden;
250
+ overflow-wrap: anywhere;
251
+ text-align: left;
252
+ font-weight: 600;
253
+ margin: 0.75rem 1rem;
254
+ padding: 0;
255
+ }
256
+ .subject:hover {
257
+ color: var(--primary);
258
+ background: transparent;
259
+ text-decoration: underline;
260
+ }
261
+ .identifiers,
262
+ .author,
263
+ .totals {
264
+ display: flex;
265
+ align-items: center;
266
+ gap: 0.5rem;
267
+ margin: 0.75rem 1rem;
268
+ flex-wrap: wrap;
269
+ }
270
+ .author {
271
+ color: var(--muted-foreground);
272
+ }
273
+ p {
274
+ margin: 0.75rem 1rem;
275
+ color: var(--muted-foreground);
276
+ font-size: 0.75rem;
277
+ line-height: 1.5;
278
+ }
279
+ .open-log {
280
+ border-top: 1px solid var(--border);
281
+ padding: 0.65rem 1rem;
282
+ width: 100%;
283
+ text-align: left;
284
+ }
285
+ .loading {
286
+ display: grid;
287
+ gap: 0.75rem;
288
+ padding: 1rem;
289
+ }
290
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { SyncController } from "../controllers/sync-controller.js";
2
+ import type { WorkingCopyController } from "../controllers/working-copy-controller.js";
3
+ type $$ComponentProps = {
4
+ controller: WorkingCopyController;
5
+ openRevision(operation: string, revision: string): Promise<void>;
6
+ copyText(value: string): Promise<void>;
7
+ upstream?: SyncController;
8
+ };
9
+ declare const RepositoryWorkingCopyStatus: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryWorkingCopyStatus = ReturnType<typeof RepositoryWorkingCopyStatus>;
11
+ export default RepositoryWorkingCopyStatus;
@@ -0,0 +1,158 @@
1
+ <script lang="ts">
2
+ import { Button } from "@lapismd/design-core/shadcn/button";
3
+ import * as CommandView from "@lapismd/design-core/shadcn/command-view";
4
+ import * as Popover from "@lapismd/design-core/shadcn/popover";
5
+ import CircleCheckIcon from "@lucide/svelte/icons/circle-check";
6
+ import ChevronDownIcon from "@lucide/svelte/icons/chevron-down";
7
+ import FolderGit2Icon from "@lucide/svelte/icons/folder-git-2";
8
+ import RepositoryPickerSearch from "./RepositoryPickerSearch.svelte";
9
+ import { encodeJjChangeId } from "../controllers/graph/repository-log-graph.js";
10
+ import type { RepositoryWorkspace } from "../controllers/workspaces.js";
11
+ let {
12
+ workspaces,
13
+ selected,
14
+ disabled = false,
15
+ onOpen,
16
+ onSelect,
17
+ }: {
18
+ workspaces: readonly RepositoryWorkspace[];
19
+ selected: string | null;
20
+ disabled?: boolean;
21
+ onOpen?(): void;
22
+ onSelect(workspace: string | null): void;
23
+ } = $props();
24
+ let open = $state(false),
25
+ query = $state(""),
26
+ highlighted = $state("");
27
+ let input = $state<HTMLInputElement | null>(null);
28
+ const options = $derived([
29
+ {
30
+ value: "overview",
31
+ name: "Repository overview",
32
+ description: "Browse without workspace context",
33
+ workspace: null,
34
+ },
35
+ ...workspaces.map(({ name, commit }) => ({
36
+ value: `workspace:${name}`,
37
+ name,
38
+ description: `${encodeJjChangeId(commit.change_id).slice(0, 12)} · ${commit.description.split("\n")[0] || "No description"}`,
39
+ workspace: name,
40
+ })),
41
+ ]);
42
+ const visible = $derived(
43
+ options.filter((option) =>
44
+ `${option.name} ${option.description}`
45
+ .toLocaleLowerCase()
46
+ .includes(query.trim().toLocaleLowerCase()),
47
+ ),
48
+ );
49
+ </script>
50
+
51
+ <Popover.Root
52
+ {open}
53
+ onOpenChange={(next) => {
54
+ open = next;
55
+ if (next) {
56
+ onOpen?.();
57
+ query = "";
58
+ highlighted = selected ? `workspace:${selected}` : "overview";
59
+ }
60
+ }}
61
+ >
62
+ <Popover.Trigger
63
+ >{#snippet child({ props })}
64
+ <Button
65
+ {...props}
66
+ variant="outline"
67
+ size="sm"
68
+ class="repository-review-workspace-trigger"
69
+ role="combobox"
70
+ aria-label="Repository workspace"
71
+ title="Select workspace"
72
+ {disabled}
73
+ >
74
+ <FolderGit2Icon aria-hidden="true" /><span
75
+ >{selected ?? "Repository overview"}</span
76
+ >
77
+ <ChevronDownIcon aria-hidden="true" />
78
+ </Button>
79
+ {/snippet}</Popover.Trigger
80
+ >
81
+ <Popover.Content
82
+ align="end"
83
+ role="dialog"
84
+ aria-label="Select workspace"
85
+ style="--ui-popover-width:min(28rem,calc(100vw - 2rem));--ui-popover-padding:0;--ui-popover-gap:0"
86
+ onOpenAutoFocus={(event) => {
87
+ event.preventDefault();
88
+ input?.focus();
89
+ }}
90
+ >
91
+ <CommandView.Root
92
+ bind:value={highlighted}
93
+ label="Select workspace"
94
+ shouldFilter={false}
95
+ loop
96
+ >
97
+ <RepositoryPickerSearch
98
+ grid={false}
99
+ bind:inputRef={input}
100
+ bind:query
101
+ label="Search workspaces"
102
+ placeholder="Search loaded workspaces"
103
+ closeLabel="Close workspace selector"
104
+ />
105
+ <CommandView.List aria-label="Repository workspaces">
106
+ {#if !visible.length}<CommandView.Empty
107
+ >No matching workspaces.</CommandView.Empty
108
+ >
109
+ {:else}<CommandView.Group>
110
+ {#each visible as option (option.value)}
111
+ <CommandView.Item
112
+ value={option.value}
113
+ aria-label={option.name}
114
+ data-current={option.workspace === selected || undefined}
115
+ onSelect={() => {
116
+ open = false;
117
+ onSelect(option.workspace);
118
+ }}
119
+ >
120
+ <CommandView.ItemIcon
121
+ >{#if option.workspace === selected}<CircleCheckIcon
122
+ fill="var(--foreground)"
123
+ stroke="var(--background)"
124
+ aria-hidden="true"
125
+ />
126
+ {:else}<FolderGit2Icon
127
+ aria-hidden="true"
128
+ />{/if}</CommandView.ItemIcon
129
+ >
130
+ <CommandView.ItemLabel>{option.name}</CommandView.ItemLabel>
131
+ <CommandView.ItemDescription
132
+ >{option.description}</CommandView.ItemDescription
133
+ >
134
+ </CommandView.Item>
135
+ {/each}
136
+ </CommandView.Group>{/if}
137
+ </CommandView.List>
138
+ </CommandView.Root>
139
+ </Popover.Content>
140
+ </Popover.Root>
141
+
142
+ <style>
143
+ :global(.repository-review-workspace-trigger[data-ui-component="button"]) {
144
+ min-width: 0;
145
+ max-width: 10.5rem;
146
+ flex: 0 1 auto;
147
+ height: 1.75rem;
148
+ padding-inline: 0.45rem;
149
+ font-size: 0.75rem;
150
+ --ui-button-radius: var(--radius);
151
+ }
152
+ :global(.repository-review-workspace-trigger > span) {
153
+ min-width: 0;
154
+ overflow: hidden;
155
+ text-overflow: ellipsis;
156
+ white-space: nowrap;
157
+ }
158
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { RepositoryWorkspace } from "../controllers/workspaces.js";
2
+ type $$ComponentProps = {
3
+ workspaces: readonly RepositoryWorkspace[];
4
+ selected: string | null;
5
+ disabled?: boolean;
6
+ onOpen?(): void;
7
+ onSelect(workspace: string | null): void;
8
+ };
9
+ declare const RepositoryWorkspacePicker: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryWorkspacePicker = ReturnType<typeof RepositoryWorkspacePicker>;
11
+ export default RepositoryWorkspacePicker;
@@ -0,0 +1,95 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import BackupCard from "./BackupCard.svelte";
4
+ import { Button } from "@lapismd/design-core/shadcn/button";
5
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
6
+ import GitMerge from "@lucide/svelte/icons/git-merge";
7
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
8
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
9
+ import type { AdoptionState } from "../../controllers/adoption.js";
10
+ let { controller }: { controller: AdoptionController } = $props();
11
+ let snapshot = $state<AdoptionState>({ busy: true, phase: "loading" });
12
+ onMount(() => {
13
+ const stop = controller.subscribe((value) => (snapshot = value));
14
+ void controller.refresh();
15
+ return stop;
16
+ });
17
+ </script>
18
+
19
+ <section aria-label="Original repository history" aria-busy={snapshot.busy}>
20
+ <BackupCard
21
+ title="Original repository history"
22
+ Icon={GitMerge}
23
+ description="Keep the vault’s existing JJ repository independent, or import its recorded Git ancestry into automatic history."
24
+ >
25
+ {#snippet actions()}<Button
26
+ variant="ghost"
27
+ size="icon-sm"
28
+ disabled={snapshot.busy}
29
+ aria-label="Refresh original history"
30
+ onclick={() => controller.refresh()}><RefreshCw /></Button
31
+ >{/snippet}
32
+ {#if !snapshot.data && snapshot.busy}<div
33
+ class="loading"
34
+ role="status"
35
+ aria-label="Loading original history"
36
+ >
37
+ <Skeleton style="height:2rem;width:70%" /><Skeleton
38
+ style="height:1rem;width:90%"
39
+ />
40
+ </div>
41
+ {:else if snapshot.request}<p>
42
+ An original import needs reconciliation. Resume that request or stop
43
+ tracking it. Stopping does not remove ancestry already imported.
44
+ </p>
45
+ <div class="actions">
46
+ <Button disabled={snapshot.busy} onclick={() => controller.resume()}
47
+ >Resume original import</Button
48
+ ><Button
49
+ variant="outline"
50
+ disabled={snapshot.busy}
51
+ onclick={() => controller.stop()}>Stop tracking import</Button
52
+ >
53
+ </div>
54
+ {:else if snapshot.data?.source_unavailable}<p>
55
+ Original history is unavailable. Refresh after the original repository
56
+ is accessible again.
57
+ </p>
58
+ {:else if snapshot.data?.source}<p>
59
+ Current vault files stay in place. The original repository’s operations
60
+ and evolution history remain available through the history source
61
+ selector.
62
+ </p>
63
+ <div class="actions">
64
+ <Button disabled={snapshot.busy} onclick={() => controller.adopt()}
65
+ ><GitMerge data-icon="inline-start" />Import recorded history</Button
66
+ >
67
+ </div>
68
+ {:else if snapshot.data}<p>
69
+ No separate original JJ repository was found in this vault.
70
+ </p>
71
+ {:else}<p>Refresh to discover recorded repository history.</p>{/if}
72
+ {#snippet footer()}<p>
73
+ This action requires automatic local history to be enabled. It does not
74
+ change remote synchronization settings.
75
+ </p>{/snippet}
76
+ </BackupCard>
77
+ </section>
78
+
79
+ <style>
80
+ .actions {
81
+ display: flex;
82
+ flex-wrap: wrap;
83
+ gap: 0.75rem;
84
+ margin-top: 0.75rem;
85
+ }
86
+ .loading {
87
+ display: grid;
88
+ gap: 0.75rem;
89
+ }
90
+ p {
91
+ margin: 0;
92
+ font-size: 0.8rem;
93
+ color: var(--muted-foreground);
94
+ }
95
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
2
+ type $$ComponentProps = {
3
+ controller: AdoptionController;
4
+ };
5
+ declare const AdoptionSettings: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type AdoptionSettings = ReturnType<typeof AdoptionSettings>;
7
+ export default AdoptionSettings;
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreSettingsCard/Heading/Footer (Apache-2.0).
3
+ import type { Component, Snippet } from "svelte";
4
+ import * as Card from "@lapismd/design-core/shadcn/card";
5
+ let {
6
+ title,
7
+ description,
8
+ Icon,
9
+ icon,
10
+ actions,
11
+ footer,
12
+ children,
13
+ padded = true,
14
+ }: {
15
+ title: string;
16
+ description?: string;
17
+ Icon?: Component;
18
+ icon?: Snippet;
19
+ actions?: Snippet;
20
+ footer?: Snippet;
21
+ children: Snippet;
22
+ padded?: boolean;
23
+ } = $props();
24
+ </script>
25
+
26
+ <Card.Root
27
+ size="sm"
28
+ style="gap:0;padding:0;overflow:hidden;background:var(--background)"
29
+ >
30
+ <div class="backup-card-header">
31
+ <Card.Header style="padding:0;display:flex;align-items:center;gap:.75rem">
32
+ {#if Icon || icon}<span class="backup-card-icon" aria-hidden="true">
33
+ {#if Icon}<Icon />{:else}{@render icon?.()}{/if}
34
+ </span>{/if}
35
+ <div class="backup-card-heading">
36
+ <Card.Title>{title}</Card.Title>
37
+ {#if description}<Card.Description>{description}</Card.Description>{/if}
38
+ </div>
39
+ {@render actions?.()}
40
+ </Card.Header>
41
+ </div>
42
+ <Card.Content
43
+ style={`padding:${padded ? ".85rem 1rem" : "0"};min-width:0;background:var(--background)`}
44
+ >{@render children()}</Card.Content
45
+ >
46
+ {#if footer}<Card.Footer
47
+ style="padding:.85rem 1rem;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;background:var(--background)"
48
+ >
49
+ {@render footer()}
50
+ </Card.Footer>{/if}
51
+ </Card.Root>
52
+
53
+ <style>
54
+ .backup-card-header {
55
+ padding: 0.85rem 1rem;
56
+ background: color-mix(in srgb, var(--muted) 35%, var(--card));
57
+ border-bottom: 1px solid var(--border);
58
+ }
59
+ .backup-card-heading {
60
+ flex: 1;
61
+ min-width: 0;
62
+ display: grid;
63
+ gap: 0.25rem;
64
+ }
65
+ .backup-card-icon {
66
+ display: inline-flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ flex: none;
70
+ width: 2.25rem;
71
+ height: 2.25rem;
72
+ border-radius: 50%;
73
+ background: color-mix(in srgb, var(--muted) 60%, transparent);
74
+ }
75
+ .backup-card-icon :global(svg) {
76
+ width: 1.2rem;
77
+ height: 1.2rem;
78
+ }
79
+ </style>
@@ -0,0 +1,14 @@
1
+ import type { Component, Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ title: string;
4
+ description?: string;
5
+ Icon?: Component;
6
+ icon?: Snippet;
7
+ actions?: Snippet;
8
+ footer?: Snippet;
9
+ children: Snippet;
10
+ padded?: boolean;
11
+ };
12
+ declare const BackupCard: Component<$$ComponentProps, {}, "">;
13
+ type BackupCard = ReturnType<typeof BackupCard>;
14
+ export default BackupCard;