@trops/dash-core 0.1.370 → 0.1.372

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.
package/dist/index.esm.js CHANGED
@@ -4731,47 +4731,87 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
4731
4731
  _useState0 = _slicedToArray(_useState9, 2),
4732
4732
  selectedPackageName = _useState0[0],
4733
4733
  setSelectedPackageName = _useState0[1];
4734
- var search = useCallback(/*#__PURE__*/function () {
4735
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
4736
- var _window$mainApi;
4737
- var result, _t;
4734
+
4735
+ // Auth state when the empty state shows up to a non-signed-in user,
4736
+ // they may not realize private packages they own are filtered out.
4737
+ var _useState1 = useState(null),
4738
+ _useState10 = _slicedToArray(_useState1, 2),
4739
+ registryAuthed = _useState10[0],
4740
+ setRegistryAuthed = _useState10[1];
4741
+ var _useState11 = useState(false),
4742
+ _useState12 = _slicedToArray(_useState11, 2),
4743
+ showAuthFromEmpty = _useState12[0],
4744
+ setShowAuthFromEmpty = _useState12[1];
4745
+ useEffect(function () {
4746
+ var cancelled = false;
4747
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
4748
+ var _window$mainApi, status;
4738
4749
  return _regeneratorRuntime.wrap(function (_context) {
4739
4750
  while (1) switch (_context.prev = _context.next) {
4740
4751
  case 0:
4741
- if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchDashboards) {
4742
- _context.next = 1;
4752
+ _context.prev = 0;
4753
+ _context.next = 1;
4754
+ return (_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.registryAuth) === null || _window$mainApi === void 0 ? void 0 : _window$mainApi.getStatus();
4755
+ case 1:
4756
+ status = _context.sent;
4757
+ if (!cancelled) setRegistryAuthed(!!(status !== null && status !== void 0 && status.authenticated));
4758
+ _context.next = 3;
4759
+ break;
4760
+ case 2:
4761
+ _context.prev = 2;
4762
+ _context["catch"](0);
4763
+ if (!cancelled) setRegistryAuthed(false);
4764
+ case 3:
4765
+ case "end":
4766
+ return _context.stop();
4767
+ }
4768
+ }, _callee, null, [[0, 2]]);
4769
+ }))();
4770
+ return function () {
4771
+ cancelled = true;
4772
+ };
4773
+ }, [showAuthFromEmpty]);
4774
+ var search = useCallback(/*#__PURE__*/function () {
4775
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(query) {
4776
+ var _window$mainApi2;
4777
+ var result, _t2;
4778
+ return _regeneratorRuntime.wrap(function (_context2) {
4779
+ while (1) switch (_context2.prev = _context2.next) {
4780
+ case 0:
4781
+ if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.registry) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.searchDashboards) {
4782
+ _context2.next = 1;
4743
4783
  break;
4744
4784
  }
4745
4785
  setPackages([]);
4746
- return _context.abrupt("return");
4786
+ return _context2.abrupt("return");
4747
4787
  case 1:
4748
4788
  setIsLoading(true);
4749
4789
  setError(null);
4750
- _context.prev = 2;
4751
- _context.next = 3;
4790
+ _context2.prev = 2;
4791
+ _context2.next = 3;
4752
4792
  return window.mainApi.registry.searchDashboards(query || "", {});
4753
4793
  case 3:
4754
- result = _context.sent;
4794
+ result = _context2.sent;
4755
4795
  setPackages((result === null || result === void 0 ? void 0 : result.packages) || []);
4756
- _context.next = 5;
4796
+ _context2.next = 5;
4757
4797
  break;
4758
4798
  case 4:
4759
- _context.prev = 4;
4760
- _t = _context["catch"](2);
4761
- setError(_t.message || "Failed to search dashboard registry");
4799
+ _context2.prev = 4;
4800
+ _t2 = _context2["catch"](2);
4801
+ setError(_t2.message || "Failed to search dashboard registry");
4762
4802
  setPackages([]);
4763
4803
  case 5:
4764
- _context.prev = 5;
4804
+ _context2.prev = 5;
4765
4805
  setIsLoading(false);
4766
- return _context.finish(5);
4806
+ return _context2.finish(5);
4767
4807
  case 6:
4768
4808
  case "end":
4769
- return _context.stop();
4809
+ return _context2.stop();
4770
4810
  }
4771
- }, _callee, null, [[2, 4, 5, 6]]);
4811
+ }, _callee2, null, [[2, 4, 5, 6]]);
4772
4812
  }));
