@powerhousedao/connect 6.2.0-dev.2 → 6.2.0-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/{AddDriveModal-kzL41qdg.js → AddDriveModal-BoKLJyUY.js} +4 -7
  2. package/dist/{AddDriveModal-kzL41qdg.js.map → AddDriveModal-BoKLJyUY.js.map} +1 -1
  3. package/dist/{ClearStorageModal-DIKwqiia.js → ClearStorageModal-CXoNWmRe.js} +4 -4
  4. package/dist/{ClearStorageModal-DIKwqiia.js.map → ClearStorageModal-CXoNWmRe.js.map} +1 -1
  5. package/dist/{DebugSettingsModal-Dxi_8rOa.js → DebugSettingsModal-BUjKyRCv.js} +10 -10
  6. package/dist/DebugSettingsModal-BUjKyRCv.js.map +1 -0
  7. package/dist/DriveAuthRequiredModal-B3VdLwSH.js +36 -0
  8. package/dist/DriveAuthRequiredModal-B3VdLwSH.js.map +1 -0
  9. package/dist/{DriveSettingsModal-L5sM-rIh.js → DriveSettingsModal-CsNFEJ9E.js} +5 -5
  10. package/dist/DriveSettingsModal-CsNFEJ9E.js.map +1 -0
  11. package/dist/{InspectorModal-C7pIf6OO.js → InspectorModal-BsSihzuc.js} +6 -6
  12. package/dist/{InspectorModal-C7pIf6OO.js.map → InspectorModal-BsSihzuc.js.map} +1 -1
  13. package/dist/{MissingPackageModal-D_N96M6a.js → MissingPackageModal-Bn036mWQ.js} +4 -4
  14. package/dist/{MissingPackageModal-D_N96M6a.js.map → MissingPackageModal-Bn036mWQ.js.map} +1 -1
  15. package/dist/{SettingsModal-B2DuAQVQ.js → SettingsModal-DI2_oVrF.js} +35 -42
  16. package/dist/SettingsModal-DI2_oVrF.js.map +1 -0
  17. package/dist/{UpgradeDriveModal-CyAUDCU7.js → UpgradeDriveModal-C7lV4rAX.js} +3 -3
  18. package/dist/{UpgradeDriveModal-CyAUDCU7.js.map → UpgradeDriveModal-C7lV4rAX.js.map} +1 -1
  19. package/dist/app-loader-Crk2wvz-.js +4 -0
  20. package/dist/{app-loader-DvjTCKwK.js → app-loader-HC9KrWYq.js} +75 -50
  21. package/dist/app-loader-HC9KrWYq.js.map +1 -0
  22. package/dist/{build-info-M90cqR0U.js → build-info-YjllYmn8.js} +4 -4
  23. package/dist/{build-info-M90cqR0U.js.map → build-info-YjllYmn8.js.map} +1 -1
  24. package/dist/{components-BY3M6wF8.js → components-CY-vRx23.js} +3 -3
  25. package/dist/{connect.config-aPx3rHZQ.js → connect.config-Bt4pvvWV.js} +9 -5
  26. package/dist/connect.config-Bt4pvvWV.js.map +1 -0
  27. package/dist/{load-BSRod9gt.js → load-9_rJ2u5a.js} +8 -8
  28. package/dist/{load-BSRod9gt.js.map → load-9_rJ2u5a.js.map} +1 -1
  29. package/dist/main.js +1 -1
  30. package/dist/{package-VvzmOTZO.js → package-Cra5KN-6.js} +6 -5
  31. package/dist/package-Cra5KN-6.js.map +1 -0
  32. package/dist/{pglite-runtime-toc1-TWa.js → pglite-runtime-Ch2YeUAA.js} +4 -4
  33. package/dist/{pglite-runtime-toc1-TWa.js.map → pglite-runtime-Ch2YeUAA.js.map} +1 -1
  34. package/dist/{pglite-seed-D8oSKkep.js → pglite-seed-BWk7yOwr.js} +4 -4
  35. package/dist/{pglite-seed-D8oSKkep.js.map → pglite-seed-BWk7yOwr.js.map} +1 -1
  36. package/dist/{reactor-BlxTyHZ5.js → reactor-BxNvHOKC.js} +32 -38
  37. package/dist/reactor-BxNvHOKC.js.map +1 -0
  38. package/dist/{registerServiceWorker-B7uKpkci.js → registerServiceWorker-D9l1kja7.js} +4 -4
  39. package/dist/{registerServiceWorker-B7uKpkci.js.map → registerServiceWorker-D9l1kja7.js.map} +1 -1
  40. package/dist/start-connect.js +1 -1
  41. package/dist/style.css +851 -2392
  42. package/dist/{useRegistryPackages-Bh0luCvV.js → useRegistryPackages-B-gFECmd.js} +44 -8
  43. package/dist/useRegistryPackages-B-gFECmd.js.map +1 -0
  44. package/package.json +12 -11
  45. package/dist/DebugSettingsModal-Dxi_8rOa.js.map +0 -1
  46. package/dist/DriveSettingsModal-L5sM-rIh.js.map +0 -1
  47. package/dist/SettingsModal-B2DuAQVQ.js.map +0 -1
  48. package/dist/app-loader-DW8p8fo5.js +0 -4
  49. package/dist/app-loader-DvjTCKwK.js.map +0 -1
  50. package/dist/connect.config-aPx3rHZQ.js.map +0 -1
  51. package/dist/package-VvzmOTZO.js.map +0 -1
  52. package/dist/reactor-BlxTyHZ5.js.map +0 -1
  53. package/dist/useRegistryPackages-Bh0luCvV.js.map +0 -1
@@ -1,16 +1,17 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9dfb6e9e-3af4-52b1-8464-a9a025ff444f")}catch(e){}}();
3
- import { t as package_default } from "./package-VvzmOTZO.js";
4
- import { n as getGitUrl, r as shortGitSha, t as getGitSha } from "./build-info-M90cqR0U.js";
5
- import { r as connectConfig } from "./connect.config-aPx3rHZQ.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="02e5dfa8-6732-5c2f-874f-321fb14a9baf")}catch(e){}}();
3
+ import { t as package_default } from "./package-Cra5KN-6.js";
4
+ import { n as getGitUrl, r as shortGitSha, t as getGitSha } from "./build-info-YjllYmn8.js";
5
+ import { r as connectConfig } from "./connect.config-Bt4pvvWV.js";
6
6
  import { n as toast } from "./toast-BEy42aYx.js";
7
- import { t as useRegistryPackages } from "./useRegistryPackages-Bh0luCvV.js";
7
+ import { t as useRegistryPackages } from "./useRegistryPackages-B-gFECmd.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { t } from "i18next";
10
10
  import { useCallback, useMemo, useState } from "react";
11
- import { closePHModal, deleteDrive, driveCollectionId, setSelectedDrive, showPHModal, useDriveSystemInfo, useDrives, usePHModal, useSyncList, useVetraPackageManager } from "@powerhousedao/reactor-browser";
12
- import { About, DangerZone, DefaultEditor, PackageManager, SettingsModal as SettingsModal$1 } from "@powerhousedao/design-system/connect";
11
+ import { DriveCollectionId, closePHModal, deleteDrive, setSelectedDrive, showPHModal, useDriveSystemInfo, useDrives, usePHModal, useSyncList, useVetraPackageManager } from "@powerhousedao/reactor-browser";
12
+ import { About, DangerZone, DefaultEditor, PackageManager, SettingsModal as SettingsModal$1, ThemeSwitch } from "@powerhousedao/design-system/connect";
13
13
  import { Icon } from "@powerhousedao/design-system";
14
+ import { CircleHelp, Package, PenLine, TriangleAlert } from "lucide-react";
14
15
  //#region src/components/modal/modals/settings/about.tsx
15
16
  const About$1 = () => {
16
17
  const onOpenInspector = () => {
@@ -25,18 +26,18 @@ const About$1 = () => {
25
26
  /* @__PURE__ */ jsx(AppGitHash, {}),
26
27
  /* @__PURE__ */ jsx(ConnectedDrives, {}),
27
28
  /* @__PURE__ */ jsxs("div", {
28
- className: "bg-gray-50 p-3 dark:bg-slate-800",
29
+ className: "bg-background p-3",
29
30
  children: [
30
31
  /* @__PURE__ */ jsx("h2", {
31
- className: "mb-2 font-semibold text-gray-700 dark:text-slate-200",
32
+ className: "mb-2 font-semibold text-foreground",
32
33
  children: "Inspector"
33
34
  }),
34
35
  /* @__PURE__ */ jsx("p", {
35
- className: "mb-3 text-sm font-normal text-gray-700 dark:text-slate-200",
36
+ className: "mb-3 text-sm font-normal text-foreground",
36
37
  children: "Explore the local database and sync state for debugging."
37
38
  }),
38
39
  /* @__PURE__ */ jsxs("button", {
39
- className: "flex items-center gap-x-2 rounded-md border border-gray-300 bg-transparent px-3 py-1 text-sm font-medium text-gray-900 transition-colors hover:bg-gray-100 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100 dark:hover:bg-slate-700",
40
+ className: "flex items-center gap-x-2 rounded-md border border-border bg-transparent px-3 py-1 text-sm font-medium text-foreground transition-colors hover:hover-effect",
40
41
  onClick: onOpenInspector,
41
42
  type: "button",
42
43
  children: ["Open Inspector ", /* @__PURE__ */ jsx(Icon, {
@@ -54,7 +55,7 @@ function AppGitHash() {
54
55
  const url = getGitUrl();
55
56
  const label = shortGitSha(sha);
56
57
  return /* @__PURE__ */ jsxs("div", {
57
- className: "bg-gray-50 p-3 text-sm dark:bg-slate-800",
58
+ className: "bg-background p-3 text-sm",
58
59
  children: [/* @__PURE__ */ jsx("span", {
59
60
  className: "font-semibold",
60
61
  children: "Git hash: "
@@ -75,14 +76,14 @@ function AppGitHash() {
75
76
  function ConnectedDrives() {
76
77
  const drives = useDrives() ?? [];
77
78
  const remotes = useSyncList();
78
- const remoteDrives = useMemo(() => drives.filter((d) => remotes.some((r) => r.collectionId === driveCollectionId("main", d.header.id))), [drives, remotes]);
79
+ const remoteDrives = useMemo(() => drives.filter((d) => remotes.some((r) => r.collectionId.equals(DriveCollectionId.forDrive(d.header.id)))), [drives, remotes]);
79
80
  return /* @__PURE__ */ jsxs("div", {
80
- className: "my-4 bg-gray-50 p-3 dark:bg-slate-800",
81
+ className: "my-4 bg-background p-3",
81
82
  children: [/* @__PURE__ */ jsx("h2", {
82
- className: "mb-2 font-semibold text-gray-700 dark:text-slate-200",
83
+ className: "mb-2 font-semibold text-foreground",
83
84
  children: "Connected drives"
84
85
  }), remoteDrives.length === 0 ? /* @__PURE__ */ jsx("p", {
85
- className: "text-sm font-normal text-gray-700 dark:text-slate-200",
86
+ className: "text-sm font-normal text-foreground",
86
87
  children: "No connected remote drives."
87
88
  }) : /* @__PURE__ */ jsx("ul", {
88
89
  className: "flex flex-col gap-3",
@@ -93,7 +94,7 @@ function ConnectedDrives() {
93
94
  function DriveAboutEntry({ drive }) {
94
95
  const info = useDriveSystemInfo(drive);
95
96
  return /* @__PURE__ */ jsxs("li", {
96
- className: "text-sm text-gray-700 dark:text-slate-200",
97
+ className: "text-sm text-foreground",
97
98
  children: [
98
99
  /* @__PURE__ */ jsxs("div", {
99
100
  className: "flex items-baseline gap-2",
@@ -101,20 +102,20 @@ function DriveAboutEntry({ drive }) {
101
102
  className: "font-medium",
102
103
  children: drive.state.global.name || drive.header.name
103
104
  }), info.status === "ready" && /* @__PURE__ */ jsx("span", {
104
- className: "text-xs text-gray-500 dark:text-slate-400",
105
+ className: "text-xs text-muted-foreground",
105
106
  children: info.host
106
107
  })]
107
108
  }),
108
109
  info.status === "loading" && /* @__PURE__ */ jsx("div", {
109
- className: "mt-1 text-xs text-gray-400 dark:text-slate-500",
110
+ className: "mt-1 text-xs text-muted-foreground",
110
111
  children: "Loading…"
111
112
  }),
112
113
  info.status === "error" && /* @__PURE__ */ jsx("div", {
113
- className: "mt-1 text-xs text-red-600 dark:text-red-100",
114
+ className: "mt-1 text-xs text-destructive",
114
115
  children: "Could not load system info"
115
116
  }),
116
117
  info.status === "ready" && /* @__PURE__ */ jsxs("div", {
117
- className: "mt-1 text-xs text-gray-700 dark:text-slate-200",
118
+ className: "mt-1 text-xs text-foreground",
118
119
  children: [/* @__PURE__ */ jsxs("div", { children: [
119
120
  /* @__PURE__ */ jsx("span", {
120
121
  className: "font-medium",
@@ -139,7 +140,7 @@ function DriveAboutEntry({ drive }) {
139
140
  })] })]
140
141
  }),
141
142
  info.status === "local" && /* @__PURE__ */ jsx("div", {
142
- className: "mt-1 text-xs text-gray-400 dark:text-slate-500",
143
+ className: "mt-1 text-xs text-muted-foreground",
143
144
  children: "Local drive — N/A"
144
145
  })
145
146
  ]
@@ -236,46 +237,37 @@ const ConnectPackageManager = () => {
236
237
  };
237
238
  //#endregion
238
239
  //#region src/components/modal/modals/SettingsModal.tsx
240
+ const iconProps = { size: 16 };
239
241
  const SettingsModal = () => {
240
242
  const open = usePHModal()?.type === "settings";
241
243
  const tabs = useMemo(() => [
242
244
  {
243
245
  id: "package-manager",
244
- icon: /* @__PURE__ */ jsx(Icon, {
245
- name: "PackageManager",
246
- size: 12
247
- }),
246
+ icon: /* @__PURE__ */ jsx(Package, { ...iconProps }),
248
247
  label: "Package Manager",
249
248
  content: ConnectPackageManager
250
249
  },
251
250
  {
252
251
  id: "default-editors",
253
- icon: /* @__PURE__ */ jsx(Icon, {
254
- name: "Edit",
255
- size: 12
256
- }),
252
+ icon: /* @__PURE__ */ jsx(PenLine, { ...iconProps }),
257
253
  label: "Default Editors",
258
254
  content: DefaultEditor$1
259
255
  },
260
256
  {
261
257
  id: "danger-zone",
262
- icon: /* @__PURE__ */ jsx(Icon, {
263
- name: "Danger",
264
- size: 12,
265
- className: "text-red-900 dark:text-red-400"
258
+ icon: /* @__PURE__ */ jsx(TriangleAlert, {
259
+ ...iconProps,
260
+ className: "text-destructive"
266
261
  }),
267
262
  label: /* @__PURE__ */ jsx("span", {
268
- className: "text-red-900 dark:text-red-400",
263
+ className: "text-destructive",
269
264
  children: "Danger Zone"
270
265
  }),
271
266
  content: () => /* @__PURE__ */ jsx(DangerZone$1, {})
272
267
  },
273
268
  {
274
269
  id: "about",
275
- icon: /* @__PURE__ */ jsx(Icon, {
276
- name: "QuestionSquare",
277
- size: 12
278
- }),
270
+ icon: /* @__PURE__ */ jsx(CircleHelp, { ...iconProps }),
279
271
  label: "About",
280
272
  content: About$1
281
273
  }
@@ -286,11 +278,12 @@ const SettingsModal = () => {
286
278
  onOpenChange: (status) => {
287
279
  if (!status) return closePHModal();
288
280
  },
289
- tabs
281
+ tabs,
282
+ navFooter: /* @__PURE__ */ jsx(ThemeSwitch, { horizontal: true })
290
283
  });
291
284
  };
292
285
  //#endregion
293
286
  export { SettingsModal };
294
287
 
295
- //# sourceMappingURL=SettingsModal-B2DuAQVQ.js.map
296
- //# debugId=9dfb6e9e-3af4-52b1-8464-a9a025ff444f
288
+ //# sourceMappingURL=SettingsModal-DI2_oVrF.js.map
289
+ //# debugId=02e5dfa8-6732-5c2f-874f-321fb14a9baf
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsModal-DI2_oVrF.js","sources":["../src/components/modal/modals/settings/about.tsx","../src/components/modal/modals/settings/danger-zone.tsx","../src/components/modal/modals/settings/default-editor.tsx","../src/components/modal/modals/settings/package-manager.tsx","../src/components/modal/modals/SettingsModal.tsx"],"sourcesContent":["import { connectConfig } from \"@powerhousedao/connect/config\";\nimport {\n getGitSha,\n getGitUrl,\n packageJson,\n shortGitSha,\n} from \"@powerhousedao/connect/utils\";\nimport { Icon } from \"@powerhousedao/design-system\";\nimport { About as BaseAbout } from \"@powerhousedao/design-system/connect\";\nimport {\n closePHModal,\n DriveCollectionId,\n showPHModal,\n useDrives,\n useDriveSystemInfo,\n useSyncList,\n} from \"@powerhousedao/reactor-browser\";\nimport type { DocumentDriveDocument } from \"@powerhousedao/shared/document-drive\";\nimport { useMemo } from \"react\";\n\nexport const About: React.FC = () => {\n const onOpenInspector = () => {\n closePHModal();\n showPHModal({ type: \"inspector\" });\n };\n\n return (\n <div>\n <BaseAbout\n packageJson={packageJson}\n phCliVersion={\n typeof connectConfig.phCliVersion === \"string\"\n ? connectConfig.phCliVersion\n : undefined\n }\n />\n <AppGitHash />\n <ConnectedDrives />\n <div className=\"bg-background p-3\">\n <h2 className=\"mb-2 font-semibold text-foreground\">Inspector</h2>\n <p className=\"mb-3 text-sm font-normal text-foreground\">\n Explore the local database and sync state for debugging.\n </p>\n <button\n className=\"flex items-center gap-x-2 rounded-md border border-border bg-transparent px-3 py-1 text-sm font-medium text-foreground transition-colors hover:hover-effect\"\n onClick={onOpenInspector}\n type=\"button\"\n >\n Open Inspector <Icon name=\"CircleInfo\" size={16} />\n </button>\n </div>\n </div>\n );\n};\n\nfunction AppGitHash() {\n const sha = getGitSha();\n if (sha === \"unknown\") return null;\n const url = getGitUrl();\n const label = shortGitSha(sha);\n return (\n <div className=\"bg-background p-3 text-sm\">\n <span className=\"font-semibold\">Git hash: </span>\n {url ? (\n <a\n className=\"font-mono underline\"\n href={url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n title={sha}\n >\n {label}\n </a>\n ) : (\n <span className=\"font-mono\" title={sha}>\n {label}\n </span>\n )}\n </div>\n );\n}\n\nfunction ConnectedDrives() {\n const drives = useDrives() ?? [];\n const remotes = useSyncList();\n\n const remoteDrives = useMemo(\n () =>\n drives.filter((d) =>\n remotes.some((r) =>\n r.collectionId.equals(DriveCollectionId.forDrive(d.header.id)),\n ),\n ),\n [drives, remotes],\n );\n\n return (\n <div className=\"my-4 bg-background p-3\">\n <h2 className=\"mb-2 font-semibold text-foreground\">Connected drives</h2>\n {remoteDrives.length === 0 ? (\n <p className=\"text-sm font-normal text-foreground\">\n No connected remote drives.\n </p>\n ) : (\n <ul className=\"flex flex-col gap-3\">\n {remoteDrives.map((drive) => (\n <DriveAboutEntry key={drive.header.id} drive={drive} />\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nfunction DriveAboutEntry({ drive }: { drive: DocumentDriveDocument }) {\n const info = useDriveSystemInfo(drive);\n const name = drive.state.global.name || drive.header.name;\n\n return (\n <li className=\"text-sm text-foreground\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"font-medium\">{name}</span>\n {info.status === \"ready\" && (\n <span className=\"text-xs text-muted-foreground\">{info.host}</span>\n )}\n </div>\n {info.status === \"loading\" && (\n <div className=\"mt-1 text-xs text-muted-foreground\">Loading…</div>\n )}\n {info.status === \"error\" && (\n <div className=\"mt-1 text-xs text-destructive\">\n Could not load system info\n </div>\n )}\n {info.status === \"ready\" && (\n <div className=\"mt-1 text-xs text-foreground\">\n <div>\n <span className=\"font-medium\">Version:</span> {info.version}\n </div>\n <div>\n <span className=\"font-medium\">Git hash: </span>\n {info.gitUrl ? (\n <a\n className=\"font-mono hover:underline\"\n href={info.gitUrl}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n title={info.gitHash}\n >\n {shortGitSha(info.gitHash)}\n </a>\n ) : (\n <span className=\"font-mono\" title={info.gitHash}>\n {shortGitSha(info.gitHash)}\n </span>\n )}\n </div>\n </div>\n )}\n {info.status === \"local\" && (\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Local drive — N/A\n </div>\n )}\n </li>\n );\n}\n","import { DangerZone as BaseDangerZone } from \"@powerhousedao/design-system/connect\";\nimport {\n deleteDrive,\n setSelectedDrive,\n showPHModal,\n useDrives,\n} from \"@powerhousedao/reactor-browser\";\nimport type { DocumentDriveDocument } from \"@powerhousedao/shared/document-drive\";\n\nexport const DangerZone: React.FC = () => {\n const drives = useDrives();\n\n const handleDeleteDrive = async (drive: DocumentDriveDocument) => {\n await deleteDrive(drive.header.id);\n setSelectedDrive(undefined);\n };\n\n const handleClearStorage = () => {\n showPHModal({ type: \"clearStorage\" });\n };\n\n return (\n <BaseDangerZone\n drives={drives ?? []}\n onDeleteDrive={(drive) => {\n void handleDeleteDrive(drive);\n }}\n onClearStorage={handleClearStorage}\n />\n );\n};\n","import { DefaultEditor as BaseDefaultEditor } from \"@powerhousedao/design-system/connect\";\nimport { useCallback, useState } from \"react\";\n\nconst documentModelEditorOptions = [\n { label: \"V1\", value: \"document-model-editor\" },\n { label: \"V2\", value: \"document-model-editor-v2\" },\n] as const;\n\nexport const DefaultEditor: React.FC = () => {\n const [documentModelEditor, setDocumentModelEditor] = useState<\n (typeof documentModelEditorOptions)[number]\n >(documentModelEditorOptions[1]);\n\n const handleSetDocumentEditor = useCallback((value: string) => {\n const option = documentModelEditorOptions.find((dm) => dm.value == value);\n if (option) {\n setDocumentModelEditor(option);\n }\n }, []);\n\n return (\n <BaseDefaultEditor\n documentModelEditor={documentModelEditor.value}\n setDocumentModelEditor={handleSetDocumentEditor}\n documentModelEditorOptions={\n documentModelEditorOptions as unknown as {\n value: string;\n label: string;\n }[]\n }\n />\n );\n};\n","import { useRegistryPackages } from \"@powerhousedao/connect/hooks\";\nimport { toast } from \"@powerhousedao/connect/services\";\nimport { PackageManager } from \"@powerhousedao/design-system/connect\";\nimport { useVetraPackageManager } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\n\n/**\n * Split a `name@tag` spec into its bare package name. Mirrors the design-system's\n * `parsePackageSpec` — duplicated here to avoid reaching into a deep subpath\n * export. Scoped names split on the LAST `@`, unscoped on the first.\n */\nfunction parseBareName(spec: string): string {\n const trimmed = spec.trim();\n const at = trimmed.startsWith(\"@\")\n ? trimmed.lastIndexOf(\"@\")\n : trimmed.indexOf(\"@\");\n return at > 0 ? trimmed.slice(0, at) : trimmed;\n}\n\nexport const ConnectPackageManager: React.FC = () => {\n const packageManager = useVetraPackageManager();\n const {\n registryPackageList,\n updateRegistryPackageStatus,\n registerFallbackRegistryPackage,\n } = useRegistryPackages();\n\n async function handleInstall(packageSpec: string) {\n if (!packageManager) return;\n\n // The spec may include an explicit `@tag` / `@version` suffix from the\n // search input. Pass it through to the package manager as-is (the CDN\n // route already handles `name@tag` specs), but track status under the\n // bare name so the Settings list doesn't fragment.\n const bareName = parseBareName(packageSpec);\n // Packages that were in `/packages` when the user clicked Install go\n // through `updateRegistryPackageStatus` and hit an existing entry.\n // Packages that landed via the npm-uplink fallback weren't in the list,\n // so we register them explicitly rather than silently upserting a\n // placeholder — keeping the \"does not exist\" error as a signal for any\n // other code path that reaches update without a matching entry.\n const wasKnownToRegistry = registryPackageList.some(\n (p) => p.name === bareName,\n );\n const result = await packageManager.addPackage(packageSpec);\n if (result.type === \"success\") {\n if (wasKnownToRegistry) {\n updateRegistryPackageStatus(bareName, \"registry-install\");\n } else {\n registerFallbackRegistryPackage(\n bareName,\n result.package,\n packageManager.getPackageVersion(bareName) ??\n packageManager.getPackageVersion(packageSpec),\n \"registry-install\",\n );\n }\n toast(`Package \"${packageSpec}\" installed successfully`, {\n type: \"connect-success\",\n });\n } else {\n const message = result.error.message;\n // `BrowserPackageManager` raises a generic \"Failed to fetch dynamically\n // imported module\" when the registry CDN returns an error. That covers\n // both \"the name exists nowhere (not on this registry AND not on the\n // npmjs uplink)\" and \"the tarball is there but doesn't look like a\n // Powerhouse package\". Tell the user in plain terms before dumping the\n // raw error so the \"install from npm\" fallback case is self-explanatory.\n const isLikelyNotFound = /failed to fetch|404|not found/i.test(message);\n const userMessage = isLikelyNotFound\n ? `Could not install \"${packageSpec}\". The package isn't available on this registry, and the npmjs.org fallback could not resolve it either.`\n : `Failed to install \"${packageSpec}\": ${message}`;\n toast(userMessage, { type: \"error\" });\n }\n }\n\n function handleUninstall(packageName: string) {\n if (!packageManager) return;\n try {\n packageManager.removePackage(packageName);\n updateRegistryPackageStatus(packageName, \"available\");\n\n toast(`Package \"${packageName}\" uninstalled successfully`, {\n type: \"connect-success\",\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unknown error\";\n toast(`Failed to uninstall \"${packageName}\": ${message}`, {\n type: \"error\",\n });\n }\n }\n\n return (\n <div className=\"flex h-full flex-1 flex-col\">\n <PackageManager\n mutable={true}\n registryPackageList={registryPackageList}\n onInstall={handleInstall}\n onUninstall={handleUninstall}\n />\n </div>\n );\n};\n","import {\n SettingsModal as SettingsModalV2,\n ThemeSwitch,\n} from \"@powerhousedao/design-system/connect\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport { t } from \"i18next\";\nimport { CircleHelp, Package, PenLine, TriangleAlert } from \"lucide-react\";\nimport React, { useMemo } from \"react\";\nimport { About } from \"./settings/about.js\";\nimport { DangerZone } from \"./settings/danger-zone.js\";\nimport { DefaultEditor } from \"./settings/default-editor.js\";\nimport { ConnectPackageManager } from \"./settings/package-manager.js\";\n\nconst iconProps = { size: 16 } as const;\n\nexport const SettingsModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"settings\";\n\n const tabs = useMemo(\n () => [\n {\n id: \"package-manager\",\n icon: <Package {...iconProps} />,\n label: \"Package Manager\",\n content: ConnectPackageManager,\n },\n {\n id: \"default-editors\",\n icon: <PenLine {...iconProps} />,\n label: \"Default Editors\",\n content: DefaultEditor,\n },\n {\n id: \"danger-zone\",\n icon: <TriangleAlert {...iconProps} className=\"text-destructive\" />,\n label: <span className=\"text-destructive\">Danger Zone</span>,\n content: () => <DangerZone />,\n },\n {\n id: \"about\",\n icon: <CircleHelp {...iconProps} />,\n label: \"About\",\n content: About,\n },\n ],\n [],\n );\n\n return (\n <SettingsModalV2\n open={open}\n title={t(\"modals.connectSettings.title\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n tabs={tabs}\n navFooter={<ThemeSwitch horizontal />}\n />\n );\n};\n"],"names":["About","BaseAbout","packageJson","DangerZone","BaseDangerZone","DefaultEditor","BaseDefaultEditor","DefaultEditor","DangerZone","About","SettingsModalV2"],"mappings":"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","debug_id":"02e5dfa8-6732-5c2f-874f-321fb14a9baf"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e2bb15c6-0657-58b8-a11a-db584d53a8fe")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c6e40a20-1073-5d21-ba94-170c9adec293")}catch(e){}}();
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import "react";
@@ -30,5 +30,5 @@ const UpgradeDriveModal = () => {
30
30
  //#endregion
31
31
  export { UpgradeDriveModal };
32
32
 
33
- //# sourceMappingURL=UpgradeDriveModal-CyAUDCU7.js.map
34
- //# debugId=e2bb15c6-0657-58b8-a11a-db584d53a8fe
33
+ //# sourceMappingURL=UpgradeDriveModal-C7lV4rAX.js.map
34
+ //# debugId=c6e40a20-1073-5d21-ba94-170c9adec293
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeDriveModal-CyAUDCU7.js","sources":["../src/components/modal/modals/UpgradeDriveModal.tsx"],"sourcesContent":["import { ConnectUpgradeDriveModal } from \"@powerhousedao/design-system/connect\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const UpgradeDriveModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"upgradeDrive\";\n const driveId = open ? phModal.driveId : undefined;\n\n const { t } = useTranslation();\n\n const onContinue = () => {\n // TODO: Implement upgrade drive\n console.log(\"Upgrade drive: \", driveId);\n closePHModal();\n };\n\n return (\n <ConnectUpgradeDriveModal\n open={open}\n onContinue={onContinue}\n header={t(\"modals.upgradeDrive.header\")}\n body={t(\"modals.upgradeDrive.body\")}\n cancelLabel={t(\"common.cancel\")}\n continueLabel={t(\"common.continue\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAKA,MAAa,0BAAoC;CAC/C,MAAM,UAAU,YAAY;CAC5B,MAAM,OAAO,SAAS,SAAS;CAC/B,MAAM,UAAU,OAAO,QAAQ,UAAU,KAAA;CAEzC,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,mBAAmB;AAEvB,UAAQ,IAAI,mBAAmB,QAAQ;AACvC,gBAAc;;AAGhB,QACE,oBAAC,0BAAD;EACQ;EACM;EACZ,QAAQ,EAAE,6BAA6B;EACvC,MAAM,EAAE,2BAA2B;EACnC,aAAa,EAAE,gBAAgB;EAC/B,eAAe,EAAE,kBAAkB;EACnC,eAAe,WAAoB;AACjC,OAAI,CAAC,OAAQ,QAAO,cAAc;;EAEpC,CAAA","debug_id":"e2bb15c6-0657-58b8-a11a-db584d53a8fe"}
1
+ {"version":3,"file":"UpgradeDriveModal-C7lV4rAX.js","sources":["../src/components/modal/modals/UpgradeDriveModal.tsx"],"sourcesContent":["import { ConnectUpgradeDriveModal } from \"@powerhousedao/design-system/connect\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const UpgradeDriveModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"upgradeDrive\";\n const driveId = open ? phModal.driveId : undefined;\n\n const { t } = useTranslation();\n\n const onContinue = () => {\n // TODO: Implement upgrade drive\n console.log(\"Upgrade drive: \", driveId);\n closePHModal();\n };\n\n return (\n <ConnectUpgradeDriveModal\n open={open}\n onContinue={onContinue}\n header={t(\"modals.upgradeDrive.header\")}\n body={t(\"modals.upgradeDrive.body\")}\n cancelLabel={t(\"common.cancel\")}\n continueLabel={t(\"common.continue\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAKA,MAAa,0BAAoC;CAC/C,MAAM,UAAU,YAAY;CAC5B,MAAM,OAAO,SAAS,SAAS;CAC/B,MAAM,UAAU,OAAO,QAAQ,UAAU,KAAA;CAEzC,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,mBAAmB;AAEvB,UAAQ,IAAI,mBAAmB,QAAQ;AACvC,gBAAc;;AAGhB,QACE,oBAAC,0BAAD;EACQ;EACM;EACZ,QAAQ,EAAE,6BAA6B;EACvC,MAAM,EAAE,2BAA2B;EACnC,aAAa,EAAE,gBAAgB;EAC/B,eAAe,EAAE,kBAAkB;EACnC,eAAe,WAAoB;AACjC,OAAI,CAAC,OAAQ,QAAO,cAAc;;EAEpC,CAAA","debug_id":"c6e40a20-1073-5d21-ba94-170c9adec293"}
@@ -0,0 +1,4 @@
1
+ import { t as AppLoader } from "./app-loader-HC9KrWYq.js";
2
+ export { AppLoader };
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4d42b4b5-1974-56b7-a5c7-8762a9c3c998")}catch(e){}}();
4
+ //# debugId=4d42b4b5-1974-56b7-a5c7-8762a9c3c998