@trops/dash-core 0.1.190 → 0.1.192

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
@@ -31,8 +31,8 @@ import algoliasearch from 'algoliasearch';
31
31
  import { InstantSearch, Hits } from 'react-instantsearch-hooks-web';
32
32
  import { Link } from 'react-router-dom';
33
33
 
34
- function ownKeys$F(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; }
35
- function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
34
+ function ownKeys$G(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; }
35
+ function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
36
36
  var event = {
37
37
  list: new Map(),
38
38
  // Map(1) { '<widget-UUID>' => { 'CustomSearchbar[10].searchQueryChanged': [] } }
@@ -94,7 +94,7 @@ var event = {
94
94
  uuid: subscriber["uuid"]
95
95
  };
96
96
  if ("action" in subscriber && subscriber.action !== undefined) {
97
- subscriber["action"](_objectSpread$F({}, objectToSend));
97
+ subscriber["action"](_objectSpread$G({}, objectToSend));
98
98
  }
99
99
  });
100
100
  }
@@ -2601,8 +2601,8 @@ var DashboardWrapper = function DashboardWrapper(_ref) {
2601
2601
  });
2602
2602
  };
2603
2603
 
2604
- function ownKeys$E(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; }
2605
- function _objectSpread$E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2604
+ function ownKeys$F(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; }
2605
+ function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2606
2606
  var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
2607
2607
  var themeKey = _ref.themeKey,
2608
2608
  children = _ref.children;
@@ -2614,7 +2614,7 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
2614
2614
  var dashboardTheme = themes[themeKey];
2615
2615
  var themeValue = dashboardTheme ? dashboardTheme[themeVariant] || null : null;
2616
2616
  if (!themeValue) return null;
2617
- return _objectSpread$E(_objectSpread$E({}, parentContext), {}, {
2617
+ return _objectSpread$F(_objectSpread$F({}, parentContext), {}, {
2618
2618
  currentTheme: themeValue,
2619
2619
  currentThemeKey: themeKey,
2620
2620
  theme: themeValue,
@@ -2632,8 +2632,8 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
2632
2632
  });
2633
2633
  };
2634
2634
 
2635
- function ownKeys$D(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; }
2636
- function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2635
+ function ownKeys$E(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; }
2636
+ function _objectSpread$E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2637
2637
  var AppThemeScope = function AppThemeScope(_ref) {
2638
2638
  var children = _ref.children;
2639
2639
  var ctx = useContext(ThemeContext);
@@ -2641,7 +2641,7 @@ var AppThemeScope = function AppThemeScope(_ref) {
2641
2641
  children: children
2642
2642
  });
2643
2643
  return /*#__PURE__*/jsx(ThemeContext.Provider, {
2644
- value: _objectSpread$D(_objectSpread$D({}, ctx), {}, {
2644
+ value: _objectSpread$E(_objectSpread$E({}, ctx), {}, {
2645
2645
  currentTheme: ctx.appTheme,
2646
2646
  currentThemeKey: ctx.appThemeKey,
2647
2647
  theme: ctx.appTheme,
@@ -2753,8 +2753,8 @@ var LayoutContainer = function LayoutContainer(_ref) {
2753
2753
  });
2754
2754
  };
2755
2755
 
2756
- function ownKeys$C(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; }
2757
- function _objectSpread$C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2756
+ function ownKeys$D(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; }
2757
+ function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2758
2758
  function _createForOfIteratorHelper$f(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$f(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; } } }; }
2759
2759
  function _unsupportedIterableToArray$f(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$f(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$f(r, a) : void 0; } }
2760
2760
  function _arrayLikeToArray$f(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; }
@@ -3036,7 +3036,7 @@ function createLayoutFromTemplate(template) {
3036
3036
  try {
3037
3037
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
3038
3038
  var cell = _step.value;
3039
- grid[cell.key] = _objectSpread$C({
3039
+ grid[cell.key] = _objectSpread$D({
3040
3040
  component: null,
3041
3041
  hide: cell.hide || false
3042
3042
  }, cell.span ? {
@@ -3448,6 +3448,13 @@ var CreationMethodPicker = function CreationMethodPicker(_ref2) {
3448
3448
  onClick: function onClick() {
3449
3449
  return onSelect("registry");
3450
3450
  }
3451
+ }), /*#__PURE__*/jsx(OptionCard$1, {
3452
+ icon: "wand-magic-sparkles",
3453
+ title: "Dashboard Wizard",
3454
+ description: "Guided setup \u2014 pick categories, providers, and widgets step by step",
3455
+ onClick: function onClick() {
3456
+ return onSelect("wizard");
3457
+ }
3451
3458
  })]
3452
3459
  })]
3453
3460
  });
@@ -4050,8 +4057,8 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
4050
4057
  });
4051
4058
  };
4052
4059
 
4053
- function ownKeys$B(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; }
4054
- function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4060
+ function ownKeys$C(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; }
4061
+ function _objectSpread$C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4055
4062
  var LayoutManagerModal = function LayoutManagerModal(_ref) {
4056
4063
  var open = _ref.open,
4057
4064
  setIsOpen = _ref.setIsOpen,
@@ -4063,7 +4070,9 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4063
4070
  appId = _ref.appId,
4064
4071
  onReloadWorkspaces = _ref.onReloadWorkspaces,
4065
4072
  _ref$onOpenWorkspace = _ref.onOpenWorkspace,
4066
- onOpenWorkspace = _ref$onOpenWorkspace === void 0 ? null : _ref$onOpenWorkspace;
4073
+ onOpenWorkspace = _ref$onOpenWorkspace === void 0 ? null : _ref$onOpenWorkspace,
4074
+ _ref$onOpenWizard = _ref.onOpenWizard,
4075
+ onOpenWizard = _ref$onOpenWizard === void 0 ? null : _ref$onOpenWizard;
4067
4076
  var _useContext = useContext(ThemeContext),
4068
4077
  themes = _useContext.themes,
4069
4078
  appThemeKey = _useContext.themeKey;
@@ -4184,6 +4193,11 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4184
4193
  setActiveStep(2);
4185
4194
  }
4186
4195
  function handleMethodSelect(method) {
4196
+ if (method === "wizard" && onOpenWizard) {
4197
+ setIsOpen(false);
4198
+ onOpenWizard();
4199
+ return;
4200
+ }
4187
4201
  setCreationMethod(method);
4188
4202
  }
4189
4203
  function handleImportFromFile() {
@@ -4287,7 +4301,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
4287
4301
  }
4288
4302
  return _context2.abrupt("return");
4289
4303
  case 6:
4290
- updatedWorkspace = _objectSpread$B(_objectSpread$B({}, importedWorkspace), {}, {
4304
+ updatedWorkspace = _objectSpread$C(_objectSpread$C({}, importedWorkspace), {}, {
4291
4305
  name: dashboardName.trim(),
4292
4306
  menuId: menuId,
4293
4307
  themeKey: selectedThemeKey
@@ -6073,8 +6087,8 @@ var WidgetList = function WidgetList(_ref4) {
6073
6087
  });
6074
6088
  };
6075
6089
 
6076
- function ownKeys$A(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; }
6077
- function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6090
+ function ownKeys$B(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; }
6091
+ function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6078
6092
  var TOTAL_STEPS = 6; // Steps 0-5
6079
6093
 
6080
6094
  var initialState = {
@@ -6097,11 +6111,11 @@ var initialState = {
6097
6111
  function wizardReducer(state, action) {
6098
6112
  switch (action.type) {
6099
6113
  case "SET_STEP":
6100
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6114
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6101
6115
  step: action.payload
6102
6116
  });
6103
6117
  case "SET_INTENT":
6104
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6118
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6105
6119
  intent: action.payload
6106
6120
  });
6107
6121
  case "TOGGLE_INTENT":
@@ -6109,12 +6123,12 @@ function wizardReducer(state, action) {
6109
6123
  var intent = state.intent.includes(action.payload) ? state.intent.filter(function (i) {
6110
6124
  return i !== action.payload;
6111
6125
  }) : [].concat(_toConsumableArray(state.intent), [action.payload]);
6112
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6126
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6113
6127
  intent: intent
6114
6128
  });
6115
6129
  }