4773
4813
  return function (_x) {
4774
- return _ref2.apply(this, arguments);
4814
+ return _ref3.apply(this, arguments);
4775
4815
  };
4776
4816
  }(), []);
4777
4817
 
@@ -4850,12 +4890,27 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
4850
4890
  })]
4851
4891
  });
4852
4892
  } else if (packages.length === 0) {
4853
- listBody = /*#__PURE__*/jsx("div", {
4854
- className: "px-4 py-8 text-center",
4855
- children: /*#__PURE__*/jsx(Paragraph, {
4893
+ listBody = /*#__PURE__*/jsxs("div", {
4894
+ className: "px-4 py-8 text-center space-y-3",
4895
+ children: [/*#__PURE__*/jsx(Paragraph, {
4856
4896
  className: "text-sm opacity-50",
4857
4897
  children: searchQuery ? "No dashboards match your search." : "No dashboard packages available."
4858
- })
4898
+ }), registryAuthed === false && /*#__PURE__*/jsxs("div", {
4899
+ className: "inline-flex flex-col items-center gap-2 px-4 py-3 rounded-lg bg-amber-900/15 border border-amber-700/30",
4900
+ children: [/*#__PURE__*/jsx(Paragraph, {
4901
+ className: "text-xs text-amber-200",
4902
+ children: "Sign in to the registry to see your private dashboards."
4903
+ }), /*#__PURE__*/jsx(Button, {
4904
+ title: "Sign in to Registry",
4905
+ bgColor: "bg-indigo-600",
4906
+ hoverBackgroundColor: "hover:bg-indigo-500",
4907
+ textSize: "text-sm",
4908
+ padding: "py-1 px-3",
4909
+ onClick: function onClick() {
4910
+ return setShowAuthFromEmpty(true);
4911
+ }
4912
+ })]
4913
+ })]
4859
4914
  });
4860
4915
  } else {
4861
4916
  listBody = /*#__PURE__*/jsx("div", {
@@ -4905,6 +4960,18 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
4905
4960
  }), !isLoading && !error && packages.length > 0 && /*#__PURE__*/jsxs("div", {
4906
4961
  className: "flex-shrink-0 px-4 py-2 text-[10px] opacity-40 border-t border-white/10",
4907
4962
  children: [packages.length, " dashboard", packages.length !== 1 ? "s" : ""]
4963
+ }), /*#__PURE__*/jsx(RegistryAuthModal, {
4964
+ isOpen: showAuthFromEmpty,
4965
+ setIsOpen: setShowAuthFromEmpty,
4966
+ onAuthenticated: function onAuthenticated() {
4967
+ setShowAuthFromEmpty(false);
4968
+ setRegistryAuthed(true);
4969
+ search(searchQuery);
4970
+ },
4971
+ onCancel: function onCancel() {
4972
+ return setShowAuthFromEmpty(false);
4973
+ },
4974
+ message: "Sign in to see your private dashboards and install ones you've published."
4908
4975
  })]
4909
4976
  });
4910
4977
  };
