@trops/dash-core 0.1.127 → 0.1.129

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
@@ -2688,9 +2688,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
2688
2688
 
2689
2689
  function ownKeys$z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2690
2690
  function _objectSpread$z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2691
- function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2692
- function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
2693
- function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2691
+ function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2692
+ function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$b(r, a) : void 0; } }
2693
+ function _arrayLikeToArray$b(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2694
2694
  /**
2695
2695
  * Layout template definitions for the dashboard template picker.
2696
2696
  *
@@ -2926,7 +2926,7 @@ function createLayoutFromTemplate(template) {
2926
2926
  cols: template.cols,
2927
2927
  gap: "gap-2"
2928
2928
  };
2929
- var _iterator = _createForOfIteratorHelper$a(template.cells),
2929
+ var _iterator = _createForOfIteratorHelper$b(template.cells),
2930
2930
  _step;
2931
2931
  try {
2932
2932
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -3990,13 +3990,21 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
3990
3990
  // Reset state when modal opens
3991
3991
  useEffect(function () {
3992
3992
  if (open) {
3993
+ var _Object$entries$sort$;
3993
3994
  setCreationMethod(null);
3994
3995
  setDashboardName("");
3995
3996
  setActiveStep(0);
3996
3997
  setLocalMenuItems(menuItems || []);
3997
3998
  setSelectedMenuId(menuItems && menuItems.length > 0 ? menuItems[0].id : 1);
3998
3999
  setSelectedTemplate(layoutTemplates[0]);
3999
- setSelectedThemeKey(null);
4000
+ var fallback = themes ? ((_Object$entries$sort$ = Object.entries(themes).sort(function (_ref2, _ref3) {
4001
+ var _ref4 = _slicedToArray(_ref2, 2),
4002
+ a = _ref4[1];
4003
+ var _ref5 = _slicedToArray(_ref3, 2),
4004
+ b = _ref5[1];
4005
+ return (a.name || "").localeCompare(b.name || "");
4006
+ })[0]) === null || _Object$entries$sort$ === void 0 ? void 0 : _Object$entries$sort$[0]) || null : null;
4007
+ setSelectedThemeKey(appThemeKey || fallback);
4000
4008
  setImportedWorkspace(null);
4001
4009
  setSelectedFile(null);
4002
4010
  setIsCreatingFolder(false);
@@ -4322,7 +4330,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4322
4330
  textColor: "text-gray-300"
4323
4331
  }), /*#__PURE__*/jsx("p", {
4324
4332
  className: "text-base font-normal text-gray-400",
4325
- children: "Choose a theme for this dashboard, or use the application default."
4333
+ children: "Choose a theme for this dashboard."
4326
4334
  }), selectedThemeKey !== null && themes && themes[selectedThemeKey] && /*#__PURE__*/jsxs(Fragment, {
4327
4335
  children: [/*#__PURE__*/jsxs("div", {
4328
4336
  className: "flex flex-row items-center space-x-2 mt-4 pt-4 border-t border-gray-700",
@@ -4343,45 +4351,19 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4343
4351
  className: "w-8 h-8 rounded bg-".concat(themes[selectedThemeKey].tertiary, "-500")
4344
4352
  })]
4345
4353
  })]
4346
- }), selectedThemeKey === null && /*#__PURE__*/jsxs("div", {
4347
- className: "flex flex-row items-center space-x-2 mt-4 pt-4 border-t border-gray-700",
4348
- children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
4349
- icon: "palette",
4350
- className: "text-blue-400"
4351
- }), /*#__PURE__*/jsx("span", {
4352
- className: "text-sm font-medium text-gray-300",
4353
- children: "App Default"
4354
- })]
4355
4354
  })]