6116
6130
  case "SET_PROVIDERS":
6117
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6131
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6118
6132
  providers: action.payload
6119
6133
  });
6120
6134
  case "TOGGLE_PROVIDER":
@@ -6122,12 +6136,12 @@ function wizardReducer(state, action) {
6122
6136
  var providers = state.providers.includes(action.payload) ? state.providers.filter(function (p) {
6123
6137
  return p !== action.payload;
6124
6138
  }) : [].concat(_toConsumableArray(state.providers), [action.payload]);
6125
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6139
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6126
6140
  providers: providers
6127
6141
  });
6128
6142
  }
6129
6143
  case "SET_SELECTED_WIDGETS":
6130
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6144
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6131
6145
  selectedWidgets: action.payload
6132
6146
  });
6133
6147
  case "TOGGLE_WIDGET":
@@ -6138,34 +6152,34 @@ function wizardReducer(state, action) {
6138
6152
  var selectedWidgets = exists ? state.selectedWidgets.filter(function (w) {
6139
6153
  return w.name !== action.payload.name;
6140
6154
  }) : [].concat(_toConsumableArray(state.selectedWidgets), [action.payload]);
6141
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6155
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6142
6156
  selectedWidgets: selectedWidgets
6143
6157
  });
6144
6158
  }
6145
6159
  case "SET_SELECTED_DASHBOARD":
6146
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6160
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6147
6161
  selectedDashboard: action.payload
6148
6162
  });
6149
6163
  case "SET_PATH":
6150
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6164
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6151
6165
  path: action.payload
6152
6166
  });
6153
6167
  case "SET_LAYOUT":
6154
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6168
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6155
6169
  layout: action.payload
6156
6170
  });
6157
6171
  case "REORDER_WIDGETS":
6158
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6159
- layout: _objectSpread$A(_objectSpread$A({}, state.layout), {}, {
6172
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6173
+ layout: _objectSpread$B(_objectSpread$B({}, state.layout), {}, {
6160
6174
  widgetOrder: action.payload
6161
6175
  })
6162
6176
  });
6163
6177
  case "SET_CUSTOMIZATION":
6164
- return _objectSpread$A(_objectSpread$A({}, state), {}, {
6165
- customization: _objectSpread$A(_objectSpread$A({}, state.customization), action.payload)
6178
+ return _objectSpread$B(_objectSpread$B({}, state), {}, {
6179
+ customization: _objectSpread$B(_objectSpread$B({}, state.customization), action.payload)
6166
6180
  });
6167
6181
  case "RESET":
6168
- return _objectSpread$A({}, initialState);
6182
+ return _objectSpread$B({}, initialState);
6169
6183
  default:
6170
6184
  return state;
6171
6185
  }
@@ -6507,6 +6521,836 @@ var LayoutGrid = function LayoutGrid(_ref3) {
6507
6521
  });
6508
6522
  };
6509
6523
 
