fundus 0.6.0 → 0.7.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 (202) hide show
  1. package/README.md +6 -1
  2. package/build/client/_app/immutable/assets/0.CHekvMpo.css +1 -0
  3. package/build/client/_app/immutable/assets/0.CHekvMpo.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.CHekvMpo.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/2.Bf0JkVBM.css +1 -0
  6. package/build/client/_app/immutable/assets/2.Bf0JkVBM.css.br +0 -0
  7. package/build/client/_app/immutable/assets/2.Bf0JkVBM.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/FileChangeBadge.C6wwUZJS.css +1 -0
  9. package/build/client/_app/immutable/assets/FileChangeBadge.C6wwUZJS.css.br +0 -0
  10. package/build/client/_app/immutable/assets/FileChangeBadge.C6wwUZJS.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/LibraryContextMenu.BSnKt_Is.css +1 -0
  12. package/build/client/_app/immutable/assets/LibraryContextMenu.BSnKt_Is.css.br +0 -0
  13. package/build/client/_app/immutable/assets/LibraryContextMenu.BSnKt_Is.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/ManifestSelector.Cue3sCA1.css +1 -0
  15. package/build/client/_app/immutable/assets/ManifestSelector.Cue3sCA1.css.br +0 -0
  16. package/build/client/_app/immutable/assets/ManifestSelector.Cue3sCA1.css.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{D24lHNM9.js → B9iWbZmZ.js} +1 -1
  18. package/build/client/_app/immutable/chunks/B9iWbZmZ.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/B9iWbZmZ.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/BD3hQKzV.js +1 -0
  21. package/build/client/_app/immutable/chunks/BD3hQKzV.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BD3hQKzV.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/Blpvahbd.js +108 -0
  24. package/build/client/_app/immutable/chunks/Blpvahbd.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/Blpvahbd.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/C7Cs5PXV.js +1 -0
  27. package/build/client/_app/immutable/chunks/C7Cs5PXV.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/C7Cs5PXV.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/DPZDGjcn.js +1 -0
  30. package/build/client/_app/immutable/chunks/DPZDGjcn.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/DPZDGjcn.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{BT3jFrxa.js → DrsNq6gf.js} +1 -1
  33. package/build/client/_app/immutable/chunks/DrsNq6gf.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/DrsNq6gf.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{D0BLX4Qd.js → DylBiD8l.js} +1 -1
  36. package/build/client/_app/immutable/chunks/DylBiD8l.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/DylBiD8l.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/NblqapDQ.js +3 -0
  39. package/build/client/_app/immutable/chunks/NblqapDQ.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/NblqapDQ.js.gz +0 -0
  41. package/build/client/_app/immutable/entry/app.CFPPKVrc.js +2 -0
  42. package/build/client/_app/immutable/entry/app.CFPPKVrc.js.br +0 -0
  43. package/build/client/_app/immutable/entry/app.CFPPKVrc.js.gz +0 -0
  44. package/build/client/_app/immutable/entry/start.tn-ZAKbY.js +1 -0
  45. package/build/client/_app/immutable/entry/start.tn-ZAKbY.js.br +0 -0
  46. package/build/client/_app/immutable/entry/start.tn-ZAKbY.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/0.BS8VwNas.js +2 -0
  48. package/build/client/_app/immutable/nodes/0.BS8VwNas.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/0.BS8VwNas.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/1.Dpaug5O_.js +1 -0
  51. package/build/client/_app/immutable/nodes/1.Dpaug5O_.js.br +2 -0
  52. package/build/client/_app/immutable/nodes/1.Dpaug5O_.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/2.KyqEUB3M.js +3 -0
  54. package/build/client/_app/immutable/nodes/2.KyqEUB3M.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/2.KyqEUB3M.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/3.j8JVBjzd.js +1 -0
  57. package/build/client/_app/immutable/nodes/3.j8JVBjzd.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/3.j8JVBjzd.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/4.CiYE8hwS.js +2 -0
  60. package/build/client/_app/immutable/nodes/4.CiYE8hwS.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/4.CiYE8hwS.js.gz +0 -0
  62. package/build/client/_app/version.json +1 -1
  63. package/build/client/_app/version.json.br +0 -0
  64. package/build/client/_app/version.json.gz +0 -0
  65. package/build/handler.js +7 -7
  66. package/build/index.js +7 -7
  67. package/build/server/chunks/chunks/{context.js-FvYkJDOy.js → context.js-CLnT3cF3.js} +110 -1
  68. package/build/server/chunks/chunks/context.js-CLnT3cF3.js.map +1 -0
  69. package/build/server/chunks/chunks/{exports.js-Bepiq5XZ.js → exports.js-CAJ9ZQQx.js} +2 -2
  70. package/build/server/chunks/chunks/{exports.js-Bepiq5XZ.js.map → exports.js-CAJ9ZQQx.js.map} +1 -1
  71. package/build/server/chunks/chunks/{internal.js-Cy01GWTk.js → internal.js-CdY4S4Uy.js} +3 -3
  72. package/build/server/chunks/chunks/{internal.js-Cy01GWTk.js.map → internal.js-CdY4S4Uy.js.map} +1 -1
  73. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
  74. package/build/server/chunks/chunks/{shared.js-b0LBJ1Hx.js → shared.js-C34rGnTQ.js} +2 -2
  75. package/build/server/chunks/chunks/{shared.js-b0LBJ1Hx.js.map → shared.js-C34rGnTQ.js.map} +1 -1
  76. package/build/server/chunks/chunks/{utils.js-CecFjHB0.js → utils.js-BMCQVogA.js} +3 -3
  77. package/build/server/chunks/chunks/{utils.js-CecFjHB0.js.map → utils.js-BMCQVogA.js.map} +1 -1
  78. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-hoRG5JRv.js → _server.ts.js-IMleqOQb.js} +2 -2
  79. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-hoRG5JRv.js.map → _server.ts.js-IMleqOQb.js.map} +1 -1
  80. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BdO9kwrn.js → _server.ts.js-DzFoWnCN.js} +2 -2
  81. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BdO9kwrn.js.map → _server.ts.js-DzFoWnCN.js.map} +1 -1
  82. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-BojOH5gj.js → _server.ts.js-0LjvQ5dF.js} +2 -2
  83. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-BojOH5gj.js.map → _server.ts.js-0LjvQ5dF.js.map} +1 -1
  84. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-DWIptU3K.js → _server.ts.js-BUbO2k7N.js} +2 -2
  85. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-DWIptU3K.js.map → _server.ts.js-BUbO2k7N.js.map} +1 -1
  86. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CaiOgcPc.js → _server.ts.js-CwFLvCzR.js} +2 -2
  87. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CaiOgcPc.js.map → _server.ts.js-CwFLvCzR.js.map} +1 -1
  88. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-Bug1Y1W9.js → _server.ts.js-BA6bgOR_.js} +2 -2
  89. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-Bug1Y1W9.js.map → _server.ts.js-BA6bgOR_.js.map} +1 -1
  90. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-B9N7cPff.js → _server.ts.js-CzzmQqXq.js} +2 -2
  91. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-B9N7cPff.js.map → _server.ts.js-CzzmQqXq.js.map} +1 -1
  92. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CiWdcZEv.js → _server.ts.js-aqJkae-h.js} +2 -2
  93. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CiWdcZEv.js.map → _server.ts.js-aqJkae-h.js.map} +1 -1
  94. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CNqGzdRB.js → _server.ts.js-CGsIZ1tO.js} +2 -2
  95. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CNqGzdRB.js.map → _server.ts.js-CGsIZ1tO.js.map} +1 -1
  96. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-BHwcGKE_.js → _server.ts.js-DbaeknBw.js} +2 -2
  97. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-BHwcGKE_.js.map → _server.ts.js-DbaeknBw.js.map} +1 -1
  98. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CPoTCXQk.js → _server.ts.js-BhY5m7VP.js} +2 -2
  99. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CPoTCXQk.js.map → _server.ts.js-BhY5m7VP.js.map} +1 -1
  100. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-iDOU2RdK.js → _server.ts.js-PT92H6EE.js} +2 -2
  101. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-iDOU2RdK.js.map → _server.ts.js-PT92H6EE.js.map} +1 -1
  102. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-DikbQm3f.js → _server.ts.js-DtiUkpdM.js} +2 -2
  103. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-DikbQm3f.js.map → _server.ts.js-DtiUkpdM.js.map} +1 -1
  104. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DTdHkWuR.js → _server.ts.js-tVkpwUwF.js} +2 -2
  105. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DTdHkWuR.js.map → _server.ts.js-tVkpwUwF.js.map} +1 -1
  106. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-Cn8hwP5P.js → _server.ts.js-Cq85RWhU.js} +2 -2
  107. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-Cn8hwP5P.js.map → _server.ts.js-Cq85RWhU.js.map} +1 -1
  108. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BdUCIBJ_.js → _server.ts.js-DDdYWvN4.js} +2 -2
  109. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BdUCIBJ_.js.map → _server.ts.js-DDdYWvN4.js.map} +1 -1
  110. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-CBLdZJZB.js → _server.ts.js-DxSPXWoT.js} +2 -2
  111. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-CBLdZJZB.js.map → _server.ts.js-DxSPXWoT.js.map} +1 -1
  112. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-CY_gjOPq.js → _server.ts.js-DuStxYsU.js} +2 -2
  113. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-CY_gjOPq.js.map → _server.ts.js-DuStxYsU.js.map} +1 -1
  114. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BOfjGM87.js → _server.ts.js-CxoKyl-h.js} +2 -2
  115. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BOfjGM87.js.map → _server.ts.js-CxoKyl-h.js.map} +1 -1
  116. package/build/server/chunks/entries/{hooks.server.js-BH0-wX67.js → hooks.server.js-DLJAlp7i.js} +2 -2
  117. package/build/server/chunks/entries/{hooks.server.js-BH0-wX67.js.map → hooks.server.js-DLJAlp7i.js.map} +1 -1
  118. package/build/server/chunks/{handler-DMnHzDi5.js → handler-Bn4TsL93.js} +5 -5
  119. package/build/server/chunks/{handler-DMnHzDi5.js.map → handler-Bn4TsL93.js.map} +1 -1
  120. package/build/server/chunks/{index.js-BbOitM8j.js → index.js-DzYQtf0T.js} +5 -5
  121. package/build/server/chunks/{index.js-BbOitM8j.js.map → index.js-DzYQtf0T.js.map} +1 -1
  122. package/build/server/chunks/{manifest.js-EeQkh4Qe.js → manifest.js-DewM2Q1D.js} +26 -26
  123. package/build/server/chunks/{manifest.js-EeQkh4Qe.js.map → manifest.js-DewM2Q1D.js.map} +1 -1
  124. package/build/server/chunks/nodes/0.js-CZe1W9_P.js +11 -0
  125. package/build/server/chunks/nodes/0.js-CZe1W9_P.js.map +1 -0
  126. package/build/server/chunks/nodes/1.js-DKVH5bGU.js +7 -0
  127. package/build/server/chunks/nodes/{1.js-GmjtwLZL.js.map → 1.js-DKVH5bGU.js.map} +1 -1
  128. package/build/server/chunks/nodes/2.js-BpN0Hxjo.js +7 -0
  129. package/build/server/chunks/nodes/2.js-BpN0Hxjo.js.map +1 -0
  130. package/build/server/chunks/nodes/3.js-D3kgOm0S.js +7 -0
  131. package/build/server/chunks/nodes/3.js-D3kgOm0S.js.map +1 -0
  132. package/build/server/chunks/nodes/4.js-CZwje1Lo.js +7 -0
  133. package/build/server/chunks/nodes/{4.js-CtmXxVg2.js.map → 4.js-CZwje1Lo.js.map} +1 -1
  134. package/dist/core/api-types.d.ts +4 -0
  135. package/dist/server/cli-commands.d.ts +1 -1
  136. package/dist/server/cli-commands.js +125 -11
  137. package/dist/server/config-loader.d.ts +2 -0
  138. package/dist/server/config-loader.js +1 -0
  139. package/dist/server/git.d.ts +9 -0
  140. package/dist/server/git.js +121 -0
  141. package/dist/server/operations.js +8 -1
  142. package/package.json +1 -1
  143. package/build/client/_app/immutable/assets/0.inkPq3ni.css +0 -1
  144. package/build/client/_app/immutable/assets/0.inkPq3ni.css.br +0 -0
  145. package/build/client/_app/immutable/assets/0.inkPq3ni.css.gz +0 -0
  146. package/build/client/_app/immutable/assets/2.CtqoikFs.css +0 -1
  147. package/build/client/_app/immutable/assets/2.CtqoikFs.css.br +0 -0
  148. package/build/client/_app/immutable/assets/2.CtqoikFs.css.gz +0 -0
  149. package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css +0 -1
  150. package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css.br +0 -0
  151. package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css.gz +0 -0
  152. package/build/client/_app/immutable/assets/ManifestSelector.Il8p28r8.css +0 -1
  153. package/build/client/_app/immutable/assets/ManifestSelector.Il8p28r8.css.br +0 -0
  154. package/build/client/_app/immutable/assets/ManifestSelector.Il8p28r8.css.gz +0 -0
  155. package/build/client/_app/immutable/chunks/BT3jFrxa.js.br +0 -1
  156. package/build/client/_app/immutable/chunks/BT3jFrxa.js.gz +0 -0
  157. package/build/client/_app/immutable/chunks/CPFeEkfP.js +0 -108
  158. package/build/client/_app/immutable/chunks/CPFeEkfP.js.br +0 -0
  159. package/build/client/_app/immutable/chunks/CPFeEkfP.js.gz +0 -0
  160. package/build/client/_app/immutable/chunks/CQrHfI-c.js +0 -1
  161. package/build/client/_app/immutable/chunks/CQrHfI-c.js.br +0 -0
  162. package/build/client/_app/immutable/chunks/CQrHfI-c.js.gz +0 -0
  163. package/build/client/_app/immutable/chunks/D0BLX4Qd.js.br +0 -0
  164. package/build/client/_app/immutable/chunks/D0BLX4Qd.js.gz +0 -0
  165. package/build/client/_app/immutable/chunks/D24lHNM9.js.br +0 -0
  166. package/build/client/_app/immutable/chunks/D24lHNM9.js.gz +0 -0
  167. package/build/client/_app/immutable/chunks/D65cSBhe.js +0 -3
  168. package/build/client/_app/immutable/chunks/D65cSBhe.js.br +0 -0
  169. package/build/client/_app/immutable/chunks/D65cSBhe.js.gz +0 -0
  170. package/build/client/_app/immutable/chunks/D6VoU_x4.js +0 -1
  171. package/build/client/_app/immutable/chunks/D6VoU_x4.js.br +0 -0
  172. package/build/client/_app/immutable/chunks/D6VoU_x4.js.gz +0 -0
  173. package/build/client/_app/immutable/entry/app.DmVWkUml.js +0 -2
  174. package/build/client/_app/immutable/entry/app.DmVWkUml.js.br +0 -0
  175. package/build/client/_app/immutable/entry/app.DmVWkUml.js.gz +0 -0
  176. package/build/client/_app/immutable/entry/start.Dsf5wSaR.js +0 -1
  177. package/build/client/_app/immutable/entry/start.Dsf5wSaR.js.br +0 -0
  178. package/build/client/_app/immutable/entry/start.Dsf5wSaR.js.gz +0 -0
  179. package/build/client/_app/immutable/nodes/0.l-jE2v4o.js +0 -2
  180. package/build/client/_app/immutable/nodes/0.l-jE2v4o.js.br +0 -0
  181. package/build/client/_app/immutable/nodes/0.l-jE2v4o.js.gz +0 -0
  182. package/build/client/_app/immutable/nodes/1.CRPVOtEh.js +0 -1
  183. package/build/client/_app/immutable/nodes/1.CRPVOtEh.js.br +0 -3
  184. package/build/client/_app/immutable/nodes/1.CRPVOtEh.js.gz +0 -0
  185. package/build/client/_app/immutable/nodes/2.8Si6qHSH.js +0 -3
  186. package/build/client/_app/immutable/nodes/2.8Si6qHSH.js.br +0 -0
  187. package/build/client/_app/immutable/nodes/2.8Si6qHSH.js.gz +0 -0
  188. package/build/client/_app/immutable/nodes/3.CdI42Umt.js +0 -1
  189. package/build/client/_app/immutable/nodes/3.CdI42Umt.js.br +0 -0
  190. package/build/client/_app/immutable/nodes/3.CdI42Umt.js.gz +0 -0
  191. package/build/client/_app/immutable/nodes/4.mMkL80q1.js +0 -2
  192. package/build/client/_app/immutable/nodes/4.mMkL80q1.js.br +0 -0
  193. package/build/client/_app/immutable/nodes/4.mMkL80q1.js.gz +0 -0
  194. package/build/server/chunks/chunks/context.js-FvYkJDOy.js.map +0 -1
  195. package/build/server/chunks/nodes/0.js-CS9Xzs-1.js +0 -11
  196. package/build/server/chunks/nodes/0.js-CS9Xzs-1.js.map +0 -1
  197. package/build/server/chunks/nodes/1.js-GmjtwLZL.js +0 -7
  198. package/build/server/chunks/nodes/2.js-Pip0Abb-.js +0 -7
  199. package/build/server/chunks/nodes/2.js-Pip0Abb-.js.map +0 -1
  200. package/build/server/chunks/nodes/3.js-CJKDeQST.js +0 -7
  201. package/build/server/chunks/nodes/3.js-CJKDeQST.js.map +0 -1
  202. package/build/server/chunks/nodes/4.js-CtmXxVg2.js +0 -7