4356
- }), /*#__PURE__*/jsxs("div", {
4355
+ }), /*#__PURE__*/jsx("div", {
4357
4356
  className: "flex flex-col w-2/3 p-6 overflow-y-auto space-y-2",
4358
- children: [/*#__PURE__*/jsxs("div", {
4359
- className: "flex flex-row items-center px-4 py-3 rounded-lg cursor-pointer transition-all ".concat(selectedThemeKey === null ? "ring-2 ring-blue-500 bg-gray-700" : "hover:bg-gray-750 hover:ring-1 hover:ring-gray-600 bg-gray-800/50"),
4360
- onClick: function onClick() {
4361
- return setSelectedThemeKey(null);
4362
- },
4363
- children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
4364
- icon: "palette",
4365
- className: "w-5 h-5 mr-3 ".concat(selectedThemeKey === null ? "text-blue-400" : "text-gray-400")
4366
- }), /*#__PURE__*/jsx("span", {
4367
- className: "text-sm font-medium ".concat(selectedThemeKey === null ? "text-blue-300" : "text-gray-300"),
4368
- children: "App Default"
4369
- }), /*#__PURE__*/jsx("div", {
4370
- className: "flex flex-row space-x-1 ml-auto",
4371
- children: themes && appThemeKey && themes[appThemeKey] && /*#__PURE__*/jsxs(Fragment, {
4372
- children: [themes[appThemeKey].primary && /*#__PURE__*/jsx("div", {
4373
- className: "w-4 h-4 rounded bg-".concat(themes[appThemeKey].primary, "-500")
4374
- }), themes[appThemeKey].secondary && /*#__PURE__*/jsx("div", {
4375
- className: "w-4 h-4 rounded bg-".concat(themes[appThemeKey].secondary, "-500")
4376
- }), themes[appThemeKey].tertiary && /*#__PURE__*/jsx("div", {
4377
- className: "w-4 h-4 rounded bg-".concat(themes[appThemeKey].tertiary, "-500")
4378
- })]
4379
- })
4380
- })]
4381
- }), themes && Object.entries(themes).map(function (_ref2) {
4382
- var _ref3 = _slicedToArray(_ref2, 2),
4383
- key = _ref3[0],
4384
- t = _ref3[1];
4357
+ children: themes && Object.entries(themes).sort(function (_ref6, _ref7) {
4358
+ var _ref8 = _slicedToArray(_ref6, 2),
4359
+ a = _ref8[1];
4360
+ var _ref9 = _slicedToArray(_ref7, 2),
4361
+ b = _ref9[1];
4362
+ return (a.name || "").localeCompare(b.name || "");
4363
+ }).map(function (_ref0) {
4364
+ var _ref1 = _slicedToArray(_ref0, 2),
4365
+ key = _ref1[0],
4366
+ t = _ref1[1];
4385
4367
  var isThemeSelected = selectedThemeKey === key;
4386
4368
  return /*#__PURE__*/jsxs("div", {
4387
4369
  className: "flex flex-row items-center px-4 py-3 rounded-lg cursor-pointer transition-all ".concat(isThemeSelected ? "ring-2 ring-blue-500 bg-gray-700" : "hover:bg-gray-750 hover:ring-1 hover:ring-gray-600 bg-gray-800/50"),
@@ -4405,7 +4387,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4405
4387
  })]
4406
4388
  })]
4407
4389
  }, key);
4408
- })]
4390
+ })
4409
4391
  })]
4410
4392
  });
4411
4393
  }
@@ -9757,9 +9739,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
9757
9739
  };
9758
9740
 
9759
9741
  var _excluded$5 = ["rows", "cols"];
9760
- function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9761
- function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$9(r, a) : void 0; } }
9762
- function _arrayLikeToArray$9(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9742
+ function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9743
+ function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
9744
+ function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9763
9745
  function ownKeys$w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9764
9746
  function _objectSpread$w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$w(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9765
9747
  var defaultGrid = {
@@ -9912,7 +9894,7 @@ function GridEditor(_ref) {
9912
9894
  function sortObjectByKeys(obj) {
9913
9895
  var sortedKeys = Object.keys(obj).sort();
9914
9896
  var sortedObj = {};
9915
- var _iterator = _createForOfIteratorHelper$9(sortedKeys),
9897
+ var _iterator = _createForOfIteratorHelper$a(sortedKeys),
9916
9898
  _step;
9917
9899
  try {
9918
9900
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13177,9 +13159,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
13177
13159
  });
13178
13160
  };
13179
13161
 
13180
- function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13181
- function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$8(r, a) : void 0; } }
13182
- function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13162
+ function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13163
+ function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$9(r, a) : void 0; } }
13164
+ function _arrayLikeToArray$9(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13183
13165
  function ownKeys$s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13184
13166
  function _objectSpread$s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13185
13167
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -13446,11 +13428,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
13446
13428
 
13447
13429
  // Flatten all widgets from all packages for the widget list
13448
13430
  flatWidgets = [];
13449
- _iterator = _createForOfIteratorHelper$8(result.packages || []);
13431
+ _iterator = _createForOfIteratorHelper$9(result.packages || []);
13450
13432
  try {
13451
13433
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
13452
13434
  pkg = _step.value;
13453
- _iterator2 = _createForOfIteratorHelper$8(pkg.widgets || []);
13435
+ _iterator2 = _createForOfIteratorHelper$9(pkg.widgets || []);
13454
13436
  try {
13455
13437
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
13456
13438
  widget = _step2.value;
@@ -15006,9 +14988,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
15006
14988
  });
15007
14989
  };
15008
14990
 
15009
- function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
15010
- function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$7(r, a) : void 0; } }
15011
- function _arrayLikeToArray$7(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14991
+ function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
14992
+ function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$8(r, a) : void 0; } }
14993
+ function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
15012
14994
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
15013
14995
  var item = _ref.item,
15014
14996
  widget = _ref.widget,
@@ -15052,7 +15034,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
15052
15034
  var el = headerRef.current;
15053
15035
  if (!el) return;