6524
+ function ownKeys$A(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; }
6525
+ function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6526
+ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6527
+ var _state$selectedDashbo, _state$selectedDashbo2;
6528
+ var state = _ref.state,
6529
+ dispatch = _ref.dispatch,
6530
+ _ref$menuItems = _ref.menuItems,
6531
+ menuItems = _ref$menuItems === void 0 ? [] : _ref$menuItems,
6532
+ _ref$onSaveMenuItem = _ref.onSaveMenuItem,
6533
+ onSaveMenuItem = _ref$onSaveMenuItem === void 0 ? null : _ref$onSaveMenuItem,
6534
+ _ref$onCreateWorkspac = _ref.onCreateWorkspace,
6535
+ onCreateWorkspace = _ref$onCreateWorkspac === void 0 ? null : _ref$onCreateWorkspac,
6536
+ _ref$onInstallDashboa = _ref.onInstallDashboard,
6537
+ onInstallDashboard = _ref$onInstallDashboa === void 0 ? null : _ref$onInstallDashboa,
6538
+ _ref$onOpenDashboard = _ref.onOpenDashboard,
6539
+ onOpenDashboard = _ref$onOpenDashboard === void 0 ? null : _ref$onOpenDashboard,
6540
+ appId = _ref.appId;
6541
+ var _useContext = useContext(ThemeContext),
6542
+ themes = _useContext.themes,
6543
+ appThemeKey = _useContext.themeKey;
6544
+ var _useContext2 = useContext(AppContext),
6545
+ providersMap = _useContext2.providers;
6546
+ var _useState = useState(menuItems),
6547
+ _useState2 = _slicedToArray(_useState, 2),
6548
+ localMenuItems = _useState2[0],
6549
+ setLocalMenuItems = _useState2[1];
6550
+ var _useState3 = useState(false),
6551
+ _useState4 = _slicedToArray(_useState3, 2),
6552
+ isCreatingFolder = _useState4[0],
6553
+ setIsCreatingFolder = _useState4[1];
6554
+ var _useState5 = useState(""),
6555
+ _useState6 = _slicedToArray(_useState5, 2),
6556
+ newFolderName = _useState6[0],
6557
+ setNewFolderName = _useState6[1];
6558
+ var _useState7 = useState(null),
6559
+ _useState8 = _slicedToArray(_useState7, 2),
6560
+ newFolderIcon = _useState8[0],
6561
+ setNewFolderIcon = _useState8[1];
6562
+
6563
+ // Creation state
6564
+ var _useState9 = useState(false),
6565
+ _useState0 = _slicedToArray(_useState9, 2);
6566
+ _useState0[0];
6567
+ var setCreating = _useState0[1];
6568
+ var _useState1 = useState(null),
6569
+ _useState10 = _slicedToArray(_useState1, 2),
6570
+ error = _useState10[0],
6571
+ setError = _useState10[1];
6572
+ var _useState11 = useState(null),
6573
+ _useState12 = _slicedToArray(_useState11, 2),
6574
+ createdDashboard = _useState12[0],
6575
+ setCreatedDashboard = _useState12[1];
6576
+ var isPrebuilt = state.path === "prebuilt";
6577
+
6578
+ // Initialize customization defaults on mount
6579
+ useEffect(function () {
6580
+ setLocalMenuItems(menuItems);
6581
+ var updates = {};
6582
+ if (!state.customization.menuId && menuItems.length > 0) {
6583
+ updates.menuId = menuItems[0].id;
6584
+ }
6585
+ if (!state.customization.theme && themes) {
6586
+ var _Object$entries$sort$;
6587
+ var fallback = (_Object$entries$sort$ = Object.entries(themes).sort(function (_ref2, _ref3) {
6588
+ var _ref4 = _slicedToArray(_ref2, 2),
6589
+ a = _ref4[1];
6590
+ var _ref5 = _slicedToArray(_ref3, 2),
6591
+ b = _ref5[1];
6592
+ return (a.name || "").localeCompare(b.name || "");
6593
+ })[0]) === null || _Object$entries$sort$ === void 0 ? void 0 : _Object$entries$sort$[0];
6594
+ updates.theme = appThemeKey || fallback || null;
6595
+ }
6596
+ if (Object.keys(updates).length > 0) {
6597
+ dispatch({
6598
+ type: "SET_CUSTOMIZATION",
6599
+ payload: updates
6600
+ });
6601
+ }
6602
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6603
+ }, []);
6604
+ var handleNameChange = useCallback(function (val) {
6605
+ dispatch({
6606
+ type: "SET_CUSTOMIZATION",
6607
+ payload: {
6608
+ name: val
6609
+ }
6610
+ });
6611
+ }, [dispatch]);
6612
+ var handleMenuSelect = useCallback(function (id) {
6613
+ dispatch({
6614
+ type: "SET_CUSTOMIZATION",
6615
+ payload: {
6616
+ menuId: id
6617
+ }
6618
+ });
6619
+ setIsCreatingFolder(false);
6620
+ setNewFolderName("");
6621
+ setNewFolderIcon(null);
6622
+ }, [dispatch]);
6623
+ var handleThemeSelect = useCallback(function (key) {
6624
+ dispatch({
6625
+ type: "SET_CUSTOMIZATION",
6626
+ payload: {
6627
+ theme: key
6628
+ }
6629
+ });
6630
+ }, [dispatch]);
6631
+ function handleCancelNewFolder() {
6632
+ setIsCreatingFolder(false);
6633
+ setNewFolderName("");
6634
+ setNewFolderIcon(null);
6635
+ }
6636
+ function handleSaveNewFolder() {
6637
+ if (!newFolderName.trim() || !newFolderIcon) return;
6638
+ var newItem = {
6639
+ id: Date.now(),
6640
+ name: newFolderName.trim(),
6641
+ icon: newFolderIcon
6642
+ };
6643
+ setLocalMenuItems(function (prev) {
6644
+ return [].concat(_toConsumableArray(prev), [newItem]);
6645
+ });
6646
+ dispatch({
6647
+ type: "SET_CUSTOMIZATION",
6648
+ payload: {
6649
+ menuId: newItem.id
6650
+ }
6651
+ });
6652
+ if (onSaveMenuItem) {
6653
+ onSaveMenuItem(newItem);
6654
+ }
6655
+ setIsCreatingFolder(false);
6656
+ setNewFolderName("");
6657
+ setNewFolderIcon(null);
6658
+ }
6659
+
6660
+ // --- Create logic ---
6661
+ useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
6662
+ var _state$customization, name, menuId, theme, result, _window$mainApi, installResult, updatedWorkspace, _window$mainApi2, template, layoutObj, widgetOrder, cells, _loop, i, workspace, _t;
6663
+ return _regeneratorRuntime.wrap(function (_context2) {
6664
+ while (1) switch (_context2.prev = _context2.next) {
6665
+ case 0:
6666
+ setCreating(true);
6667
+ setError(null);
6668
+ _context2.prev = 1;
6669
+ _state$customization = state.customization, name = _state$customization.name, menuId = _state$customization.menuId, theme = _state$customization.theme;
6670
+ if (!(isPrebuilt && state.selectedDashboard)) {
6671
+ _context2.next = 7;
6672
+ break;
6673
+ }
6674
+ if (!onInstallDashboard) {
6675
+ _context2.next = 3;
6676
+ break;
6677
+ }
6678
+ _context2.next = 2;
6679
+ return onInstallDashboard({
6680
+ dashboard: state.selectedDashboard,
6681
+ name: name.trim(),
6682
+ menuId: menuId || 1,
6683
+ themeKey: theme,
6684
+ appId: appId
6685
+ });
6686
+ case 2:
6687
+ result = _context2.sent;
6688
+ _context2.next = 6;
6689
+ break;
6690
+ case 3:
6691
+ if (!((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.installDashboard)) {
6692
+ _context2.next = 6;
6693
+ break;
6694
+ }
6695
+ _context2.next = 4;
6696
+ return window.mainApi.registry.installDashboard(appId, state.selectedDashboard.name || state.selectedDashboard.key);
6697
+ case 4:
6698
+ installResult = _context2.sent;
6699
+ if (!(installResult !== null && installResult !== void 0 && installResult.workspace)) {
6700
+ _context2.next = 6;
6701
+ break;
6702
+ }
6703
+ updatedWorkspace = _objectSpread$A(_objectSpread$A({}, installResult.workspace), {}, {
6704
+ name: name.trim(),
6705
+ menuId: menuId || 1,
6706
+ themeKey: theme
6707
+ });
6708
+ _context2.next = 5;
6709
+ return window.mainApi.workspace.saveWorkspaceForApplication(appId, updatedWorkspace);
6710
+ case 5:
6711
+ result = {
6712
+ success: true,
6713
+ workspace: updatedWorkspace
6714
+ };
6715
+ case 6:
6716
+ _context2.next = 15;
6717
+ break;
6718
+ case 7:
6719
+ // Build-your-own path: create layout from template + place widgets
6720
+ template = layoutTemplates.find(function (t) {
6721
+ return t.id === state.layout.templateKey;
6722
+ });
6723
+ if (template) {
6724
+ _context2.next = 8;
6725
+ break;
6726
+ }
6727
+ throw new Error("No layout template selected.");
6728
+ case 8:
6729
+ layoutObj = createLayoutFromTemplate(template, menuId || 1); // Place widgets into grid cells
6730
+ widgetOrder = state.layout.widgetOrder || [];
6731
+ cells = template.cells.filter(function (c) {
6732
+ return !c.hide;
6733
+ });
6734
+ _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop(i) {
6735
+ var widget;
6736
+ return _regeneratorRuntime.wrap(function (_context) {
6737
+ while (1) switch (_context.prev = _context.next) {
6738
+ case 0:
6739
+ widget = state.selectedWidgets.find(function (w) {
6740
+ return (w.name || w.key) === widgetOrder[i];
6741
+ });
6742
+ if (widget && layoutObj.grid[cells[i].key]) {
6743
+ layoutObj.grid[cells[i].key].component = widget.component || widget.name || widget.key;
6744
+ }
6745
+ case 1:
6746
+ case "end":
6747
+ return _context.stop();
6748
+ }
6749
+ }, _loop);
6750
+ });
6751
+ i = 0;
6752
+ case 9:
6753
+ if (!(i < widgetOrder.length && i < cells.length)) {
6754
+ _context2.next = 11;
6755
+ break;
6756
+ }
6757
+ return _context2.delegateYield(_loop(i), "t0", 10);
6758
+ case 10:
6759
+ i++;
6760
+ _context2.next = 9;
6761
+ break;
6762
+ case 11:
6763
+ if (!onCreateWorkspace) {
6764
+ _context2.next = 13;
6765
+ break;
6766
+ }
6767
+ _context2.next = 12;
6768
+ return onCreateWorkspace(layoutObj, theme, name.trim());
6769
+ case 12:
6770
+ result = _context2.sent;
6771
+ _context2.next = 15;
6772
+ break;
6773
+ case 13:
6774
+ if (!((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.workspace) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.saveWorkspaceForApplication)) {
6775
+ _context2.next = 15;
6776
+ break;
6777
+ }
6778
+ workspace = {
6779
+ name: name.trim(),
6780
+ menuId: menuId || 1,
6781
+ themeKey: theme,
6782
+ layout: [layoutObj]
6783
+ };
6784
+ _context2.next = 14;
6785
+ return window.mainApi.workspace.saveWorkspaceForApplication(appId, workspace);
6786
+ case 14:
6787
+ result = {
6788
+ success: true,
6789
+ workspace: workspace
6790
+ };
6791
+ case 15:
6792
+ if (result) {
6793
+ setCreatedDashboard(result.workspace || result);
6794
+ }
6795
+ _context2.next = 17;
6796
+ break;
6797
+ case 16:
6798
+ _context2.prev = 16;
6799
+ _t = _context2["catch"](1);
6800
+ setError(_t.message || "Failed to create dashboard.");
6801
+ case 17:
6802
+ _context2.prev = 17;
6803
+ setCreating(false);
6804
+ return _context2.finish(17);
6805
+ case 18:
6806
+ case "end":
6807
+ return _context2.stop();
6808
+ }
6809
+ }, _callee, null, [[1, 16, 17, 18]]);
6810
+ })), [state, isPrebuilt, onInstallDashboard, onCreateWorkspace, appId]);
6811
+
6812
+ // --- Success state ---
6813
+ if (createdDashboard) {
6814
+ return /*#__PURE__*/jsx("div", {
6815
+ className: "wizard-customize-step",
6816
+ children: /*#__PURE__*/jsxs("div", {
6817
+ className: "wizard-success",
6818
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6819
+ icon: "circle-check",
6820
+ className: "wizard-success-icon"
6821
+ }), /*#__PURE__*/jsx("h3", {
6822
+ className: "wizard-step-header",
6823
+ children: "Dashboard created!"
6824
+ }), /*#__PURE__*/jsxs("p", {
6825
+ className: "wizard-step-description",
6826
+ children: ["Your dashboard", " ", /*#__PURE__*/jsx("strong", {
6827
+ children: createdDashboard.name || state.customization.name.trim()
6828
+ }), " ", "is ready."]
6829
+ }), onOpenDashboard && /*#__PURE__*/jsx(Button, {
6830
+ onClick: function onClick() {
6831
+ return onOpenDashboard(createdDashboard);
6832
+ },
6833
+ title: "Open Dashboard",
6834
+ textSize: "text-base",
6835
+ padding: "py-2 px-6",
6836
+ backgroundColor: "bg-blue-600",
6837
+ textColor: "text-white",
6838
+ hoverTextColor: "hover:text-white",
6839
+ hoverBackgroundColor: "hover:bg-blue-500",
6840
+ icon: "arrow-right"
6841
+ })]
6842
+ })
6843
+ });
6844
+ }
6845
+
6846
+ // --- Provider setup summary ---
6847
+ var selectedProviders = (state.providers || []).map(function (provKey) {
6848
+ var prov = (providersMap === null || providersMap === void 0 ? void 0 : providersMap[provKey]) || {};
6849
+ return {
6850
+ key: provKey,
6851
+ name: prov.name || provKey,
6852
+ icon: prov.icon || "plug",
6853
+ configured: !!prov.configured
6854
+ };
6855
+ });
6856
+ var configuredProviders = selectedProviders.filter(function (p) {
6857
+ return p.configured;
6858
+ });
6859
+ var needsSetupProviders = selectedProviders.filter(function (p) {
6860
+ return !p.configured;
6861
+ });
6862
+ var selectedFolder = localMenuItems.find(function (item) {
6863
+ return item.id === state.customization.menuId;
6864
+ });
6865
+ var selectedTheme = themes && state.customization.theme ? themes[state.customization.theme] : null;
6866
+ return /*#__PURE__*/jsxs("div", {
6867
+ className: "wizard-customize-step",
6868
+ children: [/*#__PURE__*/jsx("h3", {
6869
+ className: "wizard-step-header",
6870
+ children: "Customize your dashboard"
6871
+ }), /*#__PURE__*/jsx("p", {
6872
+ className: "wizard-step-description",
6873
+ children: "Name your dashboard, choose a folder, and pick a theme."
6874
+ }), /*#__PURE__*/jsxs("div", {
6875
+ className: "wizard-customize-sections",
6876
+ children: [/*#__PURE__*/jsxs("div", {
6877
+ className: "wizard-customize-section",
6878
+ children: [/*#__PURE__*/jsxs("label", {
6879
+ className: "wizard-customize-label",
6880
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6881
+ icon: "input-text",
6882
+ fixedWidth: true,
6883
+ className: "wizard-customize-label-icon"
6884
+ }), "Dashboard Name"]
6885
+ }), /*#__PURE__*/jsx(InputText, {
6886
+ value: state.customization.name,
6887
+ onChange: handleNameChange,
6888
+ placeholder: "My Dashboard",
6889
+ autoFocus: true
6890
+ })]
6891
+ }), /*#__PURE__*/jsxs("div", {
6892
+ className: "wizard-customize-section",
6893
+ children: [/*#__PURE__*/jsxs("label", {
6894
+ className: "wizard-customize-label",
6895
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6896
+ icon: "folder",
6897
+ fixedWidth: true,
6898
+ className: "wizard-customize-label-icon"
6899
+ }), "Folder"]
6900
+ }), /*#__PURE__*/jsxs("div", {
6901
+ className: "wizard-customize-folder-list",
6902
+ children: [!isCreatingFolder ? /*#__PURE__*/jsxs("button", {
6903
+ type: "button",
6904
+ className: "wizard-customize-folder-create",
6905
+ onClick: function onClick() {
6906
+ return setIsCreatingFolder(true);
6907
+ },
6908
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6909
+ icon: "plus",
6910
+ fixedWidth: true
6911
+ }), /*#__PURE__*/jsx("span", {
6912
+ children: "New Folder"
6913
+ })]
6914
+ }) : /*#__PURE__*/jsxs("div", {
6915
+ className: "wizard-customize-folder-form",
6916
+ children: [/*#__PURE__*/jsxs("div", {
6917
+ className: "wizard-customize-folder-form-header",
6918
+ children: [/*#__PURE__*/jsx("span", {
6919
+ className: "text-sm font-medium text-gray-300",
6920
+ children: "New Folder"
6921
+ }), /*#__PURE__*/jsx("button", {
6922
+ type: "button",
6923
+ className: "text-gray-500 hover:text-gray-300 transition-colors",
6924
+ onClick: handleCancelNewFolder,
6925
+ children: /*#__PURE__*/jsx(FontAwesomeIcon, {
6926
+ icon: "xmark"
6927
+ })
6928
+ })]
6929
+ }), /*#__PURE__*/jsx(InputText, {
6930
+ value: newFolderName,
6931
+ onChange: function onChange(val) {
6932
+ return setNewFolderName(val);
6933
+ },
6934
+ placeholder: "Folder name"
6935
+ }), /*#__PURE__*/jsx("div", {
6936
+ className: "grid grid-cols-10 gap-2",
6937
+ children: FOLDER_ICONS.map(function (icon) {
6938
+ var isIconSelected = icon === newFolderIcon;
6939
+ return /*#__PURE__*/jsx("div", {
6940
+ className: "flex items-center justify-center p-2 rounded cursor-pointer transition-all ".concat(isIconSelected ? "bg-blue-600 ring-2 ring-blue-400 text-white" : "bg-gray-700 text-gray-400 hover:bg-gray-600 hover:text-gray-200"),
6941
+ onClick: function onClick() {
6942
+ return setNewFolderIcon(icon);
6943
+ },
6944
+ children: /*#__PURE__*/jsx(FontAwesomeIcon, {
6945
+ icon: icon
6946
+ })
6947
+ }, icon);
6948
+ })
6949
+ }), /*#__PURE__*/jsx(Button, {
6950
+ onClick: handleSaveNewFolder,
6951
+ title: "Add Folder",
6952
+ textSize: "text-sm",
6953
+ padding: "py-1 px-3",
6954
+ backgroundColor: "bg-blue-600",
6955
+ textColor: "text-white",
6956
+ hoverTextColor: "hover:text-white",
6957
+ hoverBackgroundColor: "hover:bg-blue-500",
6958
+ disabled: !newFolderName.trim() || !newFolderIcon
6959
+ })]
6960
+ }), localMenuItems.map(function (item) {
6961
+ var isSelected = !isCreatingFolder && item.id === state.customization.menuId;
6962
+ return /*#__PURE__*/jsxs("div", {
6963
+ className: "wizard-customize-folder-item ".concat(isSelected ? "wizard-customize-folder-item--selected" : ""),
6964
+ onClick: function onClick() {
6965
+ return handleMenuSelect(item.id);
6966
+ },
6967
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6968
+ icon: item.icon || item.folder || "folder",
6969
+ fixedWidth: true,
6970
+ className: "w-5 h-5 ".concat(isSelected ? "text-blue-400" : "text-gray-400")
6971
+ }), /*#__PURE__*/jsx("span", {
6972
+ className: "text-sm font-medium ".concat(isSelected ? "text-blue-300" : "text-gray-300"),
6973
+ children: item.name
6974
+ }), isSelected && /*#__PURE__*/jsx(FontAwesomeIcon, {
6975
+ icon: "check",
6976
+ className: "ml-auto text-blue-400 text-sm"
6977
+ })]
6978
+ }, item.id);
6979
+ })]
6980
+ })]
6981
+ }), /*#__PURE__*/jsxs("div", {
6982
+ className: "wizard-customize-section",
6983
+ children: [/*#__PURE__*/jsxs("label", {
6984
+ className: "wizard-customize-label",
6985
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
6986
+ icon: "palette",
6987
+ fixedWidth: true,
6988
+ className: "wizard-customize-label-icon"
6989
+ }), "Theme"]
6990
+ }), /*#__PURE__*/jsx("div", {
6991
+ className: "wizard-customize-theme-list",
6992
+ children: themes && Object.entries(themes).sort(function (_ref7, _ref8) {
6993
+ var _ref9 = _slicedToArray(_ref7, 2),
6994
+ a = _ref9[1];
6995
+ var _ref0 = _slicedToArray(_ref8, 2),
6996
+ b = _ref0[1];
6997
+ return (a.name || "").localeCompare(b.name || "");
6998
+ }).map(function (_ref1) {
6999
+ var _ref10 = _slicedToArray(_ref1, 2),
7000
+ key = _ref10[0],
7001
+ t = _ref10[1];
7002
+ var isThemeSelected = state.customization.theme === key;
7003
+ return /*#__PURE__*/jsxs("div", {
7004
+ className: "wizard-customize-theme-item ".concat(isThemeSelected ? "wizard-customize-theme-item--selected" : ""),
7005
+ onClick: function onClick() {
7006
+ return handleThemeSelect(key);
7007
+ },
7008
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7009
+ icon: "palette",
7010
+ className: "w-5 h-5 mr-3 ".concat(isThemeSelected ? "text-blue-400" : "text-gray-400")
7011
+ }), /*#__PURE__*/jsx("span", {
7012
+ className: "text-sm font-medium ".concat(isThemeSelected ? "text-blue-300" : "text-gray-300"),
7013
+ children: t.name || key
7014
+ }), /*#__PURE__*/jsxs("div", {
7015
+ className: "flex flex-row space-x-1 ml-auto",
7016
+ children: [t.primary && /*#__PURE__*/jsx("div", {
7017
+ className: "w-4 h-4 rounded bg-".concat(t.primary, "-500")
7018
+ }), t.secondary && /*#__PURE__*/jsx("div", {
7019
+ className: "w-4 h-4 rounded bg-".concat(t.secondary, "-500")
7020
+ }), t.tertiary && /*#__PURE__*/jsx("div", {
7021
+ className: "w-4 h-4 rounded bg-".concat(t.tertiary, "-500")
7022
+ })]
7023
+ })]
7024
+ }, key);
7025
+ })
7026
+ })]
7027
+ }), selectedProviders.length > 0 && /*#__PURE__*/jsxs("div", {
7028
+ className: "wizard-customize-section",
7029
+ children: [/*#__PURE__*/jsxs("label", {
7030
+ className: "wizard-customize-label",
7031
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7032
+ icon: "plug",
7033
+ fixedWidth: true,
7034
+ className: "wizard-customize-label-icon"
7035
+ }), "Provider Status"]
7036
+ }), /*#__PURE__*/jsxs("div", {
7037
+ className: "wizard-customize-provider-summary",
7038
+ children: [configuredProviders.length > 0 && /*#__PURE__*/jsxs("div", {
7039
+ className: "wizard-provider-group",
7040
+ children: [/*#__PURE__*/jsxs("span", {
7041
+ className: "wizard-provider-group-label wizard-provider-group-label--ready",
7042
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7043
+ icon: "circle-check",
7044
+ className: "text-green-400"
7045
+ }), " ", "Ready (", configuredProviders.length, ")"]
7046
+ }), /*#__PURE__*/jsx("div", {
7047
+ className: "wizard-provider-list",
7048
+ children: configuredProviders.map(function (p) {
7049
+ return /*#__PURE__*/jsxs("span", {
7050
+ className: "wizard-provider-badge wizard-provider-badge--ready",
7051
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7052
+ icon: resolveIcon(p.icon),
7053
+ fixedWidth: true
7054
+ }), p.name]
7055
+ }, p.key);
7056
+ })
7057
+ })]
7058
+ }), needsSetupProviders.length > 0 && /*#__PURE__*/jsxs("div", {
7059
+ className: "wizard-provider-group",
7060
+ children: [/*#__PURE__*/jsxs("span", {
7061
+ className: "wizard-provider-group-label wizard-provider-group-label--setup",
7062
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7063
+ icon: "circle-exclamation",
7064
+ className: "text-amber-400"
7065
+ }), " ", "Needs setup (", needsSetupProviders.length, ")"]
7066
+ }), /*#__PURE__*/jsx("div", {
7067
+ className: "wizard-provider-list",
7068
+ children: needsSetupProviders.map(function (p) {
7069
+ return /*#__PURE__*/jsxs("span", {
7070
+ className: "wizard-provider-badge wizard-provider-badge--setup",
7071
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7072
+ icon: resolveIcon(p.icon),
7073
+ fixedWidth: true
7074
+ }), p.name]
7075
+ }, p.key);
7076
+ })
7077
+ })]
7078
+ })]
7079
+ })]
7080
+ }), /*#__PURE__*/jsxs("div", {
7081
+ className: "wizard-customize-summary",
7082
+ children: [/*#__PURE__*/jsx("span", {
7083
+ className: "wizard-customize-summary-title",
7084
+ children: "Summary"
7085
+ }), state.customization.name.trim() && /*#__PURE__*/jsxs("div", {
7086
+ className: "wizard-customize-summary-row",
7087
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7088
+ icon: "clone",
7089
+ className: "text-blue-400"
7090
+ }), /*#__PURE__*/jsx("span", {
7091
+ children: state.customization.name.trim()
7092
+ })]
7093
+ }), selectedFolder && /*#__PURE__*/jsxs("div", {
7094
+ className: "wizard-customize-summary-row",
7095
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7096
+ icon: selectedFolder.icon || selectedFolder.folder || "folder",
7097
+ className: "text-blue-400"
7098
+ }), /*#__PURE__*/jsx("span", {
7099
+ children: selectedFolder.name
7100
+ })]
7101
+ }), selectedTheme && /*#__PURE__*/jsxs("div", {
7102
+ className: "wizard-customize-summary-row",
7103
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7104
+ icon: "palette",
7105
+ className: "text-blue-400"
7106
+ }), /*#__PURE__*/jsx("span", {
7107
+ children: selectedTheme.name || state.customization.theme
7108
+ }), /*#__PURE__*/jsxs("div", {
7109
+ className: "flex flex-row space-x-1 ml-2",
7110
+ children: [selectedTheme.primary && /*#__PURE__*/jsx("div", {
7111
+ className: "w-3 h-3 rounded bg-".concat(selectedTheme.primary, "-500")
7112
+ }), selectedTheme.secondary && /*#__PURE__*/jsx("div", {
7113
+ className: "w-3 h-3 rounded bg-".concat(selectedTheme.secondary, "-500")
7114
+ })]
7115
+ })]
7116
+ }), /*#__PURE__*/jsxs("div", {
7117
+ className: "wizard-customize-summary-row",
7118
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7119
+ icon: isPrebuilt ? "box" : "grid-2",
7120
+ className: "text-blue-400"
7121
+ }), /*#__PURE__*/jsx("span", {
7122
+ children: isPrebuilt ? ((_state$selectedDashbo = state.selectedDashboard) === null || _state$selectedDashbo === void 0 ? void 0 : _state$selectedDashbo.displayName) || ((_state$selectedDashbo2 = state.selectedDashboard) === null || _state$selectedDashbo2 === void 0 ? void 0 : _state$selectedDashbo2.name) || "Pre-built dashboard" : "".concat(state.selectedWidgets.length, " widget").concat(state.selectedWidgets.length !== 1 ? "s" : "")
7123
+ })]
7124
+ })]
7125
+ }), error && /*#__PURE__*/jsxs("div", {
7126
+ className: "wizard-customize-error",
7127
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
7128
+ icon: "triangle-exclamation",
7129
+ className: "text-red-400"
7130
+ }), /*#__PURE__*/jsx("span", {
7131
+ children: error
7132
+ })]
7133
+ })]
7134
+ })]
7135
+ });
7136
+ };
7137
+
7138
+ var STEP_LABELS = [{
7139
+ label: "Intent",
7140
+ description: "Choose categories"
7141
+ }, {
7142
+ label: "Providers",
7143
+ description: "Select data sources"
7144
+ }, {
7145
+ label: "Browse",
7146
+ description: "Pick widgets or dashboards"
7147
+ }, {
7148
+ label: "Layout",
7149
+ description: "Arrange your widgets"
7150
+ }, {
7151
+ label: "Customize",
7152
+ description: "Name, folder & theme"
7153
+ }];
7154
+
7155
+ /**
7156
+ * DashboardWizardModal
7157
+ *
7158
+ * Top-level modal that hosts all wizard steps with a Stepper header.
7159
+ * Provides Back/Next/Create navigation with step-aware validation.
7160
+ * Resets wizard state cleanly on close.
7161
+ */
7162
+ var DashboardWizardModal = function DashboardWizardModal(_ref) {
7163
+ var open = _ref.open,
7164
+ setIsOpen = _ref.setIsOpen,
7165
+ _ref$menuItems = _ref.menuItems,
7166
+ menuItems = _ref$menuItems === void 0 ? [] : _ref$menuItems,
7167
+ _ref$onSaveMenuItem = _ref.onSaveMenuItem,
7168
+ onSaveMenuItem = _ref$onSaveMenuItem === void 0 ? null : _ref$onSaveMenuItem,
7169
+ _ref$onCreateWorkspac = _ref.onCreateWorkspace,
7170
+ onCreateWorkspace = _ref$onCreateWorkspac === void 0 ? null : _ref$onCreateWorkspac,
7171
+ _ref$onInstallDashboa = _ref.onInstallDashboard,
7172
+ onInstallDashboard = _ref$onInstallDashboa === void 0 ? null : _ref$onInstallDashboa,
7173
+ _ref$onOpenDashboard = _ref.onOpenDashboard,
7174
+ _onOpenDashboard = _ref$onOpenDashboard === void 0 ? null : _ref$onOpenDashboard,
7175
+ _ref$onReloadWorkspac = _ref.onReloadWorkspaces,
7176
+ onReloadWorkspaces = _ref$onReloadWorkspac === void 0 ? null : _ref$onReloadWorkspac,
7177
+ appId = _ref.appId;
7178
+ var _useWizardState = useWizardState(),
7179
+ state = _useWizardState.state,
7180
+ dispatch = _useWizardState.dispatch,
7181
+ nextStep = _useWizardState.nextStep,
7182
+ prevStep = _useWizardState.prevStep,
7183
+ goToStep = _useWizardState.goToStep,
7184
+ canProceed = _useWizardState.canProceed,
7185
+ isPrebuiltPath = _useWizardState.isPrebuiltPath;
7186
+
7187
+ // Reset wizard state when modal opens
7188
+ useEffect(function () {
7189
+ if (open) {
7190
+ dispatch({
7191
+ type: "RESET"
7192
+ });
7193
+ }
7194
+ }, [open, dispatch]);
7195
+ function handleClose() {
7196
+ setIsOpen(false);
7197
+ }
7198
+ var handleStepChange = useCallback(function (newStep) {
7199
+ // Stepper only allows going backwards; forward is via Next button
7200
+ if (newStep < state.step) {
7201
+ goToStep(newStep);
7202
+ }
7203
+ }, [state.step, goToStep]);
7204
+
7205
+ // Skip layout step for prebuilt path
7206
+ var handleNext = useCallback(function () {
7207
+ if (!canProceed) return;
7208
+ if (state.step === 2 && isPrebuiltPath) {
7209
+ // Skip layout step (3), go straight to customize (4)
7210
+ goToStep(4);
7211
+ } else {
7212
+ nextStep();
7213
+ }
7214
+ }, [canProceed, state.step, isPrebuiltPath, goToStep, nextStep]);
7215
+ var handleBack = useCallback(function () {
7216
+ if (state.step === 4 && isPrebuiltPath) {
7217
+ // Skip back over layout step (3), go to browse (2)
7218
+ goToStep(2);
7219
+ } else {
7220
+ prevStep();
7221
+ }
7222
+ }, [state.step, isPrebuiltPath, goToStep, prevStep]);
7223
+ var isLastStep = state.step === 4;
7224
+ state.step === 4 && state._created;
7225
+ return /*#__PURE__*/jsx(Modal, {
7226
+ isOpen: open,
7227
+ setIsOpen: setIsOpen,
7228
+ width: "w-5/6",
7229
+ height: "h-5/6",
7230
+ children: /*#__PURE__*/jsxs("div", {
7231
+ className: "flex flex-col h-full bg-gray-900 rounded-lg overflow-hidden",
7232
+ children: [/*#__PURE__*/jsxs("div", {
7233
+ className: "flex items-center justify-between px-6 pt-5 pb-0",
7234
+ children: [/*#__PURE__*/jsx("h2", {
7235
+ className: "text-lg font-semibold text-gray-200",
7236
+ children: "Dashboard Wizard"
7237
+ }), /*#__PURE__*/jsx("button", {
7238
+ type: "button",
7239
+ onClick: handleClose,
7240
+ className: "text-gray-500 hover:text-gray-300 transition-colors",
7241
+ children: /*#__PURE__*/jsx("svg", {
7242
+ className: "h-5 w-5",
7243
+ fill: "none",
7244
+ viewBox: "0 0 24 24",
7245
+ stroke: "currentColor",
7246
+ strokeWidth: 2,
7247
+ children: /*#__PURE__*/jsx("path", {
7248
+ strokeLinecap: "round",
7249
+ strokeLinejoin: "round",
7250
+ d: "M6 18L18 6M6 6l12 12"
7251
+ })
7252
+ })
7253
+ })]
7254
+ }), /*#__PURE__*/jsxs("div", {
7255
+ className: "flex flex-col flex-1 min-h-0 px-6 py-4",
7256
+ children: [/*#__PURE__*/jsxs(Stepper, {
7257
+ activeStep: state.step,
7258
+ onStepChange: handleStepChange,
7259
+ showNavigation: false,
7260
+ className: "flex-1 min-h-0",
7261
+ children: [/*#__PURE__*/jsx(Stepper.Step, {
7262
+ label: STEP_LABELS[0].label,
7263
+ description: STEP_LABELS[0].description,
7264
+ children: /*#__PURE__*/jsx("div", {
7265
+ className: "flex-1 min-h-0 overflow-y-auto",
7266
+ children: /*#__PURE__*/jsx(WizardIntentStep, {
7267
+ state: state,
7268
+ dispatch: dispatch
7269
+ })
7270
+ })
7271
+ }), /*#__PURE__*/jsx(Stepper.Step, {
7272
+ label: STEP_LABELS[1].label,
7273
+ description: STEP_LABELS[1].description,
7274
+ children: /*#__PURE__*/jsx("div", {
7275
+ className: "flex-1 min-h-0 overflow-y-auto",
7276
+ children: /*#__PURE__*/jsx(WizardProvidersStep, {
7277
+ state: state,
7278
+ dispatch: dispatch
7279
+ })
7280
+ })
7281
+ }), /*#__PURE__*/jsx(Stepper.Step, {
7282
+ label: STEP_LABELS[2].label,
7283
+ description: STEP_LABELS[2].description,
7284
+ children: /*#__PURE__*/jsx("div", {
7285
+ className: "flex-1 min-h-0 overflow-y-auto",
7286
+ children: /*#__PURE__*/jsx(WizardResultsStep, {
7287
+ state: state,
7288
+ dispatch: dispatch
7289
+ })
7290
+ })
7291
+ }), /*#__PURE__*/jsx(Stepper.Step, {
7292
+ label: STEP_LABELS[3].label,
7293
+ description: STEP_LABELS[3].description,
7294
+ children: /*#__PURE__*/jsx("div", {
7295
+ className: "flex-1 min-h-0 overflow-y-auto",
7296
+ children: /*#__PURE__*/jsx(WizardLayoutPreviewStep, {
7297
+ state: state,
7298
+ dispatch: dispatch
7299
+ })
7300
+ })
7301
+ }), /*#__PURE__*/jsx(Stepper.Step, {
7302
+ label: STEP_LABELS[4].label,
7303
+ description: STEP_LABELS[4].description,
7304
+ children: /*#__PURE__*/jsx("div", {
7305
+ className: "flex-1 min-h-0 overflow-y-auto",
7306
+ children: /*#__PURE__*/jsx(WizardCustomizeStep, {
7307
+ state: state,
7308
+ dispatch: dispatch,
7309
+ menuItems: menuItems,
7310
+ onSaveMenuItem: onSaveMenuItem,
7311
+ onCreateWorkspace: onCreateWorkspace,
7312
+ onInstallDashboard: onInstallDashboard,
7313
+ onOpenDashboard: function onOpenDashboard(ws) {
7314
+ handleClose();
7315
+ if (_onOpenDashboard) _onOpenDashboard(ws);
7316
+ if (onReloadWorkspaces) onReloadWorkspaces();
7317
+ },
7318
+ appId: appId
7319
+ })
7320
+ })
7321
+ })]
7322
+ }), /*#__PURE__*/jsxs("div", {
7323
+ className: "flex flex-row justify-between items-center pt-4 mt-4 border-t border-gray-700/50",
7324
+ children: [/*#__PURE__*/jsx(Button, {
7325
+ onClick: state.step === 0 ? handleClose : handleBack,
7326
+ title: state.step === 0 ? "Cancel" : "Back",
7327
+ textSize: "text-sm",
7328
+ padding: "py-2 px-4",
7329
+ backgroundColor: "bg-gray-700",
7330
+ textColor: "text-gray-300",
7331
+ hoverTextColor: "hover:text-white",
7332
+ hoverBackgroundColor: "hover:bg-gray-600"
7333
+ }), /*#__PURE__*/jsxs("span", {
7334
+ className: "text-xs text-gray-500",
7335
+ children: ["Step ", state.step + 1, " of ", STEP_LABELS.length]
7336
+ }), !isLastStep ? /*#__PURE__*/jsx(Button, {
7337
+ onClick: handleNext,
7338
+ title: "Next",
7339
+ textSize: "text-sm",
7340
+ padding: "py-2 px-4",
7341
+ backgroundColor: canProceed ? "bg-blue-600" : "bg-gray-700",
7342
+ textColor: canProceed ? "text-white" : "text-gray-500",
7343
+ hoverTextColor: canProceed ? "hover:text-white" : "hover:text-gray-500",
7344
+ hoverBackgroundColor: canProceed ? "hover:bg-blue-500" : "hover:bg-gray-700",
7345
+ disabled: !canProceed,
7346
+ icon: "arrow-right"
7347
+ }) : /*#__PURE__*/jsx("div", {})]
7348
+ })]
7349
+ })]
7350
+ })
7351
+ });
7352
+ };
7353
+
6510
7354
  var LayoutBuilderAddItemModal = function LayoutBuilderAddItemModal(_ref) {
6511
7355
  var workspace = _ref.workspace,
6512
7356
  open = _ref.open,
@@ -36832,7 +37676,9 @@ var DashboardsSection = function DashboardsSection(_ref) {
36832
37676
  _ref$createRequested = _ref.createRequested,
36833
37677
  createRequested = _ref$createRequested === void 0 ? false : _ref$createRequested,
36834
37678
  _ref$onCreateAcknowle = _ref.onCreateAcknowledged,
36835
- onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle;
37679
+ onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle,
37680
+ _ref$onOpenWizard = _ref.onOpenWizard,
37681
+ onOpenWizard = _ref$onOpenWizard === void 0 ? null : _ref$onOpenWizard;
36836
37682
  var _useState = useState(null),
36837
37683
  _useState2 = _slicedToArray(_useState, 2),
36838
37684
  selectedId = _useState2[0],
@@ -37044,6 +37890,14 @@ var DashboardsSection = function DashboardsSection(_ref) {
37044
37890
  value: "marketplace",
37045
37891
  className: "flex-1",
37046
37892
  children: "Marketplace"
37893
+ }), onOpenWizard && /*#__PURE__*/jsx(Tabs3.Trigger, {
37894
+ value: "wizard",
37895
+ className: "flex-1",
37896
+ onClick: function onClick(e) {
37897
+ e.preventDefault();
37898
+ onOpenWizard();
37899
+ },
37900
+ children: "Wizard"
37047
37901
  })]