@@ -14,6 +14,8 @@ export interface ResolvedAudioPluginConfig {
14
14
  presets: Record<string, AudioPreset>;
15
15
  }
16
16
  export interface ResolvedFundusConfig {
17
+ /** Absolute host project directory containing fundus.config.ts. */
18
+ projectRoot: string;
17
19
  /** All paths absolute. */
18
20
  rawDir: string;
19
21
  proxyDir: string;
@@ -71,6 +71,7 @@ export function resolveConfig(projectRoot, value, registry = serverPluginsByType
71
71
  throw new Error('fundus.config: "import.figma.defaults.scale" must be 1, 2, 3, or 4.');
72
72
  }
73
73
  return {
74
+ projectRoot: resolve(projectRoot),
74
75
  rawDir: resolvePath(projectRoot, requiredString(value, 'rawDir')),
75
76
  proxyDir: resolvePath(projectRoot, requiredString(value, 'proxyDir')),
76
77
  library: resolvePath(projectRoot, requiredString(value, 'library')),
@@ -0,0 +1,9 @@
1
+ export type GitFileChange = 'new' | 'edited';
2
+ /** Current branch of the repository containing projectRoot; null outside Git or when detached. */
3
+ export declare function currentGitBranch(projectRoot: string): Promise<string | null>;
4
+ /**
5
+ * Raw Git file changes made since this branch diverged from the repository's
6
+ * default branch. Staged, unstaged, and untracked files are included so the
7
+ * editor updates immediately after an asset mutation, before the next commit.
8
+ */
9
+ export declare function gitFileChanges(projectRoot: string): Promise<Map<string, GitFileChange>>;
@@ -0,0 +1,121 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { resolve } from 'node:path';
3
+ import { promisify } from 'node:util';
4
+ const execFileAsync = promisify(execFile);
5
+ async function git(projectRoot, args) {
6
+ const { stdout } = await execFileAsync('git', ['-C', projectRoot, ...args], {
7
+ encoding: 'utf8'
8
+ });
9
+ return stdout;
10
+ }
11
+ /** Current branch of the repository containing projectRoot; null outside Git or when detached. */
12
+ export async function currentGitBranch(projectRoot) {
13
+ try {
14
+ return (await git(projectRoot, ['branch', '--show-current'])).trim() || null;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ async function firstExistingRef(projectRoot, refs) {
21
+ for (const ref of refs) {
22
+ try {
23
+ await git(projectRoot, ['rev-parse', '--verify', '--quiet', ref]);
24
+ return ref;
25
+ }
26
+ catch {
27
+ // Try the next conventional default-branch ref.
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ async function defaultBranchRef(projectRoot) {
33
+ try {
34
+ const remoteHead = (await git(projectRoot, ['symbolic-ref', '--quiet', '--short', 'refs/remotes/origin/HEAD'])).trim();
35
+ if (remoteHead)
36
+ return remoteHead;
37
+ }
38
+ catch {
39
+ // Repositories without an origin/HEAD fall back to conventional branch names.
40
+ }
41
+ return firstExistingRef(projectRoot, [
42
+ 'refs/remotes/origin/main',
43
+ 'refs/remotes/origin/master',
44
+ 'refs/heads/main',
45
+ 'refs/heads/master'
46
+ ]);
47
+ }
48
+ function parseDiffNames(output, root) {
49
+ const changes = new Map();
50
+ const fields = output.split('\0');
51
+ for (let index = 0; index < fields.length;) {
52
+ const status = fields[index++];
53
+ if (!status)
54
+ continue;
55
+ const sourcePath = fields[index++];
56
+ if (!sourcePath)
57
+ continue;
58
+ if (status.startsWith('R') || status.startsWith('C')) {
59
+ const destinationPath = fields[index++];
60
+ if (!destinationPath)
61
+ continue;
62
+ changes.set(resolve(root, destinationPath), status.startsWith('C') ? 'new' : 'edited');
63
+ }
64
+ else if (status === 'A') {
65
+ changes.set(resolve(root, sourcePath), 'new');
66
+ }
67
+ else if (status !== 'D') {
68
+ changes.set(resolve(root, sourcePath), 'edited');
69
+ }
70
+ }
71
+ return changes;
72
+ }
73
+ /**
74
+ * Raw Git file changes made since this branch diverged from the repository's
75
+ * default branch. Staged, unstaged, and untracked files are included so the
76
+ * editor updates immediately after an asset mutation, before the next commit.
77
+ */
78
+ export async function gitFileChanges(projectRoot) {
79
+ try {
80
+ const prefixParts = (await git(projectRoot, ['rev-parse', '--show-prefix']))
81
+ .trim()
82
+ .split('/')
83
+ .filter(Boolean);
84
+ const root = resolve(projectRoot, ...prefixParts.map(() => '..'));
85
+ const defaultRef = await defaultBranchRef(projectRoot);
86
+ let changes = new Map();
87
+ if (defaultRef) {
88
+ try {
89
+ const mergeBase = (await git(projectRoot, ['merge-base', 'HEAD', defaultRef])).trim();
90
+ if (mergeBase) {
91
+ changes = parseDiffNames(await git(projectRoot, [
92
+ 'diff',
93
+ '--name-status',
94
+ '-z',
95
+ '--find-renames',
96
+ mergeBase,
97
+ '--'
98
+ ]), root);
99
+ }
100
+ }
101
+ catch {
102
+ // An unborn or unrelated branch still has useful untracked-file state.
103
+ }
104
+ }
105
+ const untracked = await git(projectRoot, [
106
+ 'ls-files',
107
+ '--others',
108
+ '--exclude-standard',
109
+ '--full-name',
110
+ '-z'
111
+ ]);
112
+ for (const path of untracked.split('\0')) {
113
+ if (path)
114
+ changes.set(resolve(root, path), 'new');
115
+ }
116
+ return changes;
117
+ }
118
+ catch {
119
+ return new Map();
120
+ }
121
+ }
@@ -5,7 +5,7 @@
5
5
  * and the CLI consume this class, so every
6
6
  * operation has exactly one implementation and there is no other save path.
7
7
  */
8
- import { join } from 'node:path';
8
+ import { join, resolve } from 'node:path';
9
9
  import { assetIdError, allDeliveredAssetIds, canonicalizeParameters, collectAllReferences, compareCodeUnits, computeLibraryMembership, folderOfRawPath, normalizeFolderPath, parentFolderPath, portableFolderPathKey, proposeAssetId, rawFileNameOfPath, typesForFileName } from '../core/index.js';
10
10
  import { LibraryStore } from './library-store.js';
11
11
  import { generateManifestModules } from './codegen.js';
@@ -17,6 +17,7 @@ import { rawSafetyIssues } from './raw-safety.js';
17
17
  import { serverImporters } from './importers.js';
18
18
  import { SourceImportError } from './importers/contract.js';
19
19
  import { validateFigmaSourceParameters } from './importers/figma.js';
20
+ import { currentGitBranch, gitFileChanges } from './git.js';
20
21
  /**
21
22
  * The CLI's `--parameters` merge semantics (M7): a SHALLOW merge at the top
22
23
  * level onto the current parameters — a nested object value replaces the whole
@@ -661,6 +662,10 @@ export class FundusOperations {
661
662
  };
662
663
  }
663
664
  async #buildState(library, issues, classification) {
665
+ const [gitBranch, changedGitFiles] = await Promise.all([
666
+ currentGitBranch(this.#config.projectRoot),
667
+ gitFileChanges(this.#config.projectRoot)
668
+ ]);
664
669
  const referencesByAsset = collectAllReferences(library, descriptorsByType(this.#registry));
665
670
  const membershipByManifest = computeLibraryMembership(library, referencesByAsset);
666
671
  const delivered = allDeliveredAssetIds(membershipByManifest);
@@ -725,6 +730,7 @@ export class FundusOperations {
725
730
  folder: folderOfRawPath(record.raw),
726
731
  rawUrl: `/files/raw/${encodeRelativePathForUrl(record.raw)}?v=${record.rawHash.slice(0, 12)}`,
727
732
  rawHash: record.rawHash,
733
+ gitStatus: changedGitFiles.get(resolve(this.#config.rawDir, record.raw)) ?? null,
728
734
  importSource: record.importSource,
729
735
  parameters: record.parameters,
730
736
  manifests: record.manifests,
@@ -766,6 +772,7 @@ export class FundusOperations {
766
772
  }
767
773
  const rawIngestionQueue = this.#buildRawIngestionQueue(library, classification);
768
774
  return {
775
+ gitBranch,
769
776
  library,
770
777
  assets,
771
778
  importDefaults: { figma: { scale: this.#config.import.figma.defaults.scale } },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fundus",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- :root{--panel:#2c2c2c;--panel-raised:#383838;--canvas:#1e1e1e;--border:#444;--border-soft:#383838;--text:#fff;--text-dim:#a0a0a0;--text-faint:#7a7a7a;--accent:#0d99ff;--accent-soft:#0d99ff29;--warning:#ffcd29;--warning-soft:#ffcd2924;--danger:#f24822;--ok:#14ae5c;--radius:6px;--radius-small:4px;--radius-large:8px;--font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--canvas);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:12px;line-height:1.45}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.control{background:var(--panel-raised);border-radius:var(--radius);border:1px solid #0000;height:28px;padding:4px 8px}.control:hover{border-color:var(--border)}.control:focus,.control:focus-visible{border-color:var(--accent);outline:none}.control.primary{background:var(--accent);color:var(--text)}.control.primary:disabled{opacity:.4;cursor:not-allowed}.control.danger{color:var(--danger)}.control.danger:hover{border-color:var(--danger)}.checkerboard{background-color:var(--canvas);background-image:linear-gradient(45deg, var(--panel) 25%, transparent 25%), linear-gradient(-45deg, var(--panel) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--panel) 75%), linear-gradient(-45deg, transparent 75%, var(--panel) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.queue.svelte-1rcmmyd{background:color-mix(in srgb, var(--accent) 8%, var(--panel));border-bottom:1px solid var(--border);flex:none;padding:10px 16px}.heading.svelte-1rcmmyd,.identity.svelte-1rcmmyd{align-items:center;gap:10px;display:flex}.heading.svelte-1rcmmyd{justify-content:space-between;margin-bottom:8px}.heading.svelte-1rcmmyd span:where(.svelte-1rcmmyd),p.svelte-1rcmmyd{color:var(--text-dim);font-size:11px}.items.svelte-1rcmmyd{gap:6px;display:grid}.item.svelte-1rcmmyd{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.identity.svelte-1rcmmyd>span:where(.svelte-1rcmmyd){background:var(--accent-soft);color:var(--accent);text-transform:uppercase;border-radius:999px;padding:2px 6px;font-size:10px}.identity.svelte-1rcmmyd>span.edited:where(.svelte-1rcmmyd){background:var(--warning-soft);color:var(--warning)}.identity.svelte-1rcmmyd>span.unsupported:where(.svelte-1rcmmyd){background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.identity.svelte-1rcmmyd h2:where(.svelte-1rcmmyd){word-break:break-all;margin:0;font-size:13px}.raw.svelte-1rcmmyd{color:var(--text-dim);word-break:break-all;margin:8px 0 0;font-size:12px}.form-controls.svelte-1rcmmyd{gap:8px;width:min(100%,326px);display:grid}.new-form.svelte-1rcmmyd{margin-top:10px}.edited-form.svelte-1rcmmyd{margin-top:6px}.form-controls.svelte-1rcmmyd label:where(.svelte-1rcmmyd),.manifest-row.svelte-1rcmmyd{grid-template-columns:69px minmax(0,1fr);gap:10px;width:100%;display:grid}.form-controls.svelte-1rcmmyd label:where(.svelte-1rcmmyd){align-items:center}.manifest-row.svelte-1rcmmyd>span:where(.svelte-1rcmmyd){color:var(--text-dim);font-size:11px;line-height:28px}.manifest-row.svelte-1rcmmyd p:where(.svelte-1rcmmyd){color:var(--text-faint);margin:0;line-height:28px}.manifest-list.svelte-1rcmmyd{max-height:96px;overflow-y:auto}.form-controls.svelte-1rcmmyd input:where(.svelte-1rcmmyd),.form-controls.svelte-1rcmmyd select:where(.svelte-1rcmmyd){box-sizing:border-box;width:100%;min-width:0}.actions.svelte-1rcmmyd{align-items:center;gap:10px;display:flex}label.svelte-1rcmmyd{color:var(--text-dim);align-items:center;gap:6px;font-size:11px;display:inline-flex}input.svelte-1rcmmyd,select.svelte-1rcmmyd{min-width:150px;color:var(--text);background:var(--panel-raised);border:1px solid var(--border);border-radius:4px;padding:4px 6px}button.svelte-1rcmmyd{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:4px;padding:5px 10px}button.secondary.svelte-1rcmmyd{background:var(--panel-raised);color:var(--text);border:1px solid var(--border)}button.svelte-1rcmmyd:disabled{opacity:.45;cursor:default}p.error.svelte-1rcmmyd{color:var(--danger);margin:6px 0 0}.shell.svelte-12qhfyh{flex-direction:column;height:100vh;display:flex}.topbar.svelte-12qhfyh{background:var(--panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:24px;height:40px;padding:0 16px;display:flex}.brand.svelte-12qhfyh{align-items:center;gap:8px;font-size:12px;font-weight:600;display:inline-flex}.logo.svelte-12qhfyh{color:var(--accent)}nav.svelte-12qhfyh{gap:4px;display:flex}nav.svelte-12qhfyh a:where(.svelte-12qhfyh){border-radius:var(--radius);color:var(--text-dim);padding:4px 10px}nav.svelte-12qhfyh a:where(.svelte-12qhfyh):hover{color:var(--text)}nav.svelte-12qhfyh a.active:where(.svelte-12qhfyh){background:var(--accent-soft);color:var(--accent)}.status.svelte-12qhfyh{color:var(--text-dim);align-items:center;gap:6px;margin-left:auto;display:inline-flex}.status-text.error.svelte-12qhfyh{color:var(--danger)}.dot.svelte-12qhfyh{background:var(--text-faint);border-radius:50%;width:7px;height:7px}.dot.ok.svelte-12qhfyh{background:var(--ok)}.dot.bad.svelte-12qhfyh{background:var(--danger)}.dot.saving.svelte-12qhfyh{background:var(--accent);animation:.8s ease-in-out infinite svelte-12qhfyh-pulse}@keyframes svelte-12qhfyh-pulse{0%,to{opacity:.35}50%{opacity:1}}.notice.svelte-12qhfyh{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);margin:24px;padding:12px 16px}.issue-banner.svelte-12qhfyh{background:color-mix(in srgb, var(--danger) 14%, var(--panel));border-bottom:1px solid var(--danger);color:var(--text);flex-direction:column;gap:4px;padding:8px 16px;display:flex}code.svelte-12qhfyh{background:var(--panel-raised);border-radius:4px;padding:1px 5px}
@@ -1 +0,0 @@
1
- .submenu-anchor.svelte-13hq4tl{position:relative}button.svelte-13hq4tl{width:100%;color:var(--text);font:inherit;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-13hq4tl:hover,button.svelte-13hq4tl:focus-visible{background:var(--accent-soft);outline:none}.submenu-anchor.svelte-13hq4tl:has(.submenu:where(.svelte-13hq4tl))>.submenu-trigger:where(.svelte-13hq4tl){background:var(--accent-soft);outline:none}.submenu-trigger.svelte-13hq4tl{justify-content:space-between;align-items:center;gap:12px;display:flex}.arrow.svelte-13hq4tl{color:var(--text-faint);font-size:16px;line-height:12px}.submenu.svelte-13hq4tl{z-index:1;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;min-width:168px;max-width:320px;padding:4px;position:absolute;top:-5px;left:calc(100% - 4px);overflow-y:auto;box-shadow:0 8px 24px #00000073}.submenu.opens-left.svelte-13hq4tl{left:auto;right:calc(100% - 4px)}.submenu.svelte-13hq4tl button:where(.svelte-13hq4tl){text-overflow:ellipsis;overflow:hidden}hr.svelte-13hq4tl{background:var(--border);border:0;height:1px;margin:4px 8px}.context-menu.svelte-109nkvw{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-109nkvw{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-109nkvw:hover,button.svelte-109nkvw:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-109nkvw{color:var(--danger)}hr.svelte-109nkvw{background:var(--border);border:0;height:1px;margin:4px 8px}.manifest-label.svelte-1b4m5oj{align-items:center;gap:4px;min-width:0;display:inline-flex}.emoji.svelte-1b4m5oj{flex:none;line-height:1}.name.svelte-1b4m5oj{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip.svelte-1b4m5oj{background:color-mix(in srgb, var(--manifest-color) 20%, transparent);color:var(--manifest-color);border-radius:4px;padding:0 5px;font-size:10px}.chip.passive.svelte-1b4m5oj{border:1px dashed var(--manifest-color);background:0 0}.library-view.svelte-1uha8ag{flex:1;min-height:0;display:flex}.page.svelte-1uha8ag{flex:1;min-height:0;padding:16px;position:relative;overflow-y:auto}.selection-bar.svelte-1uha8ag,.filter-bar.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.selection-bar.svelte-1uha8ag{margin-bottom:8px}.filter-bar.svelte-1uha8ag{margin-bottom:16px}.selection-summary.svelte-1uha8ag{color:var(--accent);white-space:nowrap;font-weight:600}.toggle.svelte-1uha8ag{color:var(--text-dim);align-items:center;gap:6px;display:inline-flex}.search.svelte-1uha8ag{align-items:center;gap:5px;width:220px;padding:0 6px;display:flex}.search.svelte-1uha8ag:focus-within{border-color:var(--accent)}.search-icon.svelte-1uha8ag{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-width:1.5px;stroke-linecap:round;flex:none}.search-input.svelte-1uha8ag{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-faint);border-radius:3px;flex:none;padding:1px 4px;font:9px/14px system-ui,sans-serif}.import.svelte-1uha8ag{background:var(--accent);color:var(--text);margin-left:auto}.section.svelte-1uha8ag{margin-bottom:24px}.section.svelte-1uha8ag:last-child{margin-bottom:0}.section-emoji.svelte-1uha8ag{margin-right:6px}.grid.svelte-1uha8ag,.folder-grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.folder-card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);min-width:0;height:60px;color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.folder-card.svelte-1uha8ag:hover,.folder-card.svelte-1uha8ag:focus-visible{border-color:var(--accent);outline:none}.folder-card.drop-target.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.folder-card.dragging-folder.svelte-1uha8ag{opacity:.55}.folder-card-icon.svelte-1uha8ag{color:var(--text-dim);flex:none;align-items:center;display:flex}.folder-card-details.svelte-1uha8ag{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.folder-card-details.svelte-1uha8ag strong:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.folder-card-details.svelte-1uha8ag span:where(.svelte-1uha8ag),.folder-card-arrow.svelte-1uha8ag{color:var(--text-faint)}.folder-card-arrow.svelte-1uha8ag{flex:none;font-size:18px}.card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);border-radius:8px;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative}.card.selected.svelte-1uha8ag{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.asset-select.svelte-1uha8ag{z-index:1;width:16px;height:16px;accent-color:var(--accent);position:absolute;top:12px;left:12px}.card.svelte-1uha8ag:hover{border-color:var(--accent)}.thumbnail.svelte-1uha8ag{border-radius:var(--radius);justify-content:center;align-items:center;height:96px;display:flex;overflow:hidden}.meta.svelte-1uha8ag{align-items:center;gap:6px;min-width:0;display:flex}.id.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.type-badge.svelte-1uha8ag{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:10px}.badges.svelte-1uha8ag{flex-wrap:wrap;gap:4px;min-height:16px;display:flex}.badge.svelte-1uha8ag{border-radius:4px;padding:0 5px;font-size:10px}.badge.warning.svelte-1uha8ag{background:var(--warning-soft);color:var(--warning)}.empty.svelte-1uha8ag{color:var(--text-dim);text-align:center;padding:48px}.dialog-row.svelte-1uha8ag{align-items:center;gap:8px;display:flex}.dialog-row.svelte-1uha8ag span:where(.svelte-1uha8ag){width:44px;color:var(--text-dim)}.dialog-row.svelte-1uha8ag input:where(.svelte-1uha8ag){flex:1}.dialog-text.svelte-1uha8ag,.dialog-warning.svelte-1uha8ag{margin:8px 0 0}.dialog-warning.svelte-1uha8ag{color:var(--warning)}.drop-hint.svelte-1uha8ag{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;background:#0d99ff14;border-radius:12px;justify-content:center;align-items:center;font-size:14px;display:flex;position:fixed;inset:48px 8px 8px}
@@ -1 +0,0 @@
1
- .playback.svelte-nchstv{align-items:center;gap:6px;width:100%;display:flex}.btn.svelte-nchstv{background:var(--panel-raised);border-radius:var(--radius);width:28px;height:28px;color:var(--text);border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn.svelte-nchstv:hover:not(:disabled){border-color:var(--border)}.btn.svelte-nchstv:focus-visible{border-color:var(--accent);outline:none}.btn.svelte-nchstv:disabled{opacity:.4;cursor:not-allowed}.btn.active.svelte-nchstv{background:var(--accent-soft);color:var(--accent)}.btn.svelte-nchstv svg:where(.svelte-nchstv){width:16px;height:16px;display:block}.time.svelte-nchstv{color:var(--text-dim);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.volume-group.svelte-nchstv{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.range.svelte-nchstv{appearance:none;background:var(--panel-raised);cursor:pointer;border-radius:999px;height:4px}.range.scrub.svelte-nchstv{flex:1;min-width:0;margin:0 2px}.range.volume.svelte-nchstv{flex:none;width:72px}.range.svelte-nchstv:disabled{opacity:.4;cursor:not-allowed}.range.svelte-nchstv::-webkit-slider-thumb{appearance:none;background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-nchstv::-moz-range-thumb{background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-nchstv:focus-visible{outline:none}.range.svelte-nchstv:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.range.svelte-nchstv:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.audio-waveform.svelte-1liihyn{flex-direction:column;gap:8px;width:100%;height:100%;min-height:0;display:flex}.wave.svelte-1liihyn{cursor:pointer;touch-action:none;flex:1;width:100%;min-height:0;display:block}.footer.svelte-1liihyn{flex:none;align-items:center;display:flex}.stage.svelte-1ww4cvx{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.audio-frame.svelte-1ww4cvx{width:min(90%,480px);height:128px}p.svelte-1ww4cvx{color:var(--text-dim)}.icon.svelte-jamecx{display:block}.scrub-number.svelte-nhap92{flex:1;min-width:0;display:flex;position:relative}.input.svelte-nhap92{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}.scrub-number.with-suffix.svelte-nhap92 .input:where(.svelte-nhap92){flex:none}.suffix.svelte-nhap92{color:var(--text-dim);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;flex:none;margin-left:2px;font-size:11px}.scrub-number.right.svelte-nhap92 .input:where(.svelte-nhap92){text-align:right}.input.svelte-nhap92::-webkit-outer-spin-button{appearance:none;margin:0}.input.svelte-nhap92::-webkit-inner-spin-button{appearance:none;margin:0}.scrub-surface.svelte-nhap92{cursor:ew-resize;touch-action:none;position:absolute;inset:0}.number-field.svelte-368zap{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-368zap{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.number-input.svelte-368zap{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex;position:relative;overflow:hidden}.number-input.svelte-368zap:focus-within{border-color:var(--accent)}.fill.svelte-368zap{pointer-events:none;z-index:0;background:#4a4a4a;height:100%;position:absolute;top:0;left:0}.icon-slot.svelte-368zap{z-index:1;width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex;position:relative}.number-input.svelte-368zap .scrub-number{z-index:1}h3.svelte-1ol624f{letter-spacing:0;text-transform:none;color:#fff;margin:0 0 10px;font-size:11px;font-weight:400}.select-field.svelte-bczi6w{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-bczi6w{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.select-input.svelte-bczi6w{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.select-input.svelte-bczi6w:focus-within{border-color:var(--accent)}.icon-slot.svelte-bczi6w{width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex}select.svelte-bczi6w{width:100%;min-width:0;height:100%;color:var(--text);background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-m9vwwu{border-bottom:1px solid var(--border-soft);padding:12px}.hint.svelte-m9vwwu{color:var(--text-faint);margin:4px 0 0;font-size:11px}.info.svelte-m9vwwu{font-variant-numeric:tabular-nums;margin:0}.file.svelte-m9vwwu{color:var(--text-dim);word-break:break-all}section.svelte-1by8n8t{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-1by8n8t{margin-bottom:8px}.fundus-slice.svelte-1820t2z{width:100%;height:100%;position:relative;overflow:hidden}.fundus-slice--overdraw.svelte-1820t2z{overflow:visible}.fundus-slice__cell.svelte-1820t2z{position:absolute;overflow:hidden}.fundus-slice__cell.svelte-1820t2z img:where(.svelte-1820t2z){pointer-events:none;-webkit-user-select:none;user-select:none;max-width:none;max-height:none;position:absolute}.fundus-slice-canvas.svelte-xdsbrz{width:100%;height:100%;position:relative}canvas.svelte-xdsbrz{pointer-events:none;display:block;position:absolute}.fundus-chroma-key-video.svelte-r30mxh{width:100%;height:100%;position:relative}canvas.svelte-r30mxh,img.svelte-r30mxh{width:100%;height:100%;display:block}video.svelte-r30mxh{visibility:hidden;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.stage.svelte-10eps7e{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.stage.svelte-10eps7e img{object-fit:contain;max-width:90%;max-height:90%}img.svelte-gdduef{object-fit:contain;max-width:100%;max-height:100%}section.svelte-1yd7n22{border-bottom:1px solid var(--border-soft);padding:12px}.modes.svelte-1yd7n22{flex-direction:column;gap:4px;display:flex}.modes.svelte-1yd7n22 button:where(.svelte-1yd7n22){text-align:left;background:var(--panel-raised);color:var(--text);border-radius:var(--radius);border:1px solid #0000;padding:6px 10px}.modes.svelte-1yd7n22 button:where(.svelte-1yd7n22):hover{border-color:var(--border)}.modes.svelte-1yd7n22 button.on:where(.svelte-1yd7n22){background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.insets.svelte-1yd7n22{grid-template-columns:1fr 1fr;gap:8px;min-width:0;display:grid}.insets.single.svelte-1yd7n22{grid-template-columns:1fr}.preview-panel.svelte-1mjaycs{flex-direction:column;height:100%;min-height:0;display:flex}.bar.svelte-1mjaycs{flex:none;align-items:center;gap:10px;padding:8px 0;display:flex}.size.svelte-1mjaycs{color:var(--text-dim);font-variant-numeric:tabular-nums}.backends.svelte-1mjaycs{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);gap:2px;margin-left:auto;padding:2px;display:inline-flex}.backends.svelte-1mjaycs button:where(.svelte-1mjaycs){color:var(--text-dim);background:0 0;border:none;border-radius:4px;padding:2px 8px}.backends.svelte-1mjaycs button.on:where(.svelte-1mjaycs){background:var(--accent-soft);color:var(--accent);font-weight:600}.reset.svelte-1mjaycs{background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.reset.svelte-1mjaycs:hover{border-color:var(--accent)}.stage.svelte-1mjaycs{border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;padding:24px;overflow:auto}.box.svelte-1mjaycs{position:relative;box-shadow:0 0 0 1px #ffffff1f}.box.svelte-1mjaycs .fill{position:absolute;inset:0}.handle.svelte-1mjaycs{touch-action:none;background:0 0;position:absolute}.handle.edge-right.svelte-1mjaycs{cursor:ew-resize;width:10px;height:100%;top:0;right:-4px}.handle.edge-bottom.svelte-1mjaycs{cursor:ns-resize;width:100%;height:10px;bottom:-4px;left:0}.handle.corner.svelte-1mjaycs{cursor:nwse-resize;background:var(--accent);width:16px;height:16px;box-shadow:0 0 0 2px var(--canvas);border-radius:3px;bottom:-6px;right:-6px}.canvas.svelte-1jfrg6d{flex-direction:column;height:100%;min-height:0;display:flex}.toolbar.svelte-1jfrg6d{flex:none;align-items:center;gap:8px;padding:8px 0;display:flex}.toolbar.svelte-1jfrg6d button:where(.svelte-1jfrg6d){background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.toolbar.svelte-1jfrg6d button:where(.svelte-1jfrg6d):hover{border-color:var(--accent)}.toolbar.svelte-1jfrg6d button.active:where(.svelte-1jfrg6d){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.zoom.svelte-1jfrg6d{text-align:center;min-width:44px;color:var(--text-dim);font-variant-numeric:tabular-nums}.dims.svelte-1jfrg6d{color:var(--text-dim);font-variant-numeric:tabular-nums;margin-left:auto}.viewport.svelte-1jfrg6d{touch-action:none;cursor:grab;border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;position:relative;overflow:hidden}.viewport.panning.svelte-1jfrg6d{cursor:grabbing}.image-wrap.svelte-1jfrg6d{transform-origin:0 0;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #ffffff14}.image-wrap.svelte-1jfrg6d img:where(.svelte-1jfrg6d){width:100%;height:100%;image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;display:block}.center-rect.svelte-1jfrg6d{pointer-events:none;position:absolute}.center-rect.side-edges.svelte-1jfrg6d{border-left:1px dashed #0d99ff99;border-right:1px dashed #0d99ff99}.center-rect.cap-edges.svelte-1jfrg6d{border-top:1px dashed #0d99ff99;border-bottom:1px dashed #0d99ff99}.overdraw-band.svelte-1jfrg6d{pointer-events:none;background:#38bdf829;position:absolute}.line.svelte-1jfrg6d{background:var(--accent);touch-action:none;position:absolute}.line.overdraw-line.svelte-1jfrg6d{background:#38bdf8 padding-box content-box}.line.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){background:#38bdf8}.line.v.svelte-1jfrg6d{cursor:ew-resize;box-sizing:content-box;background-clip:content-box;width:1px;height:100%;margin-left:-.5px;padding:0 7px;top:0;transform:translate(-7px)}.line.h.svelte-1jfrg6d{cursor:ns-resize;box-sizing:content-box;background-clip:content-box;width:100%;height:1px;margin-top:-.5px;padding:7px 0;left:0;transform:translateY(-7px)}.line.active.svelte-1jfrg6d{background-color:var(--text);background-clip:content-box}.tag.svelte-1jfrg6d{background:var(--accent);color:var(--text);font-variant-numeric:tabular-nums;pointer-events:none;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;position:absolute}.line.v.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:4px;left:50%;transform:translate(-50%)}.line.h.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:50%;left:4px;transform:translateY(-50%)}.line.v.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:auto;bottom:4px}.line.h.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){left:auto;right:4px}.editor.svelte-1ea2lvt{flex-direction:column;flex:1;min-height:0;display:flex}.tabs.svelte-1ea2lvt{flex:none;gap:4px;margin-bottom:4px;display:inline-flex}.tabs.svelte-1ea2lvt button:where(.svelte-1ea2lvt){border-radius:var(--radius);color:var(--text-dim);background:0 0;border:none;padding:4px 10px}.tabs.svelte-1ea2lvt button.on:where(.svelte-1ea2lvt){background:var(--accent-soft);color:var(--accent)}.pane.svelte-1ea2lvt{flex:1;min-height:0}.empty.svelte-1ea2lvt{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}section.svelte-ij1927{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-ij1927{margin-bottom:8px}.stage.svelte-qls820{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.preview-column.svelte-qls820{flex-direction:column;align-items:center;gap:8px;display:flex}.video-frame.svelte-qls820{width:min(90%,480px)}.video-frame.svelte-qls820 video{width:100%;height:100%}p.svelte-qls820{color:var(--text-dim)}video.svelte-ejgo9x{object-fit:contain;max-width:100%;max-height:100%}.picker.svelte-56kutb{flex-direction:column;gap:4px;min-width:0;margin-bottom:8px;display:flex}.caption.svelte-56kutb{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.reference-input.svelte-56kutb{border-radius:4px;align-items:center;min-width:0;height:24px;padding:0;display:flex;position:relative}.reference-input.svelte-56kutb:focus-within{border-color:var(--accent)}.current.svelte-56kutb{min-width:0;height:100%;color:var(--text);text-align:left;background:0 0;border:none;outline:none;flex:1;align-items:center;gap:4px;padding:0 6px 0 0;display:flex}.current.empty.svelte-56kutb{color:var(--text-faint)}.preview-slot.svelte-56kutb{box-sizing:border-box;background:#4a4a4a;border-radius:3px 0 0 3px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;margin-left:-1px;padding:2px;display:flex;overflow:hidden}.preview.svelte-56kutb{object-fit:contain;width:100%;height:100%}.missing-preview.svelte-56kutb{color:var(--warning);font-weight:700}.clear.svelte-56kutb{border:none;border-left:1px solid var(--border-soft);width:24px;height:24px;color:var(--text-dim);background:0 0;border-radius:0 3px 3px 0;outline:none;flex:none;padding:0}.clear.svelte-56kutb:hover{color:var(--danger)}.id.svelte-56kutb,.placeholder.svelte-56kutb{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dangling.svelte-56kutb{color:var(--warning)}.dropdown.svelte-56kutb{z-index:10;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);max-height:240px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000080}.option.svelte-56kutb{border-radius:var(--radius);width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.option.svelte-56kutb .thumbnail:where(.svelte-56kutb){object-fit:contain;background:var(--canvas);border-radius:3px;flex:none;width:24px;height:24px}.option.svelte-56kutb:hover{background:var(--panel-raised)}.option.selected.svelte-56kutb{background:var(--accent-soft);color:var(--accent)}.hint.svelte-56kutb{color:var(--text-faint);margin:4px;font-size:11px}.color-field.svelte-gjs979{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-gjs979{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.color-input.svelte-gjs979{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.color-input.svelte-gjs979:focus-within{border-color:var(--accent)}.swatch-slot.svelte-gjs979{flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.swatch.svelte-gjs979{cursor:pointer;background:0 0;border:1px solid #ffffff3d;border-radius:3px;width:16px;height:16px;margin:0;padding:0;overflow:hidden}.swatch.svelte-gjs979::-webkit-color-swatch-wrapper{padding:0}.swatch.svelte-gjs979::-webkit-color-swatch{border:none}.hex-input.svelte-gjs979{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;text-transform:uppercase;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-rsjkek{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-rsjkek{margin-bottom:8px}.stage.svelte-1y3xro5{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.preview-column.svelte-1y3xro5{flex-direction:column;align-items:center;gap:8px;display:flex}.compare-row.svelte-1y3xro5{justify-content:center;align-items:flex-start;gap:16px;width:100%;max-width:760px;display:flex}figure.svelte-1y3xro5{flex-direction:column;flex:1 1 0;align-items:center;gap:6px;min-width:0;margin:0;display:flex}figcaption.svelte-1y3xro5{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px}.video-frame.svelte-1y3xro5{width:100%}.video-frame.svelte-1y3xro5 video{width:100%;height:100%}p.svelte-1y3xro5{color:var(--text-dim)}section.svelte-3jblpy{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-3jblpy{margin-bottom:8px}.backdrop.svelte-1f5yh58{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-1f5yh58{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:360px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-1f5yh58{margin:0 0 4px;font-size:12px}.file-name.svelte-1f5yh58{color:var(--text-dim);font-variant-numeric:tabular-nums;margin:0}.destination.svelte-1f5yh58{color:var(--text-faint);margin:2px 0 16px}.row.svelte-1f5yh58{align-items:center;gap:8px;margin-bottom:8px;display:flex}.label.svelte-1f5yh58{width:64px;color:var(--text-dim);flex:none}.row.svelte-1f5yh58 input:where(.svelte-1f5yh58){flex:1}.row.manifests.svelte-1f5yh58{align-items:flex-start}.row.manifests.svelte-1f5yh58>.label:where(.svelte-1f5yh58){line-height:28px}.manifest-list.svelte-1f5yh58{flex:1;max-height:132px;overflow-y:auto}.empty-manifests.svelte-1f5yh58{color:var(--text-faint);margin:0;font-size:11px}.segmented.svelte-1f5yh58{border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented.svelte-1f5yh58 button:where(.svelte-1f5yh58){background:var(--panel-raised);color:var(--text-dim);border:none;padding:4px 12px}.segmented.svelte-1f5yh58 button.on:where(.svelte-1f5yh58){background:var(--accent);color:var(--text)}.hint.svelte-1f5yh58{color:var(--text-dim);margin:4px 0 0;font-size:11px}.hint.warn.svelte-1f5yh58,.error.svelte-1f5yh58{color:var(--warning)}.actions.svelte-1f5yh58{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.backdrop.svelte-n5o24b{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-n5o24b{border:1px solid var(--border);background:var(--panel);border-radius:8px;width:420px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-n5o24b{margin:0 0 4px;font-size:12px}.destination.svelte-n5o24b{color:var(--text-faint);margin:0 0 16px}.row.svelte-n5o24b{gap:12px;display:flex}.field.svelte-n5o24b{color:var(--text-dim);flex-direction:column;flex:1;gap:4px;margin-bottom:10px;display:flex}.field.wide.svelte-n5o24b{width:100%}.warning.svelte-n5o24b{color:var(--warning);margin:6px 0 0;font-size:11px}.actions.svelte-n5o24b{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.directory.svelte-ftwms1{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;width:220px;min-width:180px;max-width:320px;min-height:0;display:flex}header.svelte-ftwms1{border-bottom:1px solid var(--border-soft);align-items:center;height:40px;padding:0 8px 0 12px;display:flex}header.svelte-ftwms1 strong:where(.svelte-ftwms1){font-size:11px}.actions.svelte-ftwms1{margin-left:auto;display:flex}.icon-button.svelte-ftwms1{width:24px;height:24px;color:var(--text-dim);border-radius:var(--radius-small);background:0 0;border:0}.icon-button.svelte-ftwms1:hover:not(:disabled){background:var(--panel-raised);color:var(--text)}.icon-button.danger.svelte-ftwms1:hover:not(:disabled){color:var(--danger)}.icon-button.svelte-ftwms1:disabled{opacity:.3;cursor:default}.tree.svelte-ftwms1{padding:6px 4px;overflow:auto}.folder-row.svelte-ftwms1,.asset-row.svelte-ftwms1{padding-left:calc((var(--depth) + 2) * 14px);display:flex}.row.svelte-ftwms1{color:var(--text-dim);border-radius:var(--radius-small);text-align:left;background:0 0;border:0;align-items:center;gap:6px;min-width:0;height:28px;display:flex}.row.special.svelte-ftwms1{width:100%;padding:0 8px}.row.folder.svelte-ftwms1{flex:1;padding:0 8px 0 2px}.row.asset.svelte-ftwms1{cursor:grab;flex:1;padding:0 8px 0 2px}.row.asset.svelte-ftwms1:active{cursor:grabbing}.row.svelte-ftwms1:hover,.row.selected.svelte-ftwms1{background:var(--panel-raised);color:var(--text)}.row.asset.current.svelte-ftwms1,.row.selected.svelte-ftwms1{background:var(--accent-soft);color:var(--accent)}.row.drop-target.svelte-ftwms1{outline:1px solid var(--accent);background:var(--accent-soft)}.glyph.svelte-ftwms1{width:14px;color:var(--text-faint);flex:none;justify-content:center;align-items:center;display:flex}.asset-glyph.svelte-ftwms1{font-size:7px}.asset-warning.svelte-ftwms1{color:var(--warning);flex:none;margin-left:auto}.label.svelte-ftwms1{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.count.svelte-ftwms1{color:var(--text-faint);margin-left:auto;font-size:10px}.dialog-row.svelte-ftwms1{align-items:center;gap:8px;display:flex}.dialog-row.svelte-ftwms1 span:where(.svelte-ftwms1){width:44px;color:var(--text-dim)}.dialog-row.svelte-ftwms1 input:where(.svelte-ftwms1){flex:1}.dialog-path.svelte-ftwms1,.dialog-text.svelte-ftwms1,.dialog-warning.svelte-ftwms1{margin:8px 0 0}.dialog-path.svelte-ftwms1{color:var(--text-faint)}.dialog-warning.svelte-ftwms1{color:var(--warning)}.context-menu.svelte-10jgqdh{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-10jgqdh{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-10jgqdh:hover,button.svelte-10jgqdh:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-10jgqdh{color:var(--danger)}hr.svelte-10jgqdh{background:var(--border);border:0;height:1px;margin:4px 8px}
@@ -1 +0,0 @@
1
- .manifest-selector.svelte-151zph4{flex-direction:column;gap:4px;width:100%;display:flex}.manifest-option.svelte-151zph4{border-color:var(--border-soft);width:100%;height:28px;color:var(--text-dim);cursor:pointer;border-radius:4px;align-items:center;gap:7px;padding:2px 7px;display:flex}.manifest-option.svelte-151zph4:hover{border-color:var(--manifest-color);background:color-mix(in srgb, var(--manifest-color) 10%, var(--panel-raised));color:var(--text)}.manifest-option.svelte-151zph4:focus-within{border-color:var(--manifest-color)}.manifest-option.selected.svelte-151zph4{border-color:var(--manifest-color);background:color-mix(in srgb, var(--manifest-color) 20%, var(--panel-raised));color:var(--text)}.manifest-option.passive.svelte-151zph4{border-color:var(--manifest-color);border-style:dashed}.manifest-option.disabled.svelte-151zph4{cursor:default;opacity:.6}.manifest-option.disabled.svelte-151zph4:hover{border-color:var(--border-soft);background:var(--panel-raised);color:var(--text-dim)}input.svelte-151zph4{width:14px;height:14px;accent-color:var(--manifest-color);flex:none;margin:0}.marker.svelte-151zph4{border:1px solid color-mix(in srgb, var(--manifest-color) 70%, var(--border));background:color-mix(in srgb, var(--manifest-color) 24%, var(--panel));border-radius:3px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;display:inline-flex}.color-dot.svelte-151zph4{background:var(--manifest-color);border-radius:50%;width:8px;height:8px}.name.svelte-151zph4,.via.svelte-151zph4{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.name.svelte-151zph4{font-size:11px;font-weight:500}.via.svelte-151zph4{color:var(--text-faint);margin-left:auto;font-size:9px}
@@ -1 +0,0 @@
1
- I@d�Z��Kf��Jb��.��ʬmT����I