@@ -38233,47 +38300,86 @@ var DiscoverThemesDetail = function DiscoverThemesDetail(_ref) {
38233
38300
  _useState0 = _slicedToArray(_useState9, 2),
38234
38301
  selectedPackageName = _useState0[0],
38235
38302
  setSelectedPackageName = _useState0[1];
38236
- var search = useCallback(/*#__PURE__*/function () {
38237
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
38238
- var _window$mainApi;
38239
- var result, _t;
38303
+
38304
+ // Auth state for the empty-state hint.
38305
+ var _useState1 = useState(null),
38306
+ _useState10 = _slicedToArray(_useState1, 2),
38307
+ registryAuthed = _useState10[0],
38308
+ setRegistryAuthed = _useState10[1];
38309
+ var _useState11 = useState(false),
38310
+ _useState12 = _slicedToArray(_useState11, 2),
38311
+ showAuthFromEmpty = _useState12[0],
38312
+ setShowAuthFromEmpty = _useState12[1];
38313
+ useEffect(function () {
38314
+ var cancelled = false;
38315
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
38316
+ var _window$mainApi, status;
38240
38317
  return _regeneratorRuntime.wrap(function (_context) {
38241
38318
  while (1) switch (_context.prev = _context.next) {
38242
38319
  case 0:
38243
- if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchThemes) {
38244
- _context.next = 1;
38320
+ _context.prev = 0;
38321
+ _context.next = 1;
38322
+ return (_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.registryAuth) === null || _window$mainApi === void 0 ? void 0 : _window$mainApi.getStatus();
38323
+ case 1:
38324
+ status = _context.sent;
38325
+ if (!cancelled) setRegistryAuthed(!!(status !== null && status !== void 0 && status.authenticated));
38326
+ _context.next = 3;
38327
+ break;
38328
+ case 2:
38329
+ _context.prev = 2;
38330
+ _context["catch"](0);
38331
+ if (!cancelled) setRegistryAuthed(false);
38332
+ case 3:
38333
+ case "end":
38334
+ return _context.stop();
38335
+ }
38336
+ }, _callee, null, [[0, 2]]);
38337
+ }))();
38338
+ return function () {
38339
+ cancelled = true;
38340
+ };
38341
+ }, [showAuthFromEmpty]);
38342
+ var search = useCallback(/*#__PURE__*/function () {
38343
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(query) {
38344
+ var _window$mainApi2;
38345
+ var result, _t2;
38346
+ return _regeneratorRuntime.wrap(function (_context2) {
38347
+ while (1) switch (_context2.prev = _context2.next) {
38348
+ case 0:
38349
+ if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.registry) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.searchThemes) {
38350
+ _context2.next = 1;
38245
38351
  break;
38246
38352
  }
38247
38353
  setPackages([]);
38248
- return _context.abrupt("return");
38354
+ return _context2.abrupt("return");
38249
38355
  case 1:
38250
38356
  setIsLoading(true);
38251
38357
  setError(null);
38252
- _context.prev = 2;
38253
- _context.next = 3;
38358
+ _context2.prev = 2;
38359
+ _context2.next = 3;
38254
38360
  return window.mainApi.registry.searchThemes(query || "", {});
38255
38361
  case 3:
38256
- result = _context.sent;
38362
+ result = _context2.sent;
38257
38363
  setPackages((result === null || result === void 0 ? void 0 : result.packages) || []);
38258
- _context.next = 5;
38364
+ _context2.next = 5;
38259
38365
  break;
38260
38366
  case 4:
38261
- _context.prev = 4;
38262
- _t = _context["catch"](2);
38263
- setError(_t.message || "Failed to search theme registry");
38367
+ _context2.prev = 4;
38368
+ _t2 = _context2["catch"](2);
38369
+ setError(_t2.message || "Failed to search theme registry");
38264
38370
  setPackages([]);
38265
38371
  case 5:
38266
- _context.prev = 5;
38372
+ _context2.prev = 5;
38267
38373
  setIsLoading(false);
38268
- return _context.finish(5);
38374
+ return _context2.finish(5);
38269
38375
  case 6:
38270
38376
  case "end":
38271
- return _context.stop();
38377
+ return _context2.stop();
38272
38378
  }
38273
- }, _callee, null, [[2, 4, 5, 6]]);
38379
+ }, _callee2, null, [[2, 4, 5, 6]]);
38274
38380
  }));
38275
38381
  return function (_x) {
38276
- return _ref2.apply(this, arguments);
38382
+ return _ref3.apply(this, arguments);
38277
38383
  };
38278
38384
  }(), []);