15054
15036
  var observer = new ResizeObserver(function (entries) {
15055
- var _iterator = _createForOfIteratorHelper$7(entries),
15037
+ var _iterator = _createForOfIteratorHelper$8(entries),
15056
15038
  _step;
15057
15039
  try {
15058
15040
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -19844,9 +19826,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
19844
19826
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
19845
19827
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
19846
19828
 
19847
- function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
19848
- function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$6(r, a) : void 0; } }
19849
- function _arrayLikeToArray$6(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
19829
+ function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
19830
+ function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$7(r, a) : void 0; } }
19831
+ function _arrayLikeToArray$7(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
19850
19832
  function ownKeys$l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19851
19833
  function _objectSpread$l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19852
19834
  var DraggableCellBody = function DraggableCellBody(_ref) {
@@ -20374,7 +20356,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
20374
20356
  return selectable["delete"](cn);
20375
20357
  });
20376
20358
  var resolved = new Set();
20377
- var _iterator = _createForOfIteratorHelper$6(selectable),
20359
+ var _iterator = _createForOfIteratorHelper$7(selectable),
20378
20360
  _step;
20379
20361
  try {
20380
20362
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -22512,9 +22494,9 @@ function isWidgetResolvable(componentKey) {
22512
22494
 
22513
22495
  function ownKeys$k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22514
22496
  function _objectSpread$k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22515
- function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
22516
- function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$5(r, a) : void 0; } }
22517
- function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22497
+ function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
22498
+ function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$6(r, a) : void 0; } }
22499
+ function _arrayLikeToArray$6(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22518
22500
  /**
22519
22501
  * The model for all layout components used primarily in the renderLayout method
22520
22502
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -22526,7 +22508,7 @@ function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.lengt
22526
22508
  function sortObjectByKeys(obj) {
22527
22509
  var sortedKeys = Object.keys(obj).sort();
22528
22510
  var sortedObj = {};
22529
- var _iterator = _createForOfIteratorHelper$5(sortedKeys),
22511
+ var _iterator = _createForOfIteratorHelper$6(sortedKeys),
22530
22512
  _step;
22531
22513
  try {
22532
22514
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25783,9 +25765,9 @@ var useDashboard = function useDashboard() {
25783
25765
  });
25784
25766
  };
25785
25767
 
25786
- function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25787
- function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$4(r, a) : void 0; } }
25788
- function _arrayLikeToArray$4(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25768
+ function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25769
+ function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$5(r, a) : void 0; } }
25770
+ function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25789
25771
 
25790
25772
  /**
25791
25773
  * useWidgetProviders Hook
@@ -25836,7 +25818,7 @@ var useWidgetProviders = function useWidgetProviders() {
25836
25818
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
25837
25819
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
25838
25820
  var providers = {};
25839
- var _iterator = _createForOfIteratorHelper$4(providerDeclarations),
25821
+ var _iterator = _createForOfIteratorHelper$5(providerDeclarations),
25840
25822
  _step;
25841
25823
  try {
25842
25824
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28760,9 +28742,9 @@ var resolveIcon = function resolveIcon(iconName) {
28760
28742
  return FALLBACK;
28761
28743
  };
28762
28744
 
28763
- function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
28764
- function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$3(r, a) : void 0; } }
28765
- function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28745
+ function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
28746
+ function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$4(r, a) : void 0; } }
28747
+ function _arrayLikeToArray$4(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28766
28748
  /**
28767
28749
  * Validation utilities for grid-first dashboard architecture
28768
28750
  *
@@ -29001,7 +28983,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
29001
28983
 
29002
28984
  // Validate each cell
29003
28985
  var cells = [];
29004
- var _iterator = _createForOfIteratorHelper$3(cellNumbers),
28986
+ var _iterator = _createForOfIteratorHelper$4(cellNumbers),
29005
28987
  _step;
29006
28988
  try {
29007
28989
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -32764,18 +32746,21 @@ var DashboardDetail = function DashboardDetail(_ref2) {
32764
32746
  value: String(m.id)
32765
32747
  };
32766
32748
  });
32767
- var themeOptions = [{
32768
- label: "App Default",
32769
- value: ""
32770
- }].concat(_toConsumableArray(Object.entries(themes || {}).map(function (_ref3) {
32771
- var _ref4 = _slicedToArray(_ref3, 2),
32772
- key = _ref4[0],
32773
- t = _ref4[1];
32749
+ var themeOptions = _toConsumableArray(Object.entries(themes || {}).sort(function (_ref3, _ref4) {
32750
+ var _ref5 = _slicedToArray(_ref3, 2),
32751
+ a = _ref5[1];
32752
+ var _ref6 = _slicedToArray(_ref4, 2),
32753
+ b = _ref6[1];
32754
+ return (a.name || "").localeCompare(b.name || "");
32755
+ }).map(function (_ref7) {
32756
+ var _ref8 = _slicedToArray(_ref7, 2),
32757
+ key = _ref8[0],
32758
+ t = _ref8[1];
32774
32759
  return {
32775
32760
  label: t.name || key,
32776
32761
  value: key
32777
32762
  };
32778
- })));
32763
+ }));
32779
32764
  function handleChangeFolder(val) {
32780
32765
  if (!dashApi || !appId) return;
32781
32766
  var updated = deepCopy(ws);
@@ -32862,7 +32847,7 @@ var DashboardDetail = function DashboardDetail(_ref2) {
32862
32847
  return handleChangeTheme(val);
32863
32848
  },
32864
32849
  options: themeOptions,
32865
- placeholder: "App Default"
32850
+ placeholder: "Select a theme"
32866
32851
  }), /*#__PURE__*/jsxs("div", {
32867
32852
  className: "flex flex-row items-center gap-2",
32868
32853
  children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
@@ -37104,9 +37089,9 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
37104
37089
  });
37105
37090
  };