37048
37902
  })
37049
37903
  })]
@@ -44976,7 +45830,9 @@ var AppSettingsModal = function AppSettingsModal(_ref) {
44976
45830
  _ref$onSignOut = _ref.onSignOut,
44977
45831
  onSignOut = _ref$onSignOut === void 0 ? null : _ref$onSignOut,
44978
45832
  _ref$onProfileUpdated = _ref.onProfileUpdated,
44979
- onProfileUpdated = _ref$onProfileUpdated === void 0 ? null : _ref$onProfileUpdated;
45833
+ onProfileUpdated = _ref$onProfileUpdated === void 0 ? null : _ref$onProfileUpdated,
45834
+ _ref$onOpenWizard = _ref.onOpenWizard,
45835
+ onOpenWizard = _ref$onOpenWizard === void 0 ? null : _ref$onOpenWizard;
44980
45836
  var _useState = useState(initialSection),
44981
45837
  _useState2 = _slicedToArray(_useState, 2),
44982
45838
  activeSection = _useState2[0],
@@ -45061,7 +45917,11 @@ var AppSettingsModal = function AppSettingsModal(_ref) {
45061
45917
  onCreateAcknowledged: function onCreateAcknowledged() {
45062
45918
  return setCreateRequested(false);
45063
45919
  },
45064
- onOpenWorkspace: onOpenWorkspace
45920
+ onOpenWorkspace: onOpenWorkspace,
45921
+ onOpenWizard: onOpenWizard ? function () {
45922
+ setIsOpen(false);
45923
+ onOpenWizard();
45924
+ } : null
45065
45925
  }), activeSection === "folders" && /*#__PURE__*/jsx(FoldersSection, {
45066
45926
  menuItems: menuItems,
45067
45927
  workspaces: workspaces,
@@ -45265,6 +46125,8 @@ var DashCommandPalette = function DashCommandPalette(_ref) {
45265
46125
  onCreateNewFolder = _ref$onCreateNewFolde === void 0 ? null : _ref$onCreateNewFolde,
45266
46126
  _ref$onLoadDashboard = _ref.onLoadDashboard,
45267
46127
  onLoadDashboard = _ref$onLoadDashboard === void 0 ? null : _ref$onLoadDashboard,
46128
+ _ref$onOpenWizard = _ref.onOpenWizard,
46129
+ onOpenWizard = _ref$onOpenWizard === void 0 ? null : _ref$onOpenWizard,
45268
46130
  _ref$onChangeTheme = _ref.onChangeTheme,
45269
46131
  onChangeTheme = _ref$onChangeTheme === void 0 ? null : _ref$onChangeTheme,
45270
46132
  _ref$onOpenThemeManag = _ref.onOpenThemeManager,
@@ -45335,6 +46197,13 @@ var DashCommandPalette = function DashCommandPalette(_ref) {
45335
46197
  action: function action() {
45336
46198
  return onCreateNewFolder && onCreateNewFolder();
45337
46199
  }
46200
+ }, matchesQuery("Dashboard Wizard") && {
46201
+ key: "dashboard-wizard",
46202
+ label: "Dashboard Wizard",
46203
+ icon: "wand-magic-sparkles",
46204
+ action: function action() {
46205
+ return onOpenWizard && onOpenWizard();
46206
+ }
45338
46207
  }].filter(Boolean);
45339
46208
  var showDashboards = dashboardItems.length > 0 || dashboardActions.length > 0;
45340
46209
 
@@ -46841,24 +47710,28 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
46841
47710
  _useState32 = _slicedToArray(_useState31, 2),
46842
47711
  isLayoutPickerOpen = _useState32[0],
46843
47712
  setIsLayoutPickerOpen = _useState32[1];
46844
-
46845
- // Unified App Settings Modal
46846
47713
  var _useState33 = useState(false),
46847
47714
  _useState34 = _slicedToArray(_useState33, 2),
46848
- isAppSettingsOpen = _useState34[0],
46849
- setIsAppSettingsOpen = _useState34[1];
46850
- var _useState35 = useState("dashboards"),
47715
+ isWizardOpen = _useState34[0],
47716
+ setIsWizardOpen = _useState34[1];
47717
+
47718
+ // Unified App Settings Modal
47719
+ var _useState35 = useState(false),
46851
47720
  _useState36 = _slicedToArray(_useState35, 2),
46852
- appSettingsInitialSection = _useState36[0],
46853
- setAppSettingsInitialSection = _useState36[1];
46854
- var _useState37 = useState(null),
47721
+ isAppSettingsOpen = _useState36[0],
47722
+ setIsAppSettingsOpen = _useState36[1];
47723
+ var _useState37 = useState("dashboards"),
46855
47724
  _useState38 = _slicedToArray(_useState37, 2),
46856
- appSettingsInitialProvider = _useState38[0],
46857
- setAppSettingsInitialProvider = _useState38[1];
46858
- var _useState39 = useState(false),
47725
+ appSettingsInitialSection = _useState38[0],
47726
+ setAppSettingsInitialSection = _useState38[1];
47727
+ var _useState39 = useState(null),
46859
47728
  _useState40 = _slicedToArray(_useState39, 2),
46860
- appSettingsCreateProvider = _useState40[0],
46861
- setAppSettingsCreateProvider = _useState40[1];
47729
+ appSettingsInitialProvider = _useState40[0],
47730
+ setAppSettingsInitialProvider = _useState40[1];
47731
+ var _useState41 = useState(false),
47732
+ _useState42 = _slicedToArray(_useState41, 2),
47733
+ appSettingsCreateProvider = _useState42[0],
47734
+ setAppSettingsCreateProvider = _useState42[1];
46862
47735
  function openAppSettings() {
46863
47736
  var section = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "general";
46864
47737
  var providerName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -47635,6 +48508,13 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
47635
48508
  text: "New Dashboard",
47636
48509
  onClick: handleClickNewFromEmpty,
47637
48510
  size: "sm"
48511
+ }), /*#__PURE__*/jsx(ButtonIcon, {
48512
+ icon: "wand-magic-sparkles",
48513
+ text: "Wizard",
48514
+ onClick: function onClick() {
48515
+ return setIsWizardOpen(true);
48516
+ },
48517
+ size: "sm"
47638
48518
  })]
47639
48519
  })
47640
48520
  })
@@ -47674,7 +48554,10 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
47674
48554
  authProfile: authProfile,
47675
48555
  onSignIn: handleSidebarSignIn,
47676
48556
  onSignOut: handleSidebarSignOut,
47677
- onProfileUpdated: handleProfileUpdated
48557
+ onProfileUpdated: handleProfileUpdated,
48558
+ onOpenWizard: function onOpenWizard() {
48559
+ return setIsWizardOpen(true);
48560
+ }
47678
48561
  }), /*#__PURE__*/jsx(ThemeManagerModal, {
47679
48562
  open: isThemeManagerOpen,
47680
48563
  setIsOpen: function setIsOpen() {
@@ -47702,7 +48585,19 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
47702
48585
  onSaveMenuItem: handleSaveNewMenuItem,
47703
48586
  appId: credentials === null || credentials === void 0 ? void 0 : credentials.appId,
47704
48587
  onReloadWorkspaces: loadWorkspaces,
47705
- onOpenWorkspace: handleOpenTab
48588
+ onOpenWorkspace: handleOpenTab,
48589
+ onOpenWizard: function onOpenWizard() {
48590
+ return setIsWizardOpen(true);
48591
+ }
48592
+ }), /*#__PURE__*/jsx(DashboardWizardModal, {
48593
+ open: isWizardOpen,
48594
+ setIsOpen: setIsWizardOpen,
48595
+ menuItems: menuItems,
48596
+ onSaveMenuItem: handleSaveNewMenuItem,
48597
+ onCreateWorkspace: handleCreateFromTemplate,
48598
+ onOpenDashboard: handleOpenTab,
48599
+ onReloadWorkspaces: loadWorkspaces,
48600
+ appId: credentials === null || credentials === void 0 ? void 0 : credentials.appId
47706
48601
  })]
47707
48602
  })]
47708
48603
  }), !popout && /*#__PURE__*/jsx(DashCommandPalette, {
@@ -47741,6 +48636,9 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
47741
48636
  },
47742
48637
  onOpenDiscover: function onOpenDiscover() {
47743
48638
  return openAppSettings("widgets");
48639
+ },
48640
+ onOpenWizard: function onOpenWizard() {
48641
+ return setIsWizardOpen(true);
47744
48642
  }
47745
48643
  })]
47746
48644
  });
@@ -49126,5 +50024,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
49126
50024
 
49127
50025
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
49128
50026
 
49129
- export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardIntentStep, WizardLayoutPreviewStep, WizardProvidersStep, WizardResultsStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
50027
+ export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWizardModal, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardCustomizeStep, WizardIntentStep, WizardLayoutPreviewStep, WizardProvidersStep, WizardResultsStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
49130
50028
  //# sourceMappingURL=index.esm.js.map