38279
38385
 
@@ -38352,12 +38458,27 @@ var DiscoverThemesDetail = function DiscoverThemesDetail(_ref) {
38352
38458
  })]
38353
38459
  });
38354
38460
  } else if (packages.length === 0) {
38355
- listBody = /*#__PURE__*/jsx("div", {
38356
- className: "px-4 py-8 text-center",
38357
- children: /*#__PURE__*/jsx(Paragraph, {
38461
+ listBody = /*#__PURE__*/jsxs("div", {
38462
+ className: "px-4 py-8 text-center space-y-3",
38463
+ children: [/*#__PURE__*/jsx(Paragraph, {
38358
38464
  className: "text-sm opacity-50",
38359
38465
  children: searchQuery ? "No themes match your search." : "No theme packages available."
38360
- })
38466
+ }), registryAuthed === false && /*#__PURE__*/jsxs("div", {
38467
+ className: "inline-flex flex-col items-center gap-2 px-4 py-3 rounded-lg bg-amber-900/15 border border-amber-700/30",
38468
+ children: [/*#__PURE__*/jsx(Paragraph, {
38469
+ className: "text-xs text-amber-200",
38470
+ children: "Sign in to the registry to see your private themes."
38471
+ }), /*#__PURE__*/jsx(Button, {
38472
+ title: "Sign in to Registry",
38473
+ bgColor: "bg-indigo-600",
38474
+ hoverBackgroundColor: "hover:bg-indigo-500",
38475
+ textSize: "text-sm",
38476
+ padding: "py-1 px-3",
38477
+ onClick: function onClick() {
38478
+ return setShowAuthFromEmpty(true);
38479
+ }
38480
+ })]
38481
+ })]
38361
38482
  });
38362
38483
  } else {
38363
38484
  listBody = /*#__PURE__*/jsx("div", {
@@ -38409,6 +38530,18 @@ var DiscoverThemesDetail = function DiscoverThemesDetail(_ref) {
38409
38530
  }), !isLoading && !error && packages.length > 0 && /*#__PURE__*/jsxs("div", {
38410
38531
  className: "flex-shrink-0 px-4 py-2 text-[10px] opacity-40 border-t border-white/10",
38411
38532
  children: [packages.length, " theme", packages.length !== 1 ? "s" : ""]
38533
+ }), /*#__PURE__*/jsx(RegistryAuthModal, {
38534
+ isOpen: showAuthFromEmpty,
38535
+ setIsOpen: setShowAuthFromEmpty,
38536
+ onAuthenticated: function onAuthenticated() {
38537
+ setShowAuthFromEmpty(false);
38538
+ setRegistryAuthed(true);
38539
+ search(searchQuery);
38540
+ },
38541
+ onCancel: function onCancel() {
38542
+ return setShowAuthFromEmpty(false);
38543
+ },
38544
+ message: "Sign in to see your private themes and install ones you've published."
38412
38545
  })]
38413
38546
  });
38414
38547
  };
@@ -46918,37 +47051,78 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
46918
47051
  toolConflictWarning = _useState4[0],
46919
47052
  setToolConflictWarning = _useState4[1];
46920
47053
 
46921
- // Install progress modal state
46922
- var _useState5 = useState(false),
47054
+ // Auth state used to nudge unauthenticated users toward signing in
47055
+ // when the empty state appears (so they realize private packages are
47056
+ // hidden behind auth).
47057
+ var _useState5 = useState(null),
46923
47058
  _useState6 = _slicedToArray(_useState5, 2),
46924
- showProgressModal = _useState6[0],
46925
- setShowProgressModal = _useState6[1];
46926
- var _useState7 = useState([]),
47059
+ registryAuthed = _useState6[0],
47060
+ setRegistryAuthed = _useState6[1];
47061
+ var _useState7 = useState(false),
46927
47062
  _useState8 = _slicedToArray(_useState7, 2),