37106
37091
 
37107
- function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37108
- function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
37109
- function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37092
+ function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37093
+ function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$3(r, a) : void 0; } }
37094
+ function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37110
37095
 
37111
37096
  /**
37112
37097
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -37209,13 +37194,13 @@ var useRegistrySearch = function useRegistrySearch() {
37209
37194
  return c.toLowerCase();
37210
37195
  }));
37211
37196
  widgets = [];
37212
- _iterator = _createForOfIteratorHelper$2(pkgs);
37197
+ _iterator = _createForOfIteratorHelper$3(pkgs);
37213
37198
  try {
37214
37199
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
37215
37200
  pkg = _step.value;
37216
37201
  // Compute missing APIs for the entire package
37217
37202
  allApiProviders = [];
37218
- _iterator2 = _createForOfIteratorHelper$2(pkg.providers || []);
37203
+ _iterator2 = _createForOfIteratorHelper$3(pkg.providers || []);
37219
37204
  try {
37220
37205
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
37221
37206
  p = _step2.value;
@@ -37228,11 +37213,11 @@ var useRegistrySearch = function useRegistrySearch() {
37228
37213
  } finally {
37229
37214
  _iterator2.f();
37230
37215
  }
37231
- _iterator3 = _createForOfIteratorHelper$2(pkg.widgets || []);
37216
+ _iterator3 = _createForOfIteratorHelper$3(pkg.widgets || []);
37232
37217
  try {
37233
37218
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
37234
37219
  w = _step3.value;
37235
- _iterator5 = _createForOfIteratorHelper$2(w.providers || []);
37220
+ _iterator5 = _createForOfIteratorHelper$3(w.providers || []);
37236
37221
  try {
37237
37222
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
37238
37223
  _p = _step5.value;
@@ -37254,7 +37239,7 @@ var useRegistrySearch = function useRegistrySearch() {
37254
37239
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
37255
37240
  return !capSet.has(api.toLowerCase());
37256
37241
  });
37257
- _iterator4 = _createForOfIteratorHelper$2(pkg.widgets || []);
37242
+ _iterator4 = _createForOfIteratorHelper$3(pkg.widgets || []);
37258
37243
  try {
37259
37244
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
37260
37245
  widget = _step4.value;
@@ -37387,9 +37372,9 @@ var useRegistrySearch = function useRegistrySearch() {
37387
37372
  };
37388
37373
  };
37389
37374
 
37390
- function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37391
- function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
37392
- function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37375
+ function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37376
+ function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
37377
+ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37393
37378
  var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
37394
37379
  var onBack = _ref.onBack;
37395
37380
  var _useContext = useContext(ThemeContext),
@@ -37428,12 +37413,12 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
37428
37413
  var checkToolConflicts = function checkToolConflicts(widget) {
37429
37414
  var conflicts = [];
37430
37415
  var packageWidgets = widget.packageWidgets || [];
37431
- var _iterator = _createForOfIteratorHelper$1(packageWidgets),
37416
+ var _iterator = _createForOfIteratorHelper$2(packageWidgets),
37432
37417
  _step;
37433
37418
  try {
37434
37419
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
37435
37420
  var w = _step.value;
37436
- var _iterator2 = _createForOfIteratorHelper$1(w.providers || []),
37421
+ var _iterator2 = _createForOfIteratorHelper$2(w.providers || []),
37437
37422
  _step2;
37438
37423
  try {
37439
37424
  var _loop = function _loop() {
@@ -37446,7 +37431,7 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
37446
37431
  prov = _ref3[1];
37447
37432
  return prov.type === p.type && prov.providerClass === "mcp" && prov.allowedTools;
37448
37433
  });
37449
- var _iterator3 = _createForOfIteratorHelper$1(matchingProviders),
37434
+ var _iterator3 = _createForOfIteratorHelper$2(matchingProviders),
37450
37435
  _step3;
37451
37436
  try {
37452
37437
  var _loop2 = function _loop2() {
@@ -37652,9 +37637,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
37652
37637
  });
37653
37638
  };
37654
37639
 
37655
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37656
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
37657
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37640
+ function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
37641
+ function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
37642
+ function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37658
37643
 
37659
37644
  /**
37660
37645
  * Walk a workspace layout array (possibly nested via LayoutGridContainer
@@ -37663,7 +37648,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
37663
37648
  function collectComponentsFromLayout(layout) {
37664
37649
  var components = [];
37665
37650
  if (!Array.isArray(layout)) return components;
37666
- var _iterator = _createForOfIteratorHelper(layout),
37651
+ var _iterator = _createForOfIteratorHelper$1(layout),
37667
37652
  _step;
37668
37653
  try {
37669
37654
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -37692,7 +37677,7 @@ function findWidgetUsage(componentNames, workspaces) {
37692
37677
  if (!(componentNames !== null && componentNames !== void 0 && componentNames.length) || !(workspaces !== null && workspaces !== void 0 && workspaces.length)) return [];
37693
37678
  var nameSet = new Set(componentNames);
37694
37679
  var results = [];
37695
- var _iterator2 = _createForOfIteratorHelper(workspaces),
37680
+ var _iterator2 = _createForOfIteratorHelper$1(workspaces),
37696
37681
  _step2;
37697
37682
  try {
37698
37683
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -40291,6 +40276,9 @@ var PopoverItem = function PopoverItem(_ref4) {
40291
40276
  });
40292
40277
  };
40293
40278
 
40279
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
40280
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
40281
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
40294
40282
  var DraggableWidgetItem = function DraggableWidgetItem(_ref) {
40295
40283
  var widgetKey = _ref.widgetKey,
40296
40284
  widget = _ref.widget;
@@ -40354,11 +40342,35 @@ var DraggableWidgetItem = function DraggableWidgetItem(_ref) {
40354
40342
 
40355
40343
  var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40356
40344
  var registry = _ref2.registry,
40357
- onInstallSuccess = _ref2.onInstallSuccess;
40345
+ onInstallSuccess = _ref2.onInstallSuccess,
40346
+ installedPackageNames = _ref2.installedPackageNames;
40358
40347
  var _useState = useState(null),
40359
40348
  _useState2 = _slicedToArray(_useState, 2),
40360
40349
  selectedPackageName = _useState2[0],
40361
40350
  setSelectedPackageName = _useState2[1];
40351
+
40352
+ // Check if a package is installed by name or scope/name
40353
+ var isPackageInstalled = useCallback(function (pkg) {
40354
+ var _pkg$widgets;
40355
+ // Check via WidgetRegistry (externally installed packages)
40356
+ if (installedPackageNames.has(pkg.name) || pkg.scope && installedPackageNames.has("".concat(pkg.scope, "/").concat(pkg.name))) {
40357
+ return true;
40358
+ }
40359
+ // Check if any of this package's widgets are registered in ComponentManager
40360
+ // (covers built-in widgets loaded directly, not through the WidgetRegistry).
40361
+ // ComponentManager keys may be prefixed (e.g., "DashSamples_EventReceiverWidget")
40362
+ // so we also check if any key ends with the widget name.
40363
+ if (((_pkg$widgets = pkg.widgets) === null || _pkg$widgets === void 0 ? void 0 : _pkg$widgets.length) > 0) {
40364
+ var cMap = ComponentManager.componentMap();
40365
+ var cMapKeys = Object.keys(cMap);
40366
+ return pkg.widgets.some(function (w) {
40367
+ return w.name in cMap || cMapKeys.some(function (k) {
40368
+ return k === w.name || k.endsWith("_".concat(w.name));
40369
+ });
40370
+ });
40371
+ }
40372
+ return false;
40373
+ }, [installedPackageNames]);
40362
40374
  var selectedPackage = useMemo(function () {
40363
40375
  if (!selectedPackageName) return null;
40364
40376
  return registry.packages.find(function (pkg) {
@@ -40367,13 +40379,13 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40367
40379
  }, [selectedPackageName, registry.packages]);
40368
40380
  var handleInstall = useCallback(/*#__PURE__*/function () {
40369
40381
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(pkg) {
40370
- var _pkg$widgets;
40382
+ var _pkg$widgets2;
40371
40383
  var firstWidget, installable;
40372
40384
  return _regeneratorRuntime.wrap(function (_context) {
40373
40385
  while (1) switch (_context.prev = _context.next) {
40374
40386
  case 0:
40375
40387
  // Build a widget-like object that useRegistrySearch.installPackage expects
40376
- firstWidget = (_pkg$widgets = pkg.widgets) === null || _pkg$widgets === void 0 ? void 0 : _pkg$widgets[0];
40388
+ firstWidget = (_pkg$widgets2 = pkg.widgets) === null || _pkg$widgets2 === void 0 ? void 0 : _pkg$widgets2[0];
40377
40389
  if (firstWidget) {
40378
40390
  _context.next = 1;
40379
40391
  break;
@@ -40407,8 +40419,9 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40407
40419
 
40408
40420
  // Detail view for a selected package
40409
40421
  if (selectedPackage) {
40410
- var _pkg$tags, _pkg$widgets2;
40422
+ var _pkg$tags, _pkg$widgets3;
40411
40423
  var pkg = selectedPackage;
40424
+ var isInstalled = isPackageInstalled(pkg);
40412
40425
  return /*#__PURE__*/jsxs("div", {
40413
40426
  className: "flex flex-col h-full",
40414
40427
  children: [/*#__PURE__*/jsxs("div", {
@@ -40430,9 +40443,15 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40430
40443
  className: "h-4 w-4 opacity-60 mt-0.5 flex-shrink-0"
40431
40444
  }), /*#__PURE__*/jsxs("div", {
40432
40445
  className: "min-w-0",
40433
- children: [/*#__PURE__*/jsx("div", {
40434
- className: "font-medium text-sm truncate",
40435
- children: pkg.displayName || pkg.name
40446
+ children: [/*#__PURE__*/jsxs("div", {
40447
+ className: "flex items-center gap-1.5 font-medium text-sm",
40448
+ children: [/*#__PURE__*/jsx("span", {
40449
+ className: "truncate",
40450
+ children: pkg.displayName || pkg.name
40451
+ }), isInstalled && /*#__PURE__*/jsx("span", {
40452
+ className: "text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-400 flex-shrink-0",
40453
+ children: "Installed"
40454
+ })]
40436
40455
  }), /*#__PURE__*/jsxs("div", {
40437
40456
  className: "text-[10px] opacity-50",
40438
40457
  children: [pkg.author && /*#__PURE__*/jsxs("span", {
@@ -40451,7 +40470,7 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40451
40470
  children: tag
40452
40471
  }, tag);
40453
40472
  })
40454
- }), ((_pkg$widgets2 = pkg.widgets) === null || _pkg$widgets2 === void 0 ? void 0 : _pkg$widgets2.length) > 0 && /*#__PURE__*/jsxs("div", {
40473
+ }), ((_pkg$widgets3 = pkg.widgets) === null || _pkg$widgets3 === void 0 ? void 0 : _pkg$widgets3.length) > 0 && /*#__PURE__*/jsxs("div", {
40455
40474
  className: "mb-3",
40456
40475
  children: [/*#__PURE__*/jsx("div", {
40457
40476
  className: "text-[10px] font-medium opacity-50 uppercase tracking-wider mb-1.5",
@@ -40488,9 +40507,9 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40488
40507
  onClick: function onClick() {
40489
40508
  return handleInstall(pkg);
40490
40509
  },
40491
- disabled: registry.isInstalling,
40510
+ disabled: registry.isInstalling || isInstalled,
40492
40511
  className: "w-full py-1.5 rounded-md text-xs font-medium bg-blue-600 hover:bg-blue-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
40493
- children: registry.isInstalling ? "Installing..." : "Install Package"
40512
+ children: isInstalled ? "Installed" : registry.isInstalling ? "Installing..." : "Install Package"
40494
40513
  })
40495
40514
  })]
40496
40515
  });
@@ -40552,13 +40571,14 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40552
40571
  children: /*#__PURE__*/jsx("div", {
40553
40572
  className: "flex flex-col gap-1 px-3 py-1",
40554
40573
  children: registry.packages.map(function (pkg) {
40555
- var _pkg$widgets3, _pkg$widgets4;
40574
+ var _pkg$widgets4, _pkg$widgets5;
40575
+ var isInstalled = isPackageInstalled(pkg);
40556
40576
  return /*#__PURE__*/jsxs("button", {
40557
40577
  type: "button",
40558
40578
  onClick: function onClick() {
40559
40579
  return setSelectedPackageName(pkg.name);
40560
40580
  },
40561
- className: "flex items-center gap-2 px-3 py-2 rounded-md text-left bg-white/5 hover:bg-white/10 transition-colors w-full",
40581
+ className: "flex items-center gap-2 px-3 py-2 rounded-md text-left\n bg-white/5 hover:bg-white/10 transition-colors w-full".concat(isInstalled ? " opacity-50" : ""),
40562
40582
  children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
40563
40583
  icon: "cube",
40564
40584
  className: "h-3 w-3 opacity-40 flex-shrink-0"
@@ -40572,10 +40592,17 @@ var SidebarDiscoverContent = function SidebarDiscoverContent(_ref2) {
40572
40592
  children: [pkg.author && /*#__PURE__*/jsx("span", {
40573
40593
  className: "truncate",
40574
40594
  children: pkg.author
40575
- }), pkg.author && ((_pkg$widgets3 = pkg.widgets) === null || _pkg$widgets3 === void 0 ? void 0 : _pkg$widgets3.length) > 0 && /*#__PURE__*/jsx("span", {
40595
+ }), pkg.author && ((_pkg$widgets4 = pkg.widgets) === null || _pkg$widgets4 === void 0 ? void 0 : _pkg$widgets4.length) > 0 && /*#__PURE__*/jsx("span", {
40576
40596
  children: "\xB7"
40577
- }), ((_pkg$widgets4 = pkg.widgets) === null || _pkg$widgets4 === void 0 ? void 0 : _pkg$widgets4.length) > 0 && /*#__PURE__*/jsxs("span", {
40597
+ }), ((_pkg$widgets5 = pkg.widgets) === null || _pkg$widgets5 === void 0 ? void 0 : _pkg$widgets5.length) > 0 && /*#__PURE__*/jsxs("span", {
40578
40598
  children: [pkg.widgets.length, " widget", pkg.widgets.length !== 1 ? "s" : ""]
40599
+ }), isInstalled && /*#__PURE__*/jsxs(Fragment, {
40600
+ children: [/*#__PURE__*/jsx("span", {
40601
+ children: "\xB7"
40602
+ }), /*#__PURE__*/jsx("span", {
40603
+ className: "text-emerald-400",
40604
+ children: "Installed"
40605
+ })]
40579
40606
  })]
40580
40607
  })]
40581
40608
  })]
@@ -40665,10 +40692,83 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40665
40692
  });
40666
40693
  }, [widgetVersion]);
40667
40694
 
40695
+ // Set of installed package identifiers for "Installed" badge in Discover tab.
40696
+ // Stores folder names, package names, and "author/name" keys for matching.
40697
+ var _useState17 = useState(new Set()),
40698
+ _useState18 = _slicedToArray(_useState17, 2),
40699
+ installedPackageNames = _useState18[0],
40700
+ setInstalledPackageNames = _useState18[1];
40701
+ useEffect(function () {
40702
+ var cancelled = false;
40703
+ var loadInstalled = /*#__PURE__*/function () {
40704
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
40705
+ var widgets, names, _iterator, _step, w, folderName, _folderName;
40706
+ return _regeneratorRuntime.wrap(function (_context2) {
40707
+ while (1) switch (_context2.prev = _context2.next) {
40708
+ case 0:
40709
+ _context2.prev = 0;
40710
+ _context2.next = 1;
40711
+ return window.mainApi.widgets.list();
40712
+ case 1:
40713
+ widgets = _context2.sent;
40714
+ if (!cancelled) {
40715
+ _context2.next = 2;
40716
+ break;
40717
+ }
40718
+ return _context2.abrupt("return");
40719
+ case 2:
40720
+ names = new Set();
40721
+ _iterator = _createForOfIteratorHelper(widgets);
40722
+ try {
40723
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
40724
+ w = _step.value;
40725
+ // w is a config object with name, path, author, etc.
40726
+ if (w.name) names.add(w.name);
40727
+ // Extract folder name from path (matches registry pkg.name)
40728
+ if (w.path) {
40729
+ folderName = w.path.split("/").pop();
40730
+ if (folderName) names.add(folderName);
40731
+ }
40732
+ // Add author-scoped keys for disambiguation
40733
+ if (w.author && w.name) {
40734
+ names.add("".concat(w.author, "/").concat(w.name));
40735
+ }
40736
+ if (w.author && w.path) {
40737
+ _folderName = w.path.split("/").pop();
40738
+ if (_folderName) names.add("".concat(w.author, "/").concat(_folderName));
40739
+ }
40740
+ }
40741
+ } catch (err) {
40742
+ _iterator.e(err);
40743
+ } finally {
40744
+ _iterator.f();
40745
+ }
40746
+ setInstalledPackageNames(names);
40747
+ _context2.next = 4;
40748
+ break;
40749
+ case 3:
40750
+ _context2.prev = 3;
40751
+ _context2["catch"](0);
40752
+ case 4:
40753
+ case "end":
40754
+ return _context2.stop();
40755
+ }
40756
+ }, _callee2, null, [[0, 3]]);
40757
+ }));
40758
+ return function loadInstalled() {
40759
+ return _ref5.apply(this, arguments);
40760
+ };
40761
+ }();
40762
+ loadInstalled();
40763
+ return function () {
40764
+ cancelled = true;
40765
+ };
40766
+ }, [widgetVersion]);
40767
+
40668
40768
  // Derive unique groups for dropdown (package > author > "Other")
40669
40769
  var uniqueAuthors = useMemo(function () {
40670
- return _toConsumableArray(new Set(allWidgets.map(function (_ref5) {
40671
- var widget = _ref5.widget;
40770
+ return _toConsumableArray(new Set(allWidgets.map(function (_ref6) {
40771
+ var widget = _ref6.widget;
40672
40772
  return widget["package"] || widget.author || "Other";
40673
40773
  }))).sort();
40674
40774
  }, [allWidgets]);
@@ -40676,8 +40776,8 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40676
40776
  // Derive unique provider types for dropdown
40677
40777
  var uniqueProviders = useMemo(function () {
40678
40778
  var types = new Set();
40679
- allWidgets.forEach(function (_ref6) {
40680
- var widget = _ref6.widget;
40779
+ allWidgets.forEach(function (_ref7) {
40780
+ var widget = _ref7.widget;
40681
40781
  return (widget.providers || []).forEach(function (p) {
40682
40782
  return types.add(p.type);
40683
40783
  });
@@ -40687,9 +40787,9 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40687
40787
 
40688
40788
  // Filtered + grouped widgets
40689
40789
  var filteredGrouped = useMemo(function () {
40690
- var filtered = allWidgets.filter(function (_ref7) {
40691
- var key = _ref7.key,
40692
- widget = _ref7.widget;
40790
+ var filtered = allWidgets.filter(function (_ref8) {
40791
+ var key = _ref8.key,
40792
+ widget = _ref8.widget;
40693
40793
  // Search: match name, key, or description
40694
40794
  if (searchQuery) {
40695
40795
  var q = searchQuery.toLowerCase();
@@ -40729,9 +40829,9 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40729
40829
 
40730
40830
  // Group by package > author > "Other"
40731
40831
  var groups = {};
40732
- filtered.forEach(function (_ref8) {
40733
- var key = _ref8.key,
40734
- widget = _ref8.widget;
40832
+ filtered.forEach(function (_ref9) {
40833
+ var key = _ref9.key,
40834
+ widget = _ref9.widget;
40735
40835
  var group = widget["package"] || widget.author || "Other";
40736
40836
  if (!groups[group]) groups[group] = [];
40737
40837
  groups[group].push({
@@ -40921,9 +41021,9 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40921
41021
  label: author,
40922
41022
  children: /*#__PURE__*/jsx("div", {
40923
41023
  className: "flex flex-col gap-1",
40924
- children: filteredGrouped[author].map(function (_ref9) {
40925
- var key = _ref9.key,
40926
- widget = _ref9.widget;
41024
+ children: filteredGrouped[author].map(function (_ref0) {
41025
+ var key = _ref0.key,
41026
+ widget = _ref0.widget;
40927
41027
  return /*#__PURE__*/jsx(DraggableWidgetItem, {
40928
41028
  widgetKey: key,
40929
41029
  widget: widget
@@ -40944,7 +41044,8 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
40944
41044
  })]
40945
41045
  }) : /*#__PURE__*/jsx(SidebarDiscoverContent, {
40946
41046
  registry: registry,
40947
- onInstallSuccess: handleInstallSuccess
41047
+ onInstallSuccess: handleInstallSuccess,
41048
+ installedPackageNames: installedPackageNames
40948
41049
  })
40949
41050
  }), !collapsed && activeTab === "installed" && installSuccess && /*#__PURE__*/jsx(Sidebar.Footer, {
40950
41051
  children: /*#__PURE__*/jsxs("div", {
@@ -42193,10 +42294,16 @@ var DashboardHeader = function DashboardHeader(_ref) {
42193
42294
  className: "w-40 shrink-0"
42194
42295
  }), onThemeChange && Object.keys(resolvedThemes).length > 0 && /*#__PURE__*/jsx(SelectInput, {
42195
42296
  value: workspaceSelected.themeKey || "",
42196
- options: Object.entries(resolvedThemes).map(function (_ref2) {
42197
- var _ref3 = _slicedToArray(_ref2, 2),
42198
- key = _ref3[0],
42199
- t = _ref3[1];
42297
+ options: Object.entries(resolvedThemes).sort(function (_ref2, _ref3) {
42298
+ var _ref4 = _slicedToArray(_ref2, 2),
42299
+ a = _ref4[1];
42300
+ var _ref5 = _slicedToArray(_ref3, 2),
42301
+ b = _ref5[1];
42302
+ return (a.name || "").localeCompare(b.name || "");
42303
+ }).map(function (_ref6) {
42304
+ var _ref7 = _slicedToArray(_ref6, 2),
42305
+ key = _ref7[0],
42306
+ t = _ref7[1];
42200
42307
  return {
42201
42308
  label: t.name || key,
42202
42309
  value: key,
@@ -42204,7 +42311,7 @@ var DashboardHeader = function DashboardHeader(_ref) {
42204
42311
  };
42205
42312
  }),
42206
42313
  onChange: onThemeChange,
42207
- placeholder: "Theme",
42314
+ placeholder: "Select a theme",
42208
42315
  backgroundColor: currentTheme["bg-primary-very-dark"],
42209
42316
  textColor: currentTheme["text-primary-medium"],
42210
42317
  borderColor: currentTheme["border-primary-dark"],