@powerhousedao/connect 6.2.2-dev.5 → 6.2.2-dev.51

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 (95) hide show
  1. package/assets/document-icon-192x192.png +0 -0
  2. package/assets/document-icon-512x512.png +0 -0
  3. package/assets/pwa-192x192.png +0 -0
  4. package/assets/pwa-512x512-maskable.png +0 -0
  5. package/assets/pwa-512x512.png +0 -0
  6. package/dist/{AddDriveModal-MMHlkJBJ.js → AddDriveModal-Bw0YuxZg.js} +5 -5
  7. package/dist/AddDriveModal-Bw0YuxZg.js.map +1 -0
  8. package/dist/{ClearStorageModal--Kc9BLDH.js → ClearStorageModal-cfcVb2SW.js} +4 -4
  9. package/dist/{ClearStorageModal--Kc9BLDH.js.map → ClearStorageModal-cfcVb2SW.js.map} +1 -1
  10. package/dist/ConfirmDocumentUpgradeModal-9AaaQJTs.js +114 -0
  11. package/dist/ConfirmDocumentUpgradeModal-9AaaQJTs.js.map +1 -0
  12. package/dist/{CookiesPolicyModal-CkcUKPLb.js → CookiesPolicyModal-CQ-zHJdw.js} +3 -3
  13. package/dist/{CookiesPolicyModal-CkcUKPLb.js.map → CookiesPolicyModal-CQ-zHJdw.js.map} +1 -1
  14. package/dist/{CreateDocumentModal-CvsTh0HM.js → CreateDocumentModal-NNi4p6EI.js} +7 -5
  15. package/dist/CreateDocumentModal-NNi4p6EI.js.map +1 -0
  16. package/dist/{DebugSettingsModal-B7hFn_9k.js → DebugSettingsModal-Bgi7bfUu.js} +6 -6
  17. package/dist/{DebugSettingsModal-B7hFn_9k.js.map → DebugSettingsModal-Bgi7bfUu.js.map} +1 -1
  18. package/dist/{DeleteDriveModal-DSTK8FYk.js → DeleteDriveModal-C7fnXMsR.js} +4 -4
  19. package/dist/{DeleteDriveModal-DSTK8FYk.js.map → DeleteDriveModal-C7fnXMsR.js.map} +1 -1
  20. package/dist/{DeleteItemModal-B2nJmjsP.js → DeleteItemModal-BK_Y8Thj.js} +4 -4
  21. package/dist/{DeleteItemModal-B2nJmjsP.js.map → DeleteItemModal-BK_Y8Thj.js.map} +1 -1
  22. package/dist/{DisclaimerModal-D5FO34u9.js → DisclaimerModal-DJPHCnFY.js} +3 -3
  23. package/dist/{DisclaimerModal-D5FO34u9.js.map → DisclaimerModal-DJPHCnFY.js.map} +1 -1
  24. package/dist/DocumentVersionUnsupportedModal-tBHLK6b1.js +32 -0
  25. package/dist/DocumentVersionUnsupportedModal-tBHLK6b1.js.map +1 -0
  26. package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js → DownloadDocumentWithErrorsModal-sWu46HVB.js} +3 -3
  27. package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js.map → DownloadDocumentWithErrorsModal-sWu46HVB.js.map} +1 -1
  28. package/dist/DriveAuthRequiredModal-D3IPAst0.js +36 -0
  29. package/dist/DriveAuthRequiredModal-D3IPAst0.js.map +1 -0
  30. package/dist/{DriveSettingsModal-kR3hQnh4.js → DriveSettingsModal-7OKx8foy.js} +3 -3
  31. package/dist/{DriveSettingsModal-kR3hQnh4.js.map → DriveSettingsModal-7OKx8foy.js.map} +1 -1
  32. package/dist/{InspectorModal-DO7xAv0e.js → InspectorModal-B7VAkcdH.js} +6 -6
  33. package/dist/{InspectorModal-DO7xAv0e.js.map → InspectorModal-B7VAkcdH.js.map} +1 -1
  34. package/dist/LoginModal-Cd2wGgG4.js +75 -0
  35. package/dist/LoginModal-Cd2wGgG4.js.map +1 -0
  36. package/dist/{MissingPackageModal-BQcCQbOn.js → MissingPackageModal-DyP2-Ojb.js} +18 -6
  37. package/dist/MissingPackageModal-DyP2-Ojb.js.map +1 -0
  38. package/dist/OpenFileDocumentsModal-CRpjCHP5.js +311 -0
  39. package/dist/OpenFileDocumentsModal-CRpjCHP5.js.map +1 -0
  40. package/dist/{SettingsModal-5UjMFrlr.js → SettingsModal-DSSZjOss.js} +26 -13
  41. package/dist/SettingsModal-DSSZjOss.js.map +1 -0
  42. package/dist/{UpgradeDriveModal-BZGSE9_r.js → UpgradeDriveModal-wo5oO9mg.js} +3 -3
  43. package/dist/{UpgradeDriveModal-BZGSE9_r.js.map → UpgradeDriveModal-wo5oO9mg.js.map} +1 -1
  44. package/dist/{app-loader-C1rnoBbl.js → app-loader-B5qG3Vvh.js} +457 -89
  45. package/dist/app-loader-B5qG3Vvh.js.map +1 -0
  46. package/dist/app-loader-CAVbUAB6.js +4 -0
  47. package/dist/{build-info-COOSxFxb.js → build-info-BHjIgFNX.js} +5 -5
  48. package/dist/{build-info-COOSxFxb.js.map → build-info-BHjIgFNX.js.map} +1 -1
  49. package/dist/components-C15nwDs9.js +5 -0
  50. package/dist/{connect.config-vgUeFoNp.js → connect.config-C-b_Yhd6.js} +9 -4
  51. package/dist/connect.config-C-b_Yhd6.js.map +1 -0
  52. package/dist/{connection-state-DO_2lAEJ.js → connection-state-KCa1yljA.js} +4 -4
  53. package/dist/{connection-state-DO_2lAEJ.js.map → connection-state-KCa1yljA.js.map} +1 -1
  54. package/dist/{load-BCpNI6yz.js → load-qKSDf63c.js} +10 -10
  55. package/dist/{load-BCpNI6yz.js.map → load-qKSDf63c.js.map} +1 -1
  56. package/dist/main.js +1 -1
  57. package/dist/{package-BJ5bAWw-.js → package-Cv6nhTAB.js} +8 -4
  58. package/dist/package-Cv6nhTAB.js.map +1 -0
  59. package/dist/{pglite-seed-z3B1JA38.js → pglite-seed-DRXPe7p-.js} +4 -4
  60. package/dist/{pglite-seed-z3B1JA38.js.map → pglite-seed-DRXPe7p-.js.map} +1 -1
  61. package/dist/pwa-manifest-link-CG8UajMz.js +34 -0
  62. package/dist/pwa-manifest-link-CG8UajMz.js.map +1 -0
  63. package/dist/{reactor-EirLqbNn.js → reactor-BNfRHAya.js} +170 -22
  64. package/dist/reactor-BNfRHAya.js.map +1 -0
  65. package/dist/reactor.worker.js +8 -6
  66. package/dist/reactor.worker.js.map +1 -1
  67. package/dist/{registerServiceWorker-nJIc0yEY.js → registerServiceWorker-Bn1KWmk0.js} +6 -4
  68. package/dist/registerServiceWorker-Bn1KWmk0.js.map +1 -0
  69. package/dist/{reload-connect-toast-D1Iqw9E_.js → reload-connect-toast-DDQEupCN.js} +23 -5
  70. package/dist/{reload-connect-toast-D1Iqw9E_.js.map → reload-connect-toast-DDQEupCN.js.map} +1 -1
  71. package/dist/start-connect.js +1 -1
  72. package/dist/style.css +100 -7
  73. package/dist/{toast-4t-VimvD.js → toast-CO6ChlzE.js} +8 -5
  74. package/dist/toast-CO6ChlzE.js.map +1 -0
  75. package/dist/use-renown-login-BtGljnB4.js +52 -0
  76. package/dist/use-renown-login-BtGljnB4.js.map +1 -0
  77. package/dist/useRegistryPackages-DMhCvTWq.js +314 -0
  78. package/dist/useRegistryPackages-DMhCvTWq.js.map +1 -0
  79. package/package.json +15 -11
  80. package/dist/AddDriveModal-MMHlkJBJ.js.map +0 -1
  81. package/dist/CreateDocumentModal-CvsTh0HM.js.map +0 -1
  82. package/dist/DriveAuthRequiredModal-BA2vS3oF.js +0 -40
  83. package/dist/DriveAuthRequiredModal-BA2vS3oF.js.map +0 -1
  84. package/dist/MissingPackageModal-BQcCQbOn.js.map +0 -1
  85. package/dist/SettingsModal-5UjMFrlr.js.map +0 -1
  86. package/dist/app-loader-C1rnoBbl.js.map +0 -1
  87. package/dist/app-loader-CpXJhHIH.js +0 -4
  88. package/dist/components-DHj3ZpJg.js +0 -5
  89. package/dist/connect.config-vgUeFoNp.js.map +0 -1
  90. package/dist/package-BJ5bAWw-.js.map +0 -1
  91. package/dist/reactor-EirLqbNn.js.map +0 -1
  92. package/dist/registerServiceWorker-nJIc0yEY.js.map +0 -1
  93. package/dist/toast-4t-VimvD.js.map +0 -1
  94. package/dist/useRegistryPackages-BaYtekjQ.js +0 -179
  95. package/dist/useRegistryPackages-BaYtekjQ.js.map +0 -1
@@ -5,7 +5,7 @@ import { createRoot } from "react-dom/client";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region start-connect.tsx
7
7
  await loadRuntimeConfig();
8
- const { AppLoader } = await import("./components-DHj3ZpJg.js");
8
+ const { AppLoader } = await import("./components-C15nwDs9.js");
9
9
  function updateLocalPackage(pkg) {
10
10
  window.ph?.vetraPackageManager?.updateLocalPackage(pkg);
11
11
  }
package/dist/style.css CHANGED
@@ -78,6 +78,7 @@
78
78
  --font-weight-bold: 700;
79
79
  --tracking-normal: 0em;
80
80
  --tracking-wide: 0.025em;
81
+ --tracking-wider: 0.05em;
81
82
  --leading-tight: 1.25;
82
83
  --leading-normal: 1.5;
83
84
  --leading-relaxed: 1.625;
@@ -372,6 +373,9 @@
372
373
  .end {
373
374
  inset-inline-end: var(--spacing);
374
375
  }
376
+ .-top-2 {
377
+ top: calc(var(--spacing) * -2);
378
+ }
375
379
  .top-0 {
376
380
  top: calc(var(--spacing) * 0);
377
381
  }
@@ -474,6 +478,9 @@
474
478
  .z-50 {
475
479
  z-index: 50;
476
480
  }
481
+ .z-200 {
482
+ z-index: 200;
483
+ }
477
484
  .z-1000 {
478
485
  z-index: 1000;
479
486
  }
@@ -618,6 +625,9 @@
618
625
  .mb-1 {
619
626
  margin-bottom: calc(var(--spacing) * 1);
620
627
  }
628
+ .mb-1\.5 {
629
+ margin-bottom: calc(var(--spacing) * 1.5);
630
+ }
621
631
  .mb-2 {
622
632
  margin-bottom: calc(var(--spacing) * 2);
623
633
  }
@@ -858,9 +868,6 @@
858
868
  .h-\[420px\] {
859
869
  height: 420px;
860
870
  }
861
- .h-\[500px\] {
862
- height: 500px;
863
- }
864
871
  .h-\[600px\] {
865
872
  height: 600px;
866
873
  }
@@ -903,12 +910,18 @@
903
910
  .max-h-\[60vh\] {
904
911
  max-height: 60vh;
905
912
  }
913
+ .max-h-\[85vh\] {
914
+ max-height: 85vh;
915
+ }
906
916
  .max-h-\[245px\] {
907
917
  max-height: 245px;
908
918
  }
909
919
  .max-h-\[404px\] {
910
920
  max-height: 404px;
911
921
  }
922
+ .max-h-\[calc\(100dvh-14rem\)\] {
923
+ max-height: calc(100dvh - 14rem);
924
+ }
912
925
  .max-h-full {
913
926
  max-height: 100%;
914
927
  }
@@ -1089,6 +1102,9 @@
1089
1102
  .w-\[408px\] {
1090
1103
  width: 408px;
1091
1104
  }
1105
+ .w-\[440px\] {
1106
+ width: 440px;
1107
+ }
1092
1108
  .w-\[450px\] {
1093
1109
  width: 450px;
1094
1110
  }
@@ -1149,6 +1165,9 @@
1149
1165
  .max-w-\[calc\(100\%-2rem\)\] {
1150
1166
  max-width: calc(100% - 2rem);
1151
1167
  }
1168
+ .max-w-\[calc\(100vw-2rem\)\] {
1169
+ max-width: calc(100vw - 2rem);
1170
+ }
1152
1171
  .max-w-fit {
1153
1172
  max-width: fit-content;
1154
1173
  }
@@ -1495,6 +1514,9 @@
1495
1514
  .overflow-y-auto {
1496
1515
  overflow-y: auto;
1497
1516
  }
1517
+ .overscroll-contain {
1518
+ overscroll-behavior: contain;
1519
+ }
1498
1520
  .rounded {
1499
1521
  border-radius: 0.25rem;
1500
1522
  }
@@ -1587,6 +1609,10 @@
1587
1609
  border-top-style: var(--tw-border-style);
1588
1610
  border-top-width: 1px;
1589
1611
  }
1612
+ .border-t-0 {
1613
+ border-top-style: var(--tw-border-style);
1614
+ border-top-width: 0px;
1615
+ }
1590
1616
  .border-r {
1591
1617
  border-right-style: var(--tw-border-style);
1592
1618
  border-right-width: 1px;
@@ -1638,6 +1664,9 @@
1638
1664
  .border-b-border {
1639
1665
  border-bottom-color: var(--border);
1640
1666
  }
1667
+ .bg-accent {
1668
+ background-color: var(--accent);
1669
+ }
1641
1670
  .bg-background {
1642
1671
  background-color: var(--background);
1643
1672
  }
@@ -1647,6 +1676,9 @@
1647
1676
  background-color: color-mix(in oklab, var(--background) 50%, transparent);
1648
1677
  }
1649
1678
  }
1679
+ .bg-border {
1680
+ background-color: var(--border);
1681
+ }
1650
1682
  .bg-card {
1651
1683
  background-color: var(--card);
1652
1684
  }
@@ -1665,6 +1697,9 @@
1665
1697
  background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
1666
1698
  }
1667
1699
  }
1700
+ .bg-foreground {
1701
+ background-color: var(--foreground);
1702
+ }
1668
1703
  .bg-info {
1669
1704
  background-color: var(--info);
1670
1705
  }
@@ -1812,6 +1847,9 @@
1812
1847
  .px-10 {
1813
1848
  padding-inline: calc(var(--spacing) * 10);
1814
1849
  }
1850
+ .py-0 {
1851
+ padding-block: calc(var(--spacing) * 0);
1852
+ }
1815
1853
  .py-0\.5 {
1816
1854
  padding-block: calc(var(--spacing) * 0.5);
1817
1855
  }
@@ -1881,6 +1919,9 @@
1881
1919
  .pr-1 {
1882
1920
  padding-right: calc(var(--spacing) * 1);
1883
1921
  }
1922
+ .pr-1\.5 {
1923
+ padding-right: calc(var(--spacing) * 1.5);
1924
+ }
1884
1925
  .pr-2 {
1885
1926
  padding-right: calc(var(--spacing) * 2);
1886
1927
  }
@@ -2041,6 +2082,9 @@
2041
2082
  font-size: var(--text-xs);
2042
2083
  line-height: calc(var(--spacing) * 5);
2043
2084
  }
2085
+ .text-\[10px\] {
2086
+ font-size: 10px;
2087
+ }
2044
2088
  .leading-4 {
2045
2089
  --tw-leading: calc(var(--spacing) * 4);
2046
2090
  line-height: calc(var(--spacing) * 4);
@@ -2049,10 +2093,6 @@
2049
2093
  --tw-leading: calc(var(--spacing) * 4.5);
2050
2094
  line-height: calc(var(--spacing) * 4.5);
2051
2095
  }
2052
- .leading-10 {
2053
- --tw-leading: calc(var(--spacing) * 10);
2054
- line-height: calc(var(--spacing) * 10);
2055
- }
2056
2096
  .leading-\[18px\] {
2057
2097
  --tw-leading: 18px;
2058
2098
  line-height: 18px;
@@ -2093,6 +2133,10 @@
2093
2133
  --tw-tracking: var(--tracking-wide);
2094
2134
  letter-spacing: var(--tracking-wide);
2095
2135
  }
2136
+ .tracking-wider {
2137
+ --tw-tracking: var(--tracking-wider);
2138
+ letter-spacing: var(--tracking-wider);
2139
+ }
2096
2140
  .wrap-anywhere {
2097
2141
  overflow-wrap: anywhere;
2098
2142
  }
@@ -2109,6 +2153,9 @@
2109
2153
  .whitespace-nowrap {
2110
2154
  white-space: nowrap;
2111
2155
  }
2156
+ .text-background {
2157
+ color: var(--background);
2158
+ }
2112
2159
  .text-current {
2113
2160
  color: currentcolor;
2114
2161
  }
@@ -2212,6 +2259,9 @@
2212
2259
  .opacity-75 {
2213
2260
  opacity: 75%;
2214
2261
  }
2262
+ .opacity-80 {
2263
+ opacity: 80%;
2264
+ }
2215
2265
  .opacity-100 {
2216
2266
  opacity: 100%;
2217
2267
  }
@@ -2920,6 +2970,13 @@
2920
2970
  }
2921
2971
  }
2922
2972
  }
2973
+ .hover\:bg-accent {
2974
+ &:hover {
2975
+ @media (hover: hover) {
2976
+ background-color: var(--accent);
2977
+ }
2978
+ }
2979
+ }
2923
2980
  .hover\:bg-muted {
2924
2981
  &:hover {
2925
2982
  @media (hover: hover) {
@@ -2927,6 +2984,16 @@
2927
2984
  }
2928
2985
  }
2929
2986
  }
2987
+ .hover\:bg-primary\/85 {
2988
+ &:hover {
2989
+ @media (hover: hover) {
2990
+ background-color: var(--primary);
2991
+ @supports (color: color-mix(in lab, red, red)) {
2992
+ background-color: color-mix(in oklab, var(--primary) 85%, transparent);
2993
+ }
2994
+ }
2995
+ }
2996
+ }
2930
2997
  .hover\:pr-6 {
2931
2998
  &:hover {
2932
2999
  @media (hover: hover) {
@@ -3089,6 +3156,11 @@
3089
3156
  transition: filter 0.1s ease-in-out;
3090
3157
  }
3091
3158
  }
3159
+ .disabled\:pointer-events-none {
3160
+ &:disabled {
3161
+ pointer-events: none;
3162
+ }
3163
+ }
3092
3164
  .disabled\:disabled-effect {
3093
3165
  &:disabled {
3094
3166
  cursor: not-allowed;
@@ -3116,6 +3188,16 @@
3116
3188
  box-shadow: none;
3117
3189
  }
3118
3190
  }
3191
+ .disabled\:cursor-wait {
3192
+ &:disabled {
3193
+ cursor: wait;
3194
+ }
3195
+ }
3196
+ .disabled\:opacity-60 {
3197
+ &:disabled {
3198
+ opacity: 60%;
3199
+ }
3200
+ }
3119
3201
  .disabled\:opacity-100 {
3120
3202
  &:disabled {
3121
3203
  opacity: 100%;
@@ -3293,6 +3375,12 @@
3293
3375
  border-style: none;
3294
3376
  }
3295
3377
  }
3378
+ .dark\:shadow-modal-dark {
3379
+ &:where(.dark, .dark *) {
3380
+ --tw-shadow: 0px 0px 24px 4px var(--tw-shadow-color, rgba(255, 255, 255, 0.06)), 0px 44px 48px -12px var(--tw-shadow-color, rgba(255, 255, 255, 0.08)), 0px 2px 8px 0px var(--tw-shadow-color, rgba(255, 255, 255, 0.04));
3381
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3382
+ }
3383
+ }
3296
3384
  .dark\:ring-white\/10 {
3297
3385
  &:where(.dark, .dark *) {
3298
3386
  --tw-ring-color: color-mix(in srgb, hsl(0 0% 100%) 10%, transparent);
@@ -3416,6 +3504,11 @@
3416
3504
  fill: var(--color-red-500);
3417
3505
  }
3418
3506
  }
3507
+ .\[\&_p\:empty\]\:hidden {
3508
+ & p:empty {
3509
+ display: none;
3510
+ }
3511
+ }
3419
3512
  .\[\&_svg\]\:pointer-events-none {
3420
3513
  & svg {
3421
3514
  pointer-events: none;
@@ -1,7 +1,7 @@
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]="9ee5aa7b-b29e-5c77-bcea-8b57b1fbb493")}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]="d22e5acd-014d-560f-a589-64e7fe7b7685")}catch(e){}}();
3
3
  import { createElement } from "react";
4
- import { ToastContainer, toast } from "@powerhousedao/design-system/connect/toast";
4
+ import { ToastContainer, dismiss, toast } from "@powerhousedao/design-system/connect/toast";
5
5
  //#region src/services/toast.ts
6
6
  const CONNECT_TOAST_CONTAINER_ID = "connect";
7
7
  const ToastContainer$1 = (props = {}) => createElement(ToastContainer, {
@@ -16,8 +16,11 @@ function toast$1(content, options) {
16
16
  ...restOptions
17
17
  });
18
18
  }
19
+ function dismissToast(toastId) {
20
+ return dismiss(toastId);
21
+ }
19
22
  //#endregion
20
- export { toast$1 as n, ToastContainer$1 as t };
23
+ export { dismissToast as n, toast$1 as r, ToastContainer$1 as t };
21
24
 
22
- //# sourceMappingURL=toast-4t-VimvD.js.map
23
- //# debugId=9ee5aa7b-b29e-5c77-bcea-8b57b1fbb493
25
+ //# sourceMappingURL=toast-CO6ChlzE.js.map
26
+ //# debugId=d22e5acd-014d-560f-a589-64e7fe7b7685
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-CO6ChlzE.js","sources":["../src/services/toast.ts"],"sourcesContent":["import type { ConnectToastOptions } from \"@powerhousedao/design-system/connect/toast\";\nimport {\n ToastContainer as BaseToastContainer,\n dismiss as baseDismiss,\n toast as baseToast,\n} from \"@powerhousedao/design-system/connect/toast\";\nimport { createElement, type ComponentProps } from \"react\";\n\nexport const CONNECT_TOAST_CONTAINER_ID = \"connect\";\n\ntype BaseToastContainerProps = ComponentProps<typeof BaseToastContainer>;\n\nexport const ToastContainer = (\n props: Omit<BaseToastContainerProps, \"containerId\"> = {},\n) =>\n createElement(BaseToastContainer, {\n containerId: CONNECT_TOAST_CONTAINER_ID,\n ...props,\n });\n\ntype ToastArgs = Parameters<typeof baseToast>;\nexport function toast(content: ToastArgs[0], options?: ConnectToastOptions) {\n const {\n type = \"default\",\n containerId = CONNECT_TOAST_CONTAINER_ID,\n ...restOptions\n } = options || {};\n return baseToast(content, { type, containerId, ...restOptions });\n}\n\nexport function dismissToast(toastId: string | number) {\n return baseDismiss(toastId);\n}\n"],"names":["ToastContainer","BaseToastContainer","toast","baseToast","baseDismiss"],"mappings":";;;;;AAQA,MAAa,6BAA6B;AAI1C,MAAaA,oBACX,QAAsD,EAAE,KAExD,cAAcC,gBAAoB;CAChC,aAAa;CACb,GAAG;CACJ,CAAC;AAGJ,SAAgBC,QAAM,SAAuB,SAA+B;CAC1E,MAAM,EACJ,OAAO,WACP,cAAc,4BACd,GAAG,gBACD,WAAW,EAAE;AACjB,QAAOC,MAAU,SAAS;EAAE;EAAM;EAAa,GAAG;EAAa,CAAC;;AAGlE,SAAgB,aAAa,SAA0B;AACrD,QAAOC,QAAY,QAAQ","debug_id":"d22e5acd-014d-560f-a589-64e7fe7b7685"}
@@ -0,0 +1,52 @@
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]="a9c447f4-bb72-553a-9b6f-82cb39a7bd7e")}catch(e){}}();
3
+ import { useCallback, useMemo } from "react";
4
+ import { openRenown, showPHModal, useRenownAuth, useRenownLoginMethods } from "@powerhousedao/reactor-browser";
5
+ //#region src/hooks/use-renown-login.ts
6
+ function useOpenRenownLogin() {
7
+ const methods = useRenownLoginMethods();
8
+ return useCallback(() => {
9
+ if (methods.length > 0) showPHModal({ type: "login" });
10
+ else openRenown();
11
+ }, [methods]);
12
+ }
13
+ const LAST_METHOD_KEY = "renown:last-login-method";
14
+ function getLastLoginMethod() {
15
+ try {
16
+ return localStorage.getItem(LAST_METHOD_KEY);
17
+ } catch {
18
+ return null;
19
+ }
20
+ }
21
+ function setLastLoginMethod(method) {
22
+ try {
23
+ localStorage.setItem(LAST_METHOD_KEY, method);
24
+ } catch {}
25
+ }
26
+ function useRenownLoginProps() {
27
+ const { login, pending, error } = useRenownAuth();
28
+ const onLogin = useCallback(() => login(), [login]);
29
+ const baseMethods = useRenownLoginMethods();
30
+ return {
31
+ onLogin,
32
+ methods: useMemo(() => {
33
+ const lastUsed = getLastLoginMethod();
34
+ return baseMethods.map((method) => ({
35
+ id: method.id,
36
+ label: method.label,
37
+ lastUsed: lastUsed === method.id,
38
+ onSelect: () => {
39
+ setLastLoginMethod(method.id);
40
+ login(void 0, method.id);
41
+ }
42
+ }));
43
+ }, [baseMethods, login]),
44
+ loading: pending,
45
+ error: error?.message ?? null
46
+ };
47
+ }
48
+ //#endregion
49
+ export { useRenownLoginProps as n, useOpenRenownLogin as t };
50
+
51
+ //# sourceMappingURL=use-renown-login-BtGljnB4.js.map
52
+ //# debugId=a9c447f4-bb72-553a-9b6f-82cb39a7bd7e
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-renown-login-BtGljnB4.js","sources":["../src/hooks/use-renown-login.ts"],"sourcesContent":["import type { RenownLoginOption } from \"@powerhousedao/design-system/connect\";\nimport {\n openRenown,\n showPHModal,\n useRenownAuth,\n useRenownLoginMethods,\n} from \"@powerhousedao/reactor-browser\";\nimport { useCallback, useMemo } from \"react\";\n\n// Opens the in-page login modal when wallet adapters are configured; otherwise\n// redirects straight to the Renown portal (no modal with only a redirect button).\nexport function useOpenRenownLogin(): () => void {\n const methods = useRenownLoginMethods();\n return useCallback(() => {\n if (methods.length > 0) {\n showPHModal({ type: \"login\" });\n } else {\n openRenown();\n }\n }, [methods]);\n}\n\nexport interface RenownLoginProps {\n onLogin: () => void;\n // One option per configured login method (wallet, Google, email, …). Empty\n // only when no adapters are configured (the redirect Connect button is used).\n methods: RenownLoginOption[];\n loading: boolean;\n error: string | null;\n}\n\nconst LAST_METHOD_KEY = \"renown:last-login-method\";\n\nfunction getLastLoginMethod(): string | null {\n try {\n return localStorage.getItem(LAST_METHOD_KEY);\n } catch {\n return null;\n }\n}\n\nfunction setLastLoginMethod(method: string): void {\n try {\n localStorage.setItem(LAST_METHOD_KEY, method);\n } catch {\n // localStorage unavailable (private mode / SSR) — the badge is optional.\n }\n}\n\n// Single source of the login wiring shared by every Connect CTA: in-page\n// sign-in (with redirect fallback) plus pending/error feedback.\nexport function useRenownLoginProps(): RenownLoginProps {\n const { login, pending, error } = useRenownAuth();\n const onLogin = useCallback(() => login(), [login]);\n\n // Method list (labels) comes from the shared primitive; Connect adds the\n // last-used badge + the onSelect wiring for its design-system card.\n const baseMethods = useRenownLoginMethods();\n\n const methods = useMemo<RenownLoginOption[]>(() => {\n const lastUsed = getLastLoginMethod();\n return baseMethods.map((method) => ({\n id: method.id,\n label: method.label,\n lastUsed: lastUsed === method.id,\n onSelect: () => {\n setLastLoginMethod(method.id);\n login(undefined, method.id);\n },\n }));\n }, [baseMethods, login]);\n\n return { onLogin, methods, loading: pending, error: error?.message ?? null };\n}\n"],"names":[],"mappings":";;;;;AAWA,SAAgB,qBAAiC;CAC/C,MAAM,UAAU,uBAAuB;AACvC,QAAO,kBAAkB;AACvB,MAAI,QAAQ,SAAS,EACnB,aAAY,EAAE,MAAM,SAAS,CAAC;MAE9B,aAAY;IAEb,CAAC,QAAQ,CAAC;;AAYf,MAAM,kBAAkB;AAExB,SAAS,qBAAoC;AAC3C,KAAI;AACF,SAAO,aAAa,QAAQ,gBAAgB;SACtC;AACN,SAAO;;;AAIX,SAAS,mBAAmB,QAAsB;AAChD,KAAI;AACF,eAAa,QAAQ,iBAAiB,OAAO;SACvC;;AAOV,SAAgB,sBAAwC;CACtD,MAAM,EAAE,OAAO,SAAS,UAAU,eAAe;CACjD,MAAM,UAAU,kBAAkB,OAAO,EAAE,CAAC,MAAM,CAAC;CAInD,MAAM,cAAc,uBAAuB;AAe3C,QAAO;EAAE;EAAS,SAbF,cAAmC;GACjD,MAAM,WAAW,oBAAoB;AACrC,UAAO,YAAY,KAAK,YAAY;IAClC,IAAI,OAAO;IACX,OAAO,OAAO;IACd,UAAU,aAAa,OAAO;IAC9B,gBAAgB;AACd,wBAAmB,OAAO,GAAG;AAC7B,WAAM,KAAA,GAAW,OAAO,GAAG;;IAE9B,EAAE;KACF,CAAC,aAAa,MAAM,CAAC;EAEG,SAAS;EAAS,OAAO,OAAO,WAAW;EAAM","debug_id":"a9c447f4-bb72-553a-9b6f-82cb39a7bd7e"}
@@ -0,0 +1,314 @@
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]="a2bca0ce-adce-512d-a646-5adf41d1dd3f")}catch(e){}}();
3
+ import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { getPackagePage, getPackagesForDocumentType, trimTrailingSlash, useVetraPackageManager } from "@powerhousedao/reactor-browser";
6
+ import { slimManifest } from "@powerhousedao/shared/registry/manifest-slim";
7
+ //#region src/hooks/useRegistryPackages.ts
8
+ /** Page size for the paginated Available-packages listing. */
9
+ const AVAILABLE_PAGE_SIZE = 30;
10
+ function useRegistryPackages() {
11
+ const packageManager = useVetraPackageManager();
12
+ const packageManagerPackages = packageManager?.packages;
13
+ const registryUrl = getRuntimeConfig().packageRegistryUrl ?? null;
14
+ const [registryPackagesMap, setRegistryPackagesMap] = useBestEffortLocalStorage(`REGISTRY_PACKAGES:${registryUrl === null ? null : trimTrailingSlash(registryUrl)}`, {});
15
+ const registryPackageList = useMemo(() => {
16
+ return Array.from(Object.values(registryPackagesMap)).filter((p) => p !== void 0);
17
+ }, [registryPackagesMap]);
18
+ const installedPackages = useMemo(() => registryPackageList.filter((p) => p.status === "local-install" || p.status === "registry-install"), [registryPackageList]);
19
+ const [availableOrder, setAvailableOrder] = useState([]);
20
+ const [availableTotal, setAvailableTotal] = useState(null);
21
+ const [availableHasMore, setAvailableHasMore] = useState(false);
22
+ const [isLoadingAvailable, setIsLoadingAvailable] = useState(false);
23
+ const [isLoadingMoreAvailable, setIsLoadingMoreAvailable] = useState(false);
24
+ const [availableError, setAvailableError] = useState(false);
25
+ const availableQueryRef = useRef("");
26
+ const nextOffsetRef = useRef(0);
27
+ const requestGenerationRef = useRef(0);
28
+ const debounceRef = useRef(null);
29
+ const availablePackages = useMemo(() => availableOrder.map((name) => registryPackagesMap[name]).filter((p) => p !== void 0 && (p.status === "available" || p.status === "dismissed")), [availableOrder, registryPackagesMap]);
30
+ const fetchAvailablePage = useCallback(async ({ reset }) => {
31
+ if (registryUrl === null || !packageManager) return;
32
+ const generation = ++requestGenerationRef.current;
33
+ const offset = reset ? 0 : nextOffsetRef.current;
34
+ const search = availableQueryRef.current;
35
+ if (reset) setIsLoadingAvailable(true);
36
+ else setIsLoadingMoreAvailable(true);
37
+ setAvailableError(false);
38
+ try {
39
+ const page = await getPackagePage(registryUrl, {
40
+ limit: AVAILABLE_PAGE_SIZE,
41
+ offset,
42
+ search: search || void 0
43
+ });
44
+ if (generation !== requestGenerationRef.current) return;
45
+ setRegistryPackagesMap((oldPackages) => {
46
+ const next = { ...oldPackages };
47
+ for (const item of page.items) {
48
+ const existing = next[item.name];
49
+ if (!existing) {
50
+ const status = getPackageStatusFromPackageSource(packageManager.getPackageSource(item.name));
51
+ next[item.name] = makeRegistryPackageFromListItem(item, status);
52
+ } else next[item.name] = {
53
+ ...existing,
54
+ version: packageManager.getPackageVersion(item.name) ?? item.version ?? existing.version,
55
+ status: promoteStatus(existing.status, packageManager.getPackageSource(item.name))
56
+ };
57
+ }
58
+ return next;
59
+ });
60
+ setAvailableOrder((prev) => {
61
+ const base = reset ? [] : prev;
62
+ const seen = new Set(base);
63
+ const merged = [...base];
64
+ for (const item of page.items) if (!seen.has(item.name)) {
65
+ seen.add(item.name);
66
+ merged.push(item.name);
67
+ }
68
+ return merged;
69
+ });
70
+ nextOffsetRef.current = offset + page.items.length;
71
+ setAvailableTotal(page.total);
72
+ setAvailableHasMore(page.hasMore);
73
+ } catch (error) {
74
+ if (generation !== requestGenerationRef.current) return;
75
+ console.error(error);
76
+ setAvailableError(true);
77
+ } finally {
78
+ if (generation === requestGenerationRef.current) {
79
+ setIsLoadingAvailable(false);
80
+ setIsLoadingMoreAvailable(false);
81
+ }
82
+ }
83
+ }, [
84
+ registryUrl,
85
+ packageManager,
86
+ setRegistryPackagesMap
87
+ ]);
88
+ /** Debounced server search — resets to page 1 for the new query. */
89
+ const setAvailableSearch = useCallback((query) => {
90
+ availableQueryRef.current = query;
91
+ if (debounceRef.current) clearTimeout(debounceRef.current);
92
+ debounceRef.current = setTimeout(() => {
93
+ fetchAvailablePage({ reset: true });
94
+ }, 300);
95
+ }, [fetchAvailablePage]);
96
+ /** Load the next page (infinite scroll). No-op when exhausted/busy. */
97
+ const loadMoreAvailable = useCallback(() => {
98
+ if (!availableHasMore || isLoadingAvailable || isLoadingMoreAvailable) return;
99
+ fetchAvailablePage({ reset: false });
100
+ }, [
101
+ availableHasMore,
102
+ isLoadingAvailable,
103
+ isLoadingMoreAvailable,
104
+ fetchAvailablePage
105
+ ]);
106
+ /**
107
+ * Load page 1 the first time the Available tab is opened. Re-opening keeps
108
+ * the accumulated pages; a fetch error leaves the panel's Retry to re-fetch
109
+ * (this guard avoids auto-retry loops on tab re-open).
110
+ */
111
+ function ensureAvailableLoaded() {
112
+ if (availableOrder.length > 0 || isLoadingAvailable || availableError) return;
113
+ fetchAvailablePage({ reset: true });
114
+ }
115
+ /**
116
+ * Fetch full package info for a document type (via the legacy
117
+ * `?documentType=` filter) and merge into the map. Lets MissingPackageModal
118
+ * offer installs without loading the whole paginated listing.
119
+ */
120
+ const fetchPackagesByDocumentType = useCallback(async (documentType) => {
121
+ if (registryUrl === null || !packageManager) return [];
122
+ try {
123
+ const infos = await getPackagesForDocumentType(registryUrl, documentType);
124
+ setRegistryPackagesMap((oldPackages) => {
125
+ const next = { ...oldPackages };
126
+ for (const info of infos) {
127
+ const existing = next[info.name];
128
+ const status = getPackageStatusFromPackageSource(packageManager.getPackageSource(info.name));
129
+ next[info.name] = existing ? {
130
+ ...existing,
131
+ status: promoteStatus(existing.status, packageManager.getPackageSource(info.name))
132
+ } : makeRegistryPackageFromPackageInfo(info, status);
133
+ }
134
+ return next;
135
+ });
136
+ return infos.map((info) => makeRegistryPackageFromPackageInfo(info, getPackageStatusFromPackageSource(packageManager.getPackageSource(info.name))));
137
+ } catch (error) {
138
+ console.error(error);
139
+ return [];
140
+ }
141
+ }, [
142
+ registryUrl,
143
+ packageManager,
144
+ setRegistryPackagesMap
145
+ ]);
146
+ useEffect(() => () => {
147
+ if (debounceRef.current) clearTimeout(debounceRef.current);
148
+ }, []);
149
+ useEffect(() => {
150
+ if (!packageManager) return;
151
+ if (packageManagerPackages?.length) for (const packageManagerPackage of packageManagerPackages) setRegistryPackagesMap((existingRegistryPackages) => {
152
+ const packageName = packageManagerPackage.manifest.name;
153
+ const existingPackage = existingRegistryPackages[packageName];
154
+ const newRegistryPackages = { ...existingRegistryPackages };
155
+ const version = packageManager.getPackageVersion(packageName);
156
+ if (existingPackage) newRegistryPackages[packageName] = {
157
+ ...existingPackage,
158
+ version: version ?? existingPackage.version,
159
+ status: promoteStatus(existingPackage.status, packageManager.getPackageSource(packageName))
160
+ };
161
+ else newRegistryPackages[packageName] = makeRegistryPackageFromDocumentModelLib(packageManagerPackage, getPackageStatusFromPackageSource(packageManager.getPackageSource(packageName)), version);
162
+ return newRegistryPackages;
163
+ });
164
+ }, [packageManagerPackages]);
165
+ function updateRegistryPackageStatus(packageName, newStatus) {
166
+ setRegistryPackagesMap((oldRegistryPackages) => {
167
+ const newRegistryPackages = { ...oldRegistryPackages };
168
+ const newRegistryPackage = newRegistryPackages[packageName];
169
+ if (!newRegistryPackage) {
170
+ console.error("Attempting to update status for package that does not exist.");
171
+ return newRegistryPackages;
172
+ }
173
+ newRegistryPackages[packageName] = {
174
+ ...newRegistryPackage,
175
+ status: newStatus
176
+ };
177
+ return newRegistryPackages;
178
+ });
179
+ }
180
+ /**
181
+ * Register a freshly-installed package that came in via the npm-uplink
182
+ * fallback — the user typed a bare name, our local `/packages` didn't know
183
+ * it, but the install succeeded because verdaccio proxy-fetched the tarball.
184
+ *
185
+ * This is the one legitimate case where the status update runs against a
186
+ * name that wasn't in the registry map. We treat it as an insert rather
187
+ * than logging the "does not exist" error. Data is pulled from the loaded
188
+ * module so the UI card shows the real manifest immediately; the next
189
+ * `/packages` refresh will add `versions`/`distTags`.
190
+ */
191
+ function registerFallbackRegistryPackage(packageName, loadedPackage, version, status) {
192
+ setRegistryPackagesMap((oldRegistryPackages) => {
193
+ const newRegistryPackages = { ...oldRegistryPackages };
194
+ newRegistryPackages[packageName] = {
195
+ ...makeRegistryPackageFromDocumentModelLib(loadedPackage, status, version),
196
+ name: packageName
197
+ };
198
+ return newRegistryPackages;
199
+ });
200
+ }
201
+ return {
202
+ registryPackagesMap,
203
+ registryPackageList,
204
+ installedPackages,
205
+ availablePackages,
206
+ availableTotal,
207
+ availableHasMore,
208
+ isLoadingAvailable,
209
+ isLoadingMoreAvailable,
210
+ availableError,
211
+ ensureAvailableLoaded,
212
+ fetchAvailablePage,
213
+ loadMoreAvailable,
214
+ setAvailableSearch,
215
+ fetchPackagesByDocumentType,
216
+ updateRegistryPackageStatus,
217
+ registerFallbackRegistryPackage
218
+ };
219
+ }
220
+ /**
221
+ * Build a RegistryPackage from a trimmed paginated list item. Version metadata
222
+ * (distTags/versions) and documentTypes are absent — the row lazy-loads them.
223
+ */
224
+ function makeRegistryPackageFromListItem(item, status) {
225
+ return {
226
+ name: item.name,
227
+ path: item.path,
228
+ documentTypes: [],
229
+ version: item.version,
230
+ status,
231
+ manifest: {
232
+ name: item.name,
233
+ ...item.description !== void 0 ? { description: item.description } : {},
234
+ ...item.category !== void 0 ? { category: item.category } : {},
235
+ ...item.publisher !== void 0 ? { publisher: item.publisher } : {}
236
+ }
237
+ };
238
+ }
239
+ function makeRegistryPackageFromDocumentModelLib(documentModelLib, status, version) {
240
+ return {
241
+ name: documentModelLib.manifest.name,
242
+ path: "stub-path",
243
+ documentTypes: documentModelLib.documentModels.map((d) => d.documentModel.global.id),
244
+ status,
245
+ manifest: slimManifest(documentModelLib.manifest),
246
+ version
247
+ };
248
+ }
249
+ function makeRegistryPackageFromPackageInfo(packageInfo, status) {
250
+ return {
251
+ ...packageInfo,
252
+ manifest: slimManifest(packageInfo.manifest),
253
+ documentTypes: packageInfo.manifest?.documentModels?.map((d) => d.id) ?? [],
254
+ status
255
+ };
256
+ }
257
+ /**
258
+ * Like usehooks-ts' useLocalStorage, but persistence is best-effort: a failed
259
+ * `setItem` (e.g. QuotaExceededError on an oversized payload) keeps the
260
+ * in-memory state so the package manager still works for the session.
261
+ * useLocalStorage couples the state update to the write — when the write
262
+ * threw, the freshly fetched package list was discarded and the registry UI
263
+ * rendered (and searched) an empty list.
264
+ *
265
+ * The key is derived from the boot-time runtime config and never changes
266
+ * within a session, so no key-change rehydration is needed.
267
+ */
268
+ function useBestEffortLocalStorage(key, initialValue) {
269
+ const [value, setValue] = useState(() => readJsonFromStorage(key) ?? initialValue);
270
+ useEffect(() => {
271
+ try {
272
+ window.localStorage.setItem(key, JSON.stringify(value));
273
+ } catch (error) {
274
+ try {
275
+ window.localStorage.removeItem(key);
276
+ window.localStorage.setItem(key, JSON.stringify(value));
277
+ } catch {
278
+ console.warn(`Failed to persist "${key}" to localStorage; continuing with in-memory data.`, error);
279
+ }
280
+ }
281
+ }, [key, value]);
282
+ return [value, setValue];
283
+ }
284
+ function readJsonFromStorage(key) {
285
+ try {
286
+ const raw = window.localStorage.getItem(key);
287
+ return raw === null ? null : JSON.parse(raw);
288
+ } catch {
289
+ return null;
290
+ }
291
+ }
292
+ /**
293
+ * When refreshing a cached entry, promote `"available"` to whatever the
294
+ * packageManager now reports — the cached `"available"` was almost certainly
295
+ * recorded before `packageManager.addPackages()` finished on a prior session.
296
+ * Never downgrade an already-installed entry, and never overwrite a deliberate
297
+ * `"dismissed"` choice.
298
+ */
299
+ function promoteStatus(cachedStatus, packageSource) {
300
+ if (cachedStatus !== "available") return cachedStatus;
301
+ if (packageSource === null) return cachedStatus;
302
+ return getPackageStatusFromPackageSource(packageSource);
303
+ }
304
+ function getPackageStatusFromPackageSource(packageSource) {
305
+ if (packageSource === null) return "available";
306
+ if (packageSource === "local-install" || packageSource === "common" || packageSource === "project") return "local-install";
307
+ if (packageSource === "registry-install") return "registry-install";
308
+ return "available";
309
+ }
310
+ //#endregion
311
+ export { useRegistryPackages as t };
312
+
313
+ //# sourceMappingURL=useRegistryPackages-DMhCvTWq.js.map
314
+ //# debugId=a2bca0ce-adce-512d-a646-5adf41d1dd3f