46928
- progressWidgets = _useState8[0],
46929
- setProgressWidgets = _useState8[1];
47063
+ showAuthFromEmpty = _useState8[0],
47064
+ setShowAuthFromEmpty = _useState8[1];
47065
+ useEffect(function () {
47066
+ var cancelled = false;
47067
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
47068
+ var _window$mainApi, status;
47069
+ return _regeneratorRuntime.wrap(function (_context) {
47070
+ while (1) switch (_context.prev = _context.next) {
47071
+ case 0:
47072
+ _context.prev = 0;
47073
+ _context.next = 1;
47074
+ return (_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.registryAuth) === null || _window$mainApi === void 0 ? void 0 : _window$mainApi.getStatus();
47075
+ case 1:
47076
+ status = _context.sent;
47077
+ if (!cancelled) setRegistryAuthed(!!(status !== null && status !== void 0 && status.authenticated));
47078
+ _context.next = 3;
47079
+ break;
47080
+ case 2:
47081
+ _context.prev = 2;
47082
+ _context["catch"](0);
47083
+ if (!cancelled) setRegistryAuthed(false);
47084
+ case 3:
47085
+ case "end":
47086
+ return _context.stop();
47087
+ }
47088
+ }, _callee, null, [[0, 2]]);
47089
+ }))();
47090
+ return function () {
47091
+ cancelled = true;
47092
+ };
47093
+ }, [needsAuth, showAuthFromEmpty]);
47094
+
47095
+ // Install progress modal state
46930
47096
  var _useState9 = useState(false),
46931
47097
  _useState0 = _slicedToArray(_useState9, 2),
46932
- progressComplete = _useState0[0],
46933
- setProgressComplete = _useState0[1];
47098
+ showProgressModal = _useState0[0],
47099
+ setShowProgressModal = _useState0[1];
47100
+ var _useState1 = useState([]),
47101
+ _useState10 = _slicedToArray(_useState1, 2),
47102
+ progressWidgets = _useState10[0],
47103
+ setProgressWidgets = _useState10[1];
47104
+ var _useState11 = useState(false),
47105
+ _useState12 = _slicedToArray(_useState11, 2),
47106
+ progressComplete = _useState12[0],
47107
+ setProgressComplete = _useState12[1];
46934
47108
  var installActiveRef = useRef(false);
46935
47109
  var pendingInstallRef = useRef(null);
46936
47110
 
46937
47111
  // Track installed package names (same pattern as WidgetSidebar)
46938
- var _useState1 = useState(new Set()),
46939
- _useState10 = _slicedToArray(_useState1, 2),
46940
- installedPackageNames = _useState10[0],
46941
- setInstalledPackageNames = _useState10[1];
46942
- var loadInstalledPackages = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
47112
+ var _useState13 = useState(new Set()),
47113
+ _useState14 = _slicedToArray(_useState13, 2),
47114
+ installedPackageNames = _useState14[0],
47115
+ setInstalledPackageNames = _useState14[1];
47116
+ var loadInstalledPackages = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
46943
47117
  var widgets, names, _iterator, _step, w, folderName, _folderName;
46944
- return _regeneratorRuntime.wrap(function (_context) {
46945
- while (1) switch (_context.prev = _context.next) {
47118
+ return _regeneratorRuntime.wrap(function (_context2) {
47119
+ while (1) switch (_context2.prev = _context2.next) {
46946
47120
  case 0:
46947
- _context.prev = 0;
46948
- _context.next = 1;
47121
+ _context2.prev = 0;
47122
+ _context2.next = 1;
46949
47123
  return window.mainApi.widgets.list();
46950
47124
  case 1:
46951
- widgets = _context.sent;
47125
+ widgets = _context2.sent;
46952
47126
  names = new Set();
46953
47127
  _iterator = _createForOfIteratorHelper$7(widgets);
46954
47128
  try {
@@ -46973,16 +47147,16 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
46973
47147
  _iterator.f();
46974
47148
  }
46975
47149
  setInstalledPackageNames(names);
46976
- _context.next = 3;
47150
+ _context2.next = 3;
46977
47151
  break;
46978
47152
  case 2:
46979
- _context.prev = 2;
46980
- _context["catch"](0);
47153
+ _context2.prev = 2;
47154
+ _context2["catch"](0);
46981
47155
  case 3:
46982
47156
  case "end":
46983
- return _context.stop();
47157
+ return _context2.stop();
46984
47158
  }
46985
- }, _callee, null, [[0, 2]]);
47159
+ }, _callee2, null, [[0, 2]]);
46986
47160
  })), []);
46987
47161
  useEffect(function () {
46988
47162
  loadInstalledPackages();
@@ -47069,9 +47243,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47069
47243
  var p = _step3.value;
47070
47244
  if (!((_p$requiredTools = p.requiredTools) !== null && _p$requiredTools !== void 0 && _p$requiredTools.length) || p.providerClass !== "mcp") return 1; // continue
47071
47245
  // Find matching user provider
47072
- var matchingProviders = Object.entries(providers).filter(function (_ref3) {
47073
- var _ref4 = _slicedToArray(_ref3, 2),
47074
- prov = _ref4[1];
47246
+ var matchingProviders = Object.entries(providers).filter(function (_ref4) {
47247
+ var _ref5 = _slicedToArray(_ref4, 2),
47248
+ prov = _ref5[1];
47075
47249
  return prov.type === p.type && prov.providerClass === "mcp" && prov.allowedTools;
47076
47250
  });
47077
47251
  var _iterator4 = _createForOfIteratorHelper$7(matchingProviders),
@@ -47212,6 +47386,20 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47212
47386
  },
47213
47387
  onCancel: clearNeedsAuth,
47214
47388
  message: "Sign in to install this widget from the Dash Registry."
47389
+ }), /*#__PURE__*/jsx(RegistryAuthModal, {
47390
+ isOpen: showAuthFromEmpty,
47391
+ setIsOpen: setShowAuthFromEmpty,
47392
+ onAuthenticated: function onAuthenticated() {
47393
+ setShowAuthFromEmpty(false);
47394
+ setRegistryAuthed(true);
47395
+ // Trigger a refresh of the list now that the user can see
47396
+ // their private packages.
47397
+ retry();
47398
+ },
47399
+ onCancel: function onCancel() {
47400
+ return setShowAuthFromEmpty(false);
47401
+ },
47402
+ message: "Sign in to see your private packages and install widgets you've published."
47215
47403
  })]
47216
47404
  });
47217
47405
  }
@@ -47247,12 +47435,27 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47247
47435
  })]
47248
47436
  });
47249
47437
  } else if (packages.length === 0) {
47250
- listBody = /*#__PURE__*/jsx("div", {
47251
- className: "px-4 py-8 text-center",
47252
- children: /*#__PURE__*/jsx(Paragraph, {
47438
+ listBody = /*#__PURE__*/jsxs("div", {
47439
+ className: "px-4 py-8 text-center space-y-3",
47440
+ children: [/*#__PURE__*/jsx(Paragraph, {
47253
47441
  className: "text-sm opacity-50",
47254
47442
  children: searchQuery ? "No packages match your search." : "No packages available."
47255
- })
47443
+ }), registryAuthed === false && /*#__PURE__*/jsxs("div", {
47444
+ className: "inline-flex flex-col items-center gap-2 px-4 py-3 rounded-lg bg-amber-900/15 border border-amber-700/30",
47445
+ children: [/*#__PURE__*/jsx(Paragraph, {
47446
+ className: "text-xs text-amber-200",
47447
+ children: "Sign in to the registry to see your private packages."
47448
+ }), /*#__PURE__*/jsx(Button, {
47449
+ title: "Sign in to Registry",
47450
+ bgColor: "bg-indigo-600",
47451
+ hoverBackgroundColor: "hover:bg-indigo-500",
47452
+ textSize: "text-sm",
47453
+ padding: "py-1 px-3",
47454
+ onClick: function onClick() {
47455
+ return setShowAuthFromEmpty(true);
47456
+ }
47457
+ })]
47458
+ })]
47256
47459
  });
47257
47460
  } else {
47258
47461
  listBody = /*#__PURE__*/jsx("div", {