powr-sdk-web 4.0.2 → 4.0.4

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.
@@ -12,6 +12,11 @@ var _PowrToolConfig = _interopRequireDefault(require("./PowrToolConfig"));
12
12
  var _PowrToolStatus = _interopRequireDefault(require("./PowrToolStatus"));
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t6 in e) "default" !== _t6 && {}.hasOwnProperty.call(e, _t6) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t6)) && (i.get || i.set) ? o(f, _t6, i) : f[_t6] = e[_t6]); return f; })(e, t); }
15
+ function ownKeys(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; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
20
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
16
21
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
17
22
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
@@ -22,6 +27,121 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
22
27
  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; }
23
28
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
24
29
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
30
+ // Inline styles for the tools component
31
+ var styles = {
32
+ container: {
33
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
34
+ color: '#374151',
35
+ background: '#ffffff',
36
+ borderRadius: '8px',
37
+ boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
38
+ overflow: 'hidden'
39
+ },
40
+ containerDark: {
41
+ background: '#1f2937',
42
+ color: '#f9fafb'
43
+ },
44
+ header: {
45
+ padding: '24px 24px 0',
46
+ borderBottom: '1px solid #e5e7eb'
47
+ },
48
+ headerDark: {
49
+ borderBottomColor: '#374151'
50
+ },
51
+ headerTitle: {
52
+ fontSize: '24px',
53
+ fontWeight: '700',
54
+ margin: '0 0 8px 0',
55
+ color: '#111827'
56
+ },
57
+ headerTitleDark: {
58
+ color: '#f9fafb'
59
+ },
60
+ headerSubtitle: {
61
+ fontSize: '14px',
62
+ color: '#6b7280',
63
+ margin: '0 0 24px 0'
64
+ },
65
+ headerSubtitleDark: {
66
+ color: '#9ca3af'
67
+ },
68
+ tabs: {
69
+ display: 'flex',
70
+ borderBottom: '1px solid #e5e7eb',
71
+ background: '#f9fafb'
72
+ },
73
+ tabsDark: {
74
+ borderBottomColor: '#374151',
75
+ background: '#111827'
76
+ },
77
+ tab: {
78
+ flex: 1,
79
+ padding: '16px 24px',
80
+ background: 'none',
81
+ border: 'none',
82
+ fontSize: '14px',
83
+ fontWeight: '500',
84
+ color: '#6b7280',
85
+ cursor: 'pointer',
86
+ transition: 'all 0.2s ease',
87
+ borderBottom: '2px solid transparent'
88
+ },
89
+ tabDark: {
90
+ color: '#9ca3af'
91
+ },
92
+ tabHover: {
93
+ color: '#374151',
94
+ background: '#f3f4f6'
95
+ },
96
+ tabHoverDark: {
97
+ color: '#d1d5db',
98
+ background: '#1f2937'
99
+ },
100
+ tabActive: {
101
+ color: '#2563eb',
102
+ borderBottomColor: '#2563eb',
103
+ background: '#ffffff'
104
+ },
105
+ tabActiveDark: {
106
+ background: '#1f2937'
107
+ },
108
+ content: {
109
+ padding: '24px'
110
+ },
111
+ loading: {
112
+ display: 'flex',
113
+ alignItems: 'center',
114
+ justifyContent: 'center',
115
+ minHeight: '200px',
116
+ fontSize: '16px',
117
+ color: '#6b7280'
118
+ },
119
+ loadingDark: {
120
+ color: '#9ca3af'
121
+ },
122
+ error: {
123
+ padding: '24px',
124
+ textAlign: 'center'
125
+ },
126
+ errorMessage: {
127
+ color: '#dc2626',
128
+ marginBottom: '16px',
129
+ fontSize: '14px'
130
+ },
131
+ errorMessageDark: {
132
+ color: '#f87171'
133
+ },
134
+ retryButton: {
135
+ background: '#2563eb',
136
+ color: 'white',
137
+ border: 'none',
138
+ padding: '8px 16px',
139
+ borderRadius: '6px',
140
+ fontSize: '14px',
141
+ cursor: 'pointer',
142
+ transition: 'background 0.2s ease'
143
+ }
144
+ };
25
145
  var PowrBaseTools = function PowrBaseTools(_ref) {
26
146
  var apiUrl = _ref.apiUrl,
27
147
  projectId = _ref.projectId,
@@ -261,43 +381,46 @@ var PowrBaseTools = function PowrBaseTools(_ref) {
261
381
  }, []);
262
382
  if (loading) {
263
383
  return /*#__PURE__*/_react["default"].createElement("div", {
264
- className: "powr-tools-loading ".concat(className)
265
- }, /*#__PURE__*/_react["default"].createElement("div", {
266
- className: "loading-spinner"
267
- }, "Loading tools..."));
384
+ style: _objectSpread(_objectSpread({}, styles.loading), theme === 'dark' ? styles.loadingDark : {})
385
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Loading tools..."));
268
386
  }
269
387
  if (error) {
270
388
  return /*#__PURE__*/_react["default"].createElement("div", {
271
- className: "powr-tools-error ".concat(className)
389
+ style: styles.error
272
390
  }, /*#__PURE__*/_react["default"].createElement("div", {
273
- className: "error-message"
391
+ style: _objectSpread(_objectSpread({}, styles.errorMessage), theme === 'dark' ? styles.errorMessageDark : {})
274
392
  }, error), /*#__PURE__*/_react["default"].createElement("button", {
393
+ style: styles.retryButton,
275
394
  onClick: fetchTools
276
395
  }, "Retry"));
277
396
  }
278
397
  return /*#__PURE__*/_react["default"].createElement("div", {
279
- className: "powr-base-tools ".concat(className, " theme-").concat(theme)
398
+ style: _objectSpread(_objectSpread({}, styles.container), theme === 'dark' ? styles.containerDark : {})
280
399
  }, /*#__PURE__*/_react["default"].createElement("div", {
281
- className: "tools-header"
282
- }, /*#__PURE__*/_react["default"].createElement("h2", null, "Tools"), /*#__PURE__*/_react["default"].createElement("p", null, "Connect and manage your tools and services")), /*#__PURE__*/_react["default"].createElement("div", {
283
- className: "tools-tabs"
400
+ style: _objectSpread(_objectSpread({}, styles.header), theme === 'dark' ? styles.headerDark : {})
401
+ }, /*#__PURE__*/_react["default"].createElement("h2", {
402
+ style: _objectSpread(_objectSpread({}, styles.headerTitle), theme === 'dark' ? styles.headerTitleDark : {})
403
+ }, "Tools"), /*#__PURE__*/_react["default"].createElement("p", {
404
+ style: _objectSpread(_objectSpread({}, styles.headerSubtitle), theme === 'dark' ? styles.headerSubtitleDark : {})
405
+ }, "Connect and manage your tools and services")), /*#__PURE__*/_react["default"].createElement("div", {
406
+ style: _objectSpread(_objectSpread({}, styles.tabs), theme === 'dark' ? styles.tabsDark : {})
284
407
  }, /*#__PURE__*/_react["default"].createElement("button", {
285
- className: "tab ".concat(activeTab === 'available' ? 'active' : ''),
408
+ style: _objectSpread(_objectSpread(_objectSpread({}, styles.tab), theme === 'dark' ? styles.tabDark : {}), activeTab === 'available' ? theme === 'dark' ? styles.tabActiveDark : styles.tabActive : {}),
286
409
  onClick: function onClick() {
287
410
  return setActiveTab('available');
288
411
  }
289
412
  }, "Available Tools"), showUserSettings && /*#__PURE__*/_react["default"].createElement("button", {
290
- className: "tab ".concat(activeTab === 'configured' ? 'active' : ''),
413
+ style: _objectSpread(_objectSpread(_objectSpread({}, styles.tab), theme === 'dark' ? styles.tabDark : {}), activeTab === 'configured' ? theme === 'dark' ? styles.tabActiveDark : styles.tabActive : {}),
291
414
  onClick: function onClick() {
292
415
  return setActiveTab('configured');
293
416
  }
294
417
  }, "My Tools"), showGlobalSettings && /*#__PURE__*/_react["default"].createElement("button", {
295
- className: "tab ".concat(activeTab === 'global' ? 'active' : ''),
418
+ style: _objectSpread(_objectSpread(_objectSpread({}, styles.tab), theme === 'dark' ? styles.tabDark : {}), activeTab === 'global' ? theme === 'dark' ? styles.tabActiveDark : styles.tabActive : {}),
296
419
  onClick: function onClick() {
297
420
  return setActiveTab('global');
298
421
  }
299
422
  }, "Global Settings")), /*#__PURE__*/_react["default"].createElement("div", {
300
- className: "tools-content"
423
+ style: styles.content
301
424
  }, activeTab === 'available' && /*#__PURE__*/_react["default"].createElement(_PowrToolList["default"], {
302
425
  tools: tools,
303
426
  userTools: userTools,
@@ -6,6 +6,180 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ function ownKeys(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; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ // Inline styles for the tool card component
16
+ var cardStyles = {
17
+ card: {
18
+ background: '#ffffff',
19
+ border: '1px solid #e5e7eb',
20
+ borderRadius: '12px',
21
+ padding: '20px',
22
+ cursor: 'pointer',
23
+ transition: 'all 0.2s ease',
24
+ position: 'relative'
25
+ },
26
+ cardEnabled: {
27
+ borderColor: '#10b981'
28
+ },
29
+ cardConfigured: {
30
+ borderLeft: '4px solid #2563eb'
31
+ },
32
+ header: {
33
+ display: 'flex',
34
+ alignItems: 'flex-start',
35
+ gap: '16px',
36
+ marginBottom: '16px'
37
+ },
38
+ icon: {
39
+ flexShrink: 0,
40
+ width: '48px',
41
+ height: '48px',
42
+ background: '#f3f4f6',
43
+ borderRadius: '12px',
44
+ display: 'flex',
45
+ alignItems: 'center',
46
+ justifyContent: 'center',
47
+ fontSize: '24px'
48
+ },
49
+ info: {
50
+ flex: 1,
51
+ minWidth: 0
52
+ },
53
+ name: {
54
+ fontSize: '18px',
55
+ fontWeight: '600',
56
+ margin: '0 0 4px 0',
57
+ color: '#111827',
58
+ lineHeight: 1.2
59
+ },
60
+ description: {
61
+ fontSize: '14px',
62
+ color: '#6b7280',
63
+ margin: '0 0 8px 0',
64
+ lineHeight: 1.4
65
+ },
66
+ meta: {
67
+ display: 'flex',
68
+ gap: '12px',
69
+ alignItems: 'center'
70
+ },
71
+ category: {
72
+ background: '#dbeafe',
73
+ color: '#1e40af',
74
+ padding: '4px 8px',
75
+ borderRadius: '6px',
76
+ fontSize: '12px',
77
+ fontWeight: '500',
78
+ textTransform: 'capitalize'
79
+ },
80
+ version: {
81
+ fontSize: '12px',
82
+ color: '#6b7280',
83
+ fontFamily: '"Monaco", "Menlo", "Ubuntu Mono", monospace'
84
+ },
85
+ status: {
86
+ flexShrink: 0
87
+ },
88
+ statusBadge: {
89
+ padding: '4px 8px',
90
+ borderRadius: '6px',
91
+ fontSize: '12px',
92
+ fontWeight: '500'
93
+ },
94
+ statusEnabled: {
95
+ background: '#dcfce7',
96
+ color: '#166534'
97
+ },
98
+ statusDisabled: {
99
+ background: '#fef2f2',
100
+ color: '#991b1b'
101
+ },
102
+ actions: {
103
+ marginTop: '16px'
104
+ },
105
+ availableActions: {
106
+ marginBottom: '16px'
107
+ },
108
+ actionsTitle: {
109
+ fontSize: '14px',
110
+ fontWeight: '600',
111
+ margin: '0 0 8px 0',
112
+ color: '#374151'
113
+ },
114
+ actionsList: {
115
+ display: 'flex',
116
+ flexDirection: 'column',
117
+ gap: '6px'
118
+ },
119
+ actionItem: {
120
+ display: 'flex',
121
+ justifyContent: 'space-between',
122
+ alignItems: 'center',
123
+ padding: '8px 12px',
124
+ background: '#f9fafb',
125
+ borderRadius: '6px',
126
+ fontSize: '13px'
127
+ },
128
+ actionName: {
129
+ fontWeight: '500',
130
+ color: '#374151'
131
+ },
132
+ actionDescription: {
133
+ color: '#6b7280',
134
+ fontSize: '12px'
135
+ },
136
+ actionButtons: {
137
+ display: 'flex',
138
+ gap: '8px',
139
+ flexWrap: 'wrap'
140
+ },
141
+ button: {
142
+ padding: '8px 16px',
143
+ border: 'none',
144
+ borderRadius: '6px',
145
+ fontSize: '13px',
146
+ fontWeight: '500',
147
+ cursor: 'pointer',
148
+ transition: 'all 0.2s ease',
149
+ flex: 1,
150
+ minWidth: '80px'
151
+ },
152
+ toggleEnabled: {
153
+ background: '#dc2626',
154
+ color: 'white'
155
+ },
156
+ toggleDisabled: {
157
+ background: '#10b981',
158
+ color: 'white'
159
+ },
160
+ testButton: {
161
+ background: '#f59e0b',
162
+ color: 'white'
163
+ },
164
+ configureButton: {
165
+ background: '#2563eb',
166
+ color: 'white'
167
+ },
168
+ tags: {
169
+ display: 'flex',
170
+ flexWrap: 'wrap',
171
+ gap: '6px',
172
+ marginTop: '12px'
173
+ },
174
+ tag: {
175
+ background: '#f3f4f6',
176
+ color: '#374151',
177
+ padding: '4px 8px',
178
+ borderRadius: '4px',
179
+ fontSize: '12px',
180
+ fontWeight: '500'
181
+ }
182
+ };
9
183
  var PowrToolCard = function PowrToolCard(_ref) {
10
184
  var tool = _ref.tool,
11
185
  userTool = _ref.userTool,
@@ -34,67 +208,92 @@ var PowrToolCard = function PowrToolCard(_ref) {
34
208
  onExecute(tool.id, actionId, params);
35
209
  }
36
210
  };
211
+
212
+ // Get icon based on tool name
213
+ var getToolIcon = function getToolIcon(toolName) {
214
+ var name = toolName.toLowerCase();
215
+ if (name.includes('gmail') || name.includes('email')) return '📧';
216
+ if (name.includes('slack')) return '💬';
217
+ if (name.includes('github')) return '🐙';
218
+ if (name.includes('openai') || name.includes('ai')) return '🤖';
219
+ if (name.includes('stripe') || name.includes('payment')) return '💳';
220
+ if (name.includes('aws') || name.includes('s3')) return '☁️';
221
+ if (name.includes('google') || name.includes('drive')) return '📁';
222
+ if (name.includes('twitter') || name.includes('x')) return '🐦';
223
+ if (name.includes('linkedin')) return '💼';
224
+ if (name.includes('discord')) return '🎮';
225
+ if (name.includes('notion')) return '📝';
226
+ if (name.includes('trello') || name.includes('jira')) return '📋';
227
+ if (name.includes('zoom') || name.includes('meet')) return '📹';
228
+ if (name.includes('calendar')) return '📅';
229
+ if (name.includes('dropbox')) return '📦';
230
+ if (name.includes('figma')) return '🎨';
231
+ if (name.includes('shopify')) return '🛒';
232
+ if (name.includes('mailchimp')) return '📢';
233
+ if (name.includes('hubspot')) return '🎯';
234
+ return '🔧'; // Default icon
235
+ };
37
236
  return /*#__PURE__*/_react["default"].createElement("div", {
38
- className: "powr-tool-card ".concat(isEnabled ? 'enabled' : 'disabled', " ").concat(isConfigured ? 'configured' : ''),
237
+ style: _objectSpread(_objectSpread(_objectSpread({}, cardStyles.card), isEnabled ? cardStyles.cardEnabled : {}), isConfigured ? cardStyles.cardConfigured : {}),
39
238
  onClick: function onClick() {
40
239
  return onSelect && onSelect(tool);
41
240
  }
42
241
  }, /*#__PURE__*/_react["default"].createElement("div", {
43
- className: "tool-header"
242
+ style: cardStyles.header
44
243
  }, /*#__PURE__*/_react["default"].createElement("div", {
45
- className: "tool-icon"
46
- }, /*#__PURE__*/_react["default"].createElement("span", {
47
- className: "icon"
48
- }, tool.icon)), /*#__PURE__*/_react["default"].createElement("div", {
49
- className: "tool-info"
244
+ style: cardStyles.icon
245
+ }, /*#__PURE__*/_react["default"].createElement("span", null, getToolIcon(tool.name))), /*#__PURE__*/_react["default"].createElement("div", {
246
+ style: cardStyles.info
50
247
  }, /*#__PURE__*/_react["default"].createElement("h3", {
51
- className: "tool-name"
248
+ style: cardStyles.name
52
249
  }, tool.name), /*#__PURE__*/_react["default"].createElement("p", {
53
- className: "tool-description"
250
+ style: cardStyles.description
54
251
  }, tool.description), /*#__PURE__*/_react["default"].createElement("div", {
55
- className: "tool-meta"
252
+ style: cardStyles.meta
56
253
  }, /*#__PURE__*/_react["default"].createElement("span", {
57
- className: "category"
254
+ style: cardStyles.category
58
255
  }, tool.category), /*#__PURE__*/_react["default"].createElement("span", {
59
- className: "version"
256
+ style: cardStyles.version
60
257
  }, "v", tool.version))), /*#__PURE__*/_react["default"].createElement("div", {
61
- className: "tool-status"
258
+ style: cardStyles.status
62
259
  }, isConfigured && /*#__PURE__*/_react["default"].createElement("div", {
63
- className: "status-badge ".concat(isEnabled ? 'enabled' : 'disabled')
260
+ style: _objectSpread(_objectSpread({}, cardStyles.statusBadge), isEnabled ? cardStyles.statusEnabled : cardStyles.statusDisabled)
64
261
  }, isEnabled ? 'Active' : 'Inactive'))), /*#__PURE__*/_react["default"].createElement("div", {
65
- className: "tool-actions"
262
+ style: cardStyles.actions
66
263
  }, tool.actions && tool.actions.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
67
- className: "available-actions"
68
- }, /*#__PURE__*/_react["default"].createElement("h4", null, "Available Actions:"), /*#__PURE__*/_react["default"].createElement("div", {
69
- className: "actions-list"
264
+ style: cardStyles.availableActions
265
+ }, /*#__PURE__*/_react["default"].createElement("h4", {
266
+ style: cardStyles.actionsTitle
267
+ }, "Available Actions:"), /*#__PURE__*/_react["default"].createElement("div", {
268
+ style: cardStyles.actionsList
70
269
  }, tool.actions.map(function (action) {
71
270
  return /*#__PURE__*/_react["default"].createElement("div", {
72
271
  key: action.id,
73
- className: "action-item"
272
+ style: cardStyles.actionItem
74
273
  }, /*#__PURE__*/_react["default"].createElement("span", {
75
- className: "action-name"
274
+ style: cardStyles.actionName
76
275
  }, action.name), /*#__PURE__*/_react["default"].createElement("span", {
77
- className: "action-description"
276
+ style: cardStyles.actionDescription
78
277
  }, action.description));
79
278
  }))), /*#__PURE__*/_react["default"].createElement("div", {
80
- className: "action-buttons"
279
+ style: cardStyles.actionButtons
81
280
  }, isConfigured && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("button", {
82
- className: "toggle-btn ".concat(isEnabled ? 'enabled' : 'disabled'),
281
+ style: _objectSpread(_objectSpread({}, cardStyles.button), isEnabled ? cardStyles.toggleEnabled : cardStyles.toggleDisabled),
83
282
  onClick: handleToggle
84
283
  }, isEnabled ? 'Disable' : 'Enable'), /*#__PURE__*/_react["default"].createElement("button", {
85
- className: "test-btn",
284
+ style: _objectSpread(_objectSpread({}, cardStyles.button), cardStyles.testButton),
86
285
  onClick: handleTest
87
286
  }, "Test Connection")), /*#__PURE__*/_react["default"].createElement("button", {
88
- className: "configure-btn",
287
+ style: _objectSpread(_objectSpread({}, cardStyles.button), cardStyles.configureButton),
89
288
  onClick: function onClick() {
90
289
  return onSelect && onSelect(tool);
91
290
  }
92
291
  }, isConfigured ? 'Configure' : 'Add Tool'))), tool.tags && tool.tags.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
93
- className: "tool-tags"
292
+ style: cardStyles.tags
94
293
  }, tool.tags.map(function (tag) {
95
294
  return /*#__PURE__*/_react["default"].createElement("span", {
96
295
  key: tag,
97
- className: "tag"
296
+ style: cardStyles.tag
98
297
  }, tag);
99
298
  })));
100
299
  };
@@ -19,6 +19,106 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
19
19
  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; }
20
20
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
21
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
+ // Inline styles for the tool list component
23
+ var listStyles = {
24
+ container: {
25
+ width: '100%'
26
+ },
27
+ filters: {
28
+ display: 'flex',
29
+ gap: '16px',
30
+ marginBottom: '24px',
31
+ flexWrap: 'wrap'
32
+ },
33
+ searchBox: {
34
+ flex: 1,
35
+ minWidth: '200px'
36
+ },
37
+ searchInput: {
38
+ width: '100%',
39
+ padding: '12px 16px',
40
+ border: '1px solid #d1d5db',
41
+ borderRadius: '8px',
42
+ fontSize: '14px',
43
+ background: '#ffffff',
44
+ color: '#374151',
45
+ transition: 'border-color 0.2s ease, box-shadow 0.2s ease'
46
+ },
47
+ filterControls: {
48
+ display: 'flex',
49
+ gap: '12px'
50
+ },
51
+ select: {
52
+ padding: '12px 16px',
53
+ border: '1px solid #d1d5db',
54
+ borderRadius: '8px',
55
+ fontSize: '14px',
56
+ background: '#ffffff',
57
+ color: '#374151',
58
+ cursor: 'pointer',
59
+ transition: 'border-color 0.2s ease'
60
+ },
61
+ resultsInfo: {
62
+ marginBottom: '16px',
63
+ fontSize: '14px',
64
+ color: '#6b7280'
65
+ },
66
+ toolsGrid: {
67
+ display: 'grid',
68
+ gridTemplateColumns: 'repeat(auto-fill, minmax(400px, 1fr))',
69
+ gap: '20px',
70
+ marginBottom: '24px'
71
+ },
72
+ noTools: {
73
+ gridColumn: '1 / -1',
74
+ textAlign: 'center',
75
+ padding: '48px 24px'
76
+ },
77
+ emptyState: {
78
+ maxWidth: '400px',
79
+ margin: '0 auto'
80
+ },
81
+ emptyIcon: {
82
+ fontSize: '48px',
83
+ marginBottom: '16px'
84
+ },
85
+ emptyTitle: {
86
+ fontSize: '18px',
87
+ fontWeight: '600',
88
+ margin: '0 0 8px 0',
89
+ color: '#374151'
90
+ },
91
+ emptyText: {
92
+ fontSize: '14px',
93
+ color: '#6b7280',
94
+ margin: '0 0 16px 0'
95
+ },
96
+ clearFiltersBtn: {
97
+ background: '#2563eb',
98
+ color: 'white',
99
+ border: 'none',
100
+ padding: '8px 16px',
101
+ borderRadius: '6px',
102
+ fontSize: '14px',
103
+ cursor: 'pointer',
104
+ transition: 'background 0.2s ease'
105
+ },
106
+ loadMoreSection: {
107
+ textAlign: 'center',
108
+ marginTop: '24px'
109
+ },
110
+ loadMoreBtn: {
111
+ background: '#f3f4f6',
112
+ color: '#374151',
113
+ border: '1px solid #d1d5db',
114
+ padding: '12px 24px',
115
+ borderRadius: '8px',
116
+ fontSize: '14px',
117
+ fontWeight: '500',
118
+ cursor: 'pointer',
119
+ transition: 'all 0.2s ease'
120
+ }
121
+ };
22
122
  var PowrToolList = function PowrToolList(_ref) {
23
123
  var tools = _ref.tools,
24
124
  userTools = _ref.userTools,
@@ -76,11 +176,11 @@ var PowrToolList = function PowrToolList(_ref) {
76
176
  }
77
177
  });
78
178
  return /*#__PURE__*/_react["default"].createElement("div", {
79
- className: "powr-tool-list"
179
+ style: listStyles.container
80
180
  }, /*#__PURE__*/_react["default"].createElement("div", {
81
- className: "tool-filters"
181
+ style: listStyles.filters
82
182
  }, /*#__PURE__*/_react["default"].createElement("div", {
83
- className: "search-box"
183
+ style: listStyles.searchBox
84
184
  }, /*#__PURE__*/_react["default"].createElement("input", {
85
185
  type: "text",
86
186
  placeholder: "Search tools...",
@@ -88,15 +188,15 @@ var PowrToolList = function PowrToolList(_ref) {
88
188
  onChange: function onChange(e) {
89
189
  return setSearchTerm(e.target.value);
90
190
  },
91
- className: "search-input"
191
+ style: listStyles.searchInput
92
192
  })), /*#__PURE__*/_react["default"].createElement("div", {
93
- className: "filter-controls"
193
+ style: listStyles.filterControls
94
194
  }, /*#__PURE__*/_react["default"].createElement("select", {
95
195
  value: selectedCategory,
96
196
  onChange: function onChange(e) {
97
197
  return setSelectedCategory(e.target.value);
98
198
  },
99
- className: "category-filter"
199
+ style: listStyles.select
100
200
  }, categories.map(function (category) {
101
201
  return /*#__PURE__*/_react["default"].createElement("option", {
102
202
  key: category,
@@ -107,7 +207,7 @@ var PowrToolList = function PowrToolList(_ref) {
107
207
  onChange: function onChange(e) {
108
208
  return setSortBy(e.target.value);
109
209
  },
110
- className: "sort-filter"
210
+ style: listStyles.select
111
211
  }, /*#__PURE__*/_react["default"].createElement("option", {
112
212
  value: "name"
113
213
  }, "Sort by Name"), /*#__PURE__*/_react["default"].createElement("option", {
@@ -115,9 +215,9 @@ var PowrToolList = function PowrToolList(_ref) {
115
215
  }, "Sort by Category"), /*#__PURE__*/_react["default"].createElement("option", {
116
216
  value: "popularity"
117
217
  }, "Sort by Popularity")))), /*#__PURE__*/_react["default"].createElement("div", {
118
- className: "results-info"
218
+ style: listStyles.resultsInfo
119
219
  }, /*#__PURE__*/_react["default"].createElement("p", null, "Showing ", sortedTools.length, " of ", tools.length, " tools")), /*#__PURE__*/_react["default"].createElement("div", {
120
- className: "tools-grid"
220
+ style: listStyles.toolsGrid
121
221
  }, sortedTools.length > 0 ? sortedTools.map(function (tool) {
122
222
  var userTool = userTools.find(function (ut) {
123
223
  return ut.toolId === tool.id;
@@ -133,21 +233,25 @@ var PowrToolList = function PowrToolList(_ref) {
133
233
  showConfiguredOnly: showConfiguredOnly
134
234
  });
135
235
  }) : /*#__PURE__*/_react["default"].createElement("div", {
136
- className: "no-tools"
236
+ style: listStyles.noTools
137
237
  }, /*#__PURE__*/_react["default"].createElement("div", {
138
- className: "empty-state"
238
+ style: listStyles.emptyState
139
239
  }, /*#__PURE__*/_react["default"].createElement("div", {
140
- className: "empty-icon"
141
- }, "\uD83D\uDD0D"), /*#__PURE__*/_react["default"].createElement("h3", null, "No tools found"), /*#__PURE__*/_react["default"].createElement("p", null, searchTerm || selectedCategory !== 'all' ? 'Try adjusting your search or filters' : 'No tools available at the moment'), (searchTerm || selectedCategory !== 'all') && /*#__PURE__*/_react["default"].createElement("button", {
240
+ style: listStyles.emptyIcon
241
+ }, "\uD83D\uDD0D"), /*#__PURE__*/_react["default"].createElement("h3", {
242
+ style: listStyles.emptyTitle
243
+ }, "No tools found"), /*#__PURE__*/_react["default"].createElement("p", {
244
+ style: listStyles.emptyText
245
+ }, searchTerm || selectedCategory !== 'all' ? 'Try adjusting your search or filters' : 'No tools available at the moment'), (searchTerm || selectedCategory !== 'all') && /*#__PURE__*/_react["default"].createElement("button", {
142
246
  onClick: function onClick() {
143
247
  setSearchTerm('');
144
248
  setSelectedCategory('all');
145
249
  },
146
- className: "clear-filters-btn"
250
+ style: listStyles.clearFiltersBtn
147
251
  }, "Clear Filters")))), sortedTools.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
148
- className: "load-more-section"
252
+ style: listStyles.loadMoreSection
149
253
  }, /*#__PURE__*/_react["default"].createElement("button", {
150
- className: "load-more-btn"
254
+ style: listStyles.loadMoreBtn
151
255
  }, "Load More Tools")));
152
256
  };
153
257
  var _default = exports["default"] = PowrToolList;
@@ -0,0 +1,680 @@
1
+ /* PowrBaseTools Component Styles */
2
+ .powr-base-tools {
3
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
4
+ color: #374151;
5
+ background: #ffffff;
6
+ border-radius: 8px;
7
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
8
+ overflow: hidden;
9
+ }
10
+
11
+ /* Dark theme */
12
+ .powr-base-tools.theme-dark {
13
+ background: #1f2937;
14
+ color: #f9fafb;
15
+ }
16
+
17
+ /* Header */
18
+ .tools-header {
19
+ padding: 24px 24px 0;
20
+ border-bottom: 1px solid #e5e7eb;
21
+ }
22
+
23
+ .theme-dark .tools-header {
24
+ border-bottom-color: #374151;
25
+ }
26
+
27
+ .tools-header h2 {
28
+ font-size: 24px;
29
+ font-weight: 700;
30
+ margin: 0 0 8px 0;
31
+ color: #111827;
32
+ }
33
+
34
+ .theme-dark .tools-header h2 {
35
+ color: #f9fafb;
36
+ }
37
+
38
+ .tools-header p {
39
+ font-size: 14px;
40
+ color: #6b7280;
41
+ margin: 0 0 24px 0;
42
+ }
43
+
44
+ .theme-dark .tools-header p {
45
+ color: #9ca3af;
46
+ }
47
+
48
+ /* Tabs */
49
+ .tools-tabs {
50
+ display: flex;
51
+ border-bottom: 1px solid #e5e7eb;
52
+ background: #f9fafb;
53
+ }
54
+
55
+ .theme-dark .tools-tabs {
56
+ border-bottom-color: #374151;
57
+ background: #111827;
58
+ }
59
+
60
+ .tools-tabs .tab {
61
+ flex: 1;
62
+ padding: 16px 24px;
63
+ background: none;
64
+ border: none;
65
+ font-size: 14px;
66
+ font-weight: 500;
67
+ color: #6b7280;
68
+ cursor: pointer;
69
+ transition: all 0.2s ease;
70
+ border-bottom: 2px solid transparent;
71
+ }
72
+
73
+ .theme-dark .tools-tabs .tab {
74
+ color: #9ca3af;
75
+ }
76
+
77
+ .tools-tabs .tab:hover {
78
+ color: #374151;
79
+ background: #f3f4f6;
80
+ }
81
+
82
+ .theme-dark .tools-tabs .tab:hover {
83
+ color: #d1d5db;
84
+ background: #1f2937;
85
+ }
86
+
87
+ .tools-tabs .tab.active {
88
+ color: #2563eb;
89
+ border-bottom-color: #2563eb;
90
+ background: #ffffff;
91
+ }
92
+
93
+ .theme-dark .tools-tabs .tab.active {
94
+ background: #1f2937;
95
+ }
96
+
97
+ /* Content */
98
+ .tools-content {
99
+ padding: 24px;
100
+ }
101
+
102
+ /* Loading State */
103
+ .powr-tools-loading {
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ min-height: 200px;
108
+ font-size: 16px;
109
+ color: #6b7280;
110
+ }
111
+
112
+ .theme-dark .powr-tools-loading {
113
+ color: #9ca3af;
114
+ }
115
+
116
+ .loading-spinner {
117
+ display: flex;
118
+ align-items: center;
119
+ gap: 12px;
120
+ }
121
+
122
+ .loading-spinner::before {
123
+ content: '';
124
+ width: 20px;
125
+ height: 20px;
126
+ border: 2px solid #e5e7eb;
127
+ border-top: 2px solid #2563eb;
128
+ border-radius: 50%;
129
+ animation: spin 1s linear infinite;
130
+ }
131
+
132
+ @keyframes spin {
133
+ 0% { transform: rotate(0deg); }
134
+ 100% { transform: rotate(360deg); }
135
+ }
136
+
137
+ /* Error State */
138
+ .powr-tools-error {
139
+ padding: 24px;
140
+ text-align: center;
141
+ }
142
+
143
+ .error-message {
144
+ color: #dc2626;
145
+ margin-bottom: 16px;
146
+ font-size: 14px;
147
+ }
148
+
149
+ .theme-dark .error-message {
150
+ color: #f87171;
151
+ }
152
+
153
+ .powr-tools-error button {
154
+ background: #2563eb;
155
+ color: white;
156
+ border: none;
157
+ padding: 8px 16px;
158
+ border-radius: 6px;
159
+ font-size: 14px;
160
+ cursor: pointer;
161
+ transition: background 0.2s ease;
162
+ }
163
+
164
+ .powr-tools-error button:hover {
165
+ background: #1d4ed8;
166
+ }
167
+
168
+ /* Tool List Styles */
169
+ .powr-tool-list {
170
+ width: 100%;
171
+ }
172
+
173
+ /* Filters and Search */
174
+ .tool-filters {
175
+ display: flex;
176
+ gap: 16px;
177
+ margin-bottom: 24px;
178
+ flex-wrap: wrap;
179
+ }
180
+
181
+ .search-box {
182
+ flex: 1;
183
+ min-width: 200px;
184
+ }
185
+
186
+ .search-input {
187
+ width: 100%;
188
+ padding: 12px 16px;
189
+ border: 1px solid #d1d5db;
190
+ border-radius: 8px;
191
+ font-size: 14px;
192
+ background: #ffffff;
193
+ color: #374151;
194
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
195
+ }
196
+
197
+ .theme-dark .search-input {
198
+ background: #374151;
199
+ border-color: #4b5563;
200
+ color: #f9fafb;
201
+ }
202
+
203
+ .search-input:focus {
204
+ outline: none;
205
+ border-color: #2563eb;
206
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
207
+ }
208
+
209
+ .theme-dark .search-input:focus {
210
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.3);
211
+ }
212
+
213
+ .filter-controls {
214
+ display: flex;
215
+ gap: 12px;
216
+ }
217
+
218
+ .category-filter,
219
+ .sort-filter {
220
+ padding: 12px 16px;
221
+ border: 1px solid #d1d5db;
222
+ border-radius: 8px;
223
+ font-size: 14px;
224
+ background: #ffffff;
225
+ color: #374151;
226
+ cursor: pointer;
227
+ transition: border-color 0.2s ease;
228
+ }
229
+
230
+ .theme-dark .category-filter,
231
+ .theme-dark .sort-filter {
232
+ background: #374151;
233
+ border-color: #4b5563;
234
+ color: #f9fafb;
235
+ }
236
+
237
+ .category-filter:focus,
238
+ .sort-filter:focus {
239
+ outline: none;
240
+ border-color: #2563eb;
241
+ }
242
+
243
+ /* Results Info */
244
+ .results-info {
245
+ margin-bottom: 16px;
246
+ font-size: 14px;
247
+ color: #6b7280;
248
+ }
249
+
250
+ .theme-dark .results-info {
251
+ color: #9ca3af;
252
+ }
253
+
254
+ /* Tools Grid */
255
+ .tools-grid {
256
+ display: grid;
257
+ grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
258
+ gap: 20px;
259
+ margin-bottom: 24px;
260
+ }
261
+
262
+ /* Tool Card */
263
+ .powr-tool-card {
264
+ background: #ffffff;
265
+ border: 1px solid #e5e7eb;
266
+ border-radius: 12px;
267
+ padding: 20px;
268
+ cursor: pointer;
269
+ transition: all 0.2s ease;
270
+ position: relative;
271
+ }
272
+
273
+ .theme-dark .powr-tool-card {
274
+ background: #374151;
275
+ border-color: #4b5563;
276
+ }
277
+
278
+ .powr-tool-card:hover {
279
+ border-color: #2563eb;
280
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
281
+ transform: translateY(-2px);
282
+ }
283
+
284
+ .theme-dark .powr-tool-card:hover {
285
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
286
+ }
287
+
288
+ .powr-tool-card.enabled {
289
+ border-color: #10b981;
290
+ }
291
+
292
+ .powr-tool-card.configured {
293
+ border-left: 4px solid #2563eb;
294
+ }
295
+
296
+ /* Tool Header */
297
+ .tool-header {
298
+ display: flex;
299
+ align-items: flex-start;
300
+ gap: 16px;
301
+ margin-bottom: 16px;
302
+ }
303
+
304
+ .tool-icon {
305
+ flex-shrink: 0;
306
+ width: 48px;
307
+ height: 48px;
308
+ background: #f3f4f6;
309
+ border-radius: 12px;
310
+ display: flex;
311
+ align-items: center;
312
+ justify-content: center;
313
+ font-size: 24px;
314
+ }
315
+
316
+ .theme-dark .tool-icon {
317
+ background: #4b5563;
318
+ }
319
+
320
+ .tool-info {
321
+ flex: 1;
322
+ min-width: 0;
323
+ }
324
+
325
+ .tool-name {
326
+ font-size: 18px;
327
+ font-weight: 600;
328
+ margin: 0 0 4px 0;
329
+ color: #111827;
330
+ line-height: 1.2;
331
+ }
332
+
333
+ .theme-dark .tool-name {
334
+ color: #f9fafb;
335
+ }
336
+
337
+ .tool-description {
338
+ font-size: 14px;
339
+ color: #6b7280;
340
+ margin: 0 0 8px 0;
341
+ line-height: 1.4;
342
+ }
343
+
344
+ .theme-dark .tool-description {
345
+ color: #9ca3af;
346
+ }
347
+
348
+ .tool-meta {
349
+ display: flex;
350
+ gap: 12px;
351
+ align-items: center;
352
+ }
353
+
354
+ .category {
355
+ background: #dbeafe;
356
+ color: #1e40af;
357
+ padding: 4px 8px;
358
+ border-radius: 6px;
359
+ font-size: 12px;
360
+ font-weight: 500;
361
+ text-transform: capitalize;
362
+ }
363
+
364
+ .theme-dark .category {
365
+ background: #1e3a8a;
366
+ color: #93c5fd;
367
+ }
368
+
369
+ .version {
370
+ font-size: 12px;
371
+ color: #6b7280;
372
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
373
+ }
374
+
375
+ .theme-dark .version {
376
+ color: #9ca3af;
377
+ }
378
+
379
+ .tool-status {
380
+ flex-shrink: 0;
381
+ }
382
+
383
+ .status-badge {
384
+ padding: 4px 8px;
385
+ border-radius: 6px;
386
+ font-size: 12px;
387
+ font-weight: 500;
388
+ }
389
+
390
+ .status-badge.enabled {
391
+ background: #dcfce7;
392
+ color: #166534;
393
+ }
394
+
395
+ .theme-dark .status-badge.enabled {
396
+ background: #14532d;
397
+ color: #86efac;
398
+ }
399
+
400
+ .status-badge.disabled {
401
+ background: #fef2f2;
402
+ color: #991b1b;
403
+ }
404
+
405
+ .theme-dark .status-badge.disabled {
406
+ background: #450a0a;
407
+ color: #fca5a5;
408
+ }
409
+
410
+ /* Tool Actions */
411
+ .tool-actions {
412
+ margin-top: 16px;
413
+ }
414
+
415
+ .available-actions {
416
+ margin-bottom: 16px;
417
+ }
418
+
419
+ .available-actions h4 {
420
+ font-size: 14px;
421
+ font-weight: 600;
422
+ margin: 0 0 8px 0;
423
+ color: #374151;
424
+ }
425
+
426
+ .theme-dark .available-actions h4 {
427
+ color: #d1d5db;
428
+ }
429
+
430
+ .actions-list {
431
+ display: flex;
432
+ flex-direction: column;
433
+ gap: 6px;
434
+ }
435
+
436
+ .action-item {
437
+ display: flex;
438
+ justify-content: space-between;
439
+ align-items: center;
440
+ padding: 8px 12px;
441
+ background: #f9fafb;
442
+ border-radius: 6px;
443
+ font-size: 13px;
444
+ }
445
+
446
+ .theme-dark .action-item {
447
+ background: #4b5563;
448
+ }
449
+
450
+ .action-name {
451
+ font-weight: 500;
452
+ color: #374151;
453
+ }
454
+
455
+ .theme-dark .action-name {
456
+ color: #d1d5db;
457
+ }
458
+
459
+ .action-description {
460
+ color: #6b7280;
461
+ font-size: 12px;
462
+ }
463
+
464
+ .theme-dark .action-description {
465
+ color: #9ca3af;
466
+ }
467
+
468
+ .action-buttons {
469
+ display: flex;
470
+ gap: 8px;
471
+ flex-wrap: wrap;
472
+ }
473
+
474
+ .toggle-btn,
475
+ .test-btn,
476
+ .configure-btn {
477
+ padding: 8px 16px;
478
+ border: none;
479
+ border-radius: 6px;
480
+ font-size: 13px;
481
+ font-weight: 500;
482
+ cursor: pointer;
483
+ transition: all 0.2s ease;
484
+ flex: 1;
485
+ min-width: 80px;
486
+ }
487
+
488
+ .toggle-btn.enabled {
489
+ background: #dc2626;
490
+ color: white;
491
+ }
492
+
493
+ .toggle-btn.enabled:hover {
494
+ background: #b91c1c;
495
+ }
496
+
497
+ .toggle-btn.disabled {
498
+ background: #10b981;
499
+ color: white;
500
+ }
501
+
502
+ .toggle-btn.disabled:hover {
503
+ background: #059669;
504
+ }
505
+
506
+ .test-btn {
507
+ background: #f59e0b;
508
+ color: white;
509
+ }
510
+
511
+ .test-btn:hover {
512
+ background: #d97706;
513
+ }
514
+
515
+ .configure-btn {
516
+ background: #2563eb;
517
+ color: white;
518
+ }
519
+
520
+ .configure-btn:hover {
521
+ background: #1d4ed8;
522
+ }
523
+
524
+ /* Tool Tags */
525
+ .tool-tags {
526
+ display: flex;
527
+ flex-wrap: wrap;
528
+ gap: 6px;
529
+ margin-top: 12px;
530
+ }
531
+
532
+ .tag {
533
+ background: #f3f4f6;
534
+ color: #374151;
535
+ padding: 4px 8px;
536
+ border-radius: 4px;
537
+ font-size: 12px;
538
+ font-weight: 500;
539
+ }
540
+
541
+ .theme-dark .tag {
542
+ background: #4b5563;
543
+ color: #d1d5db;
544
+ }
545
+
546
+ /* Empty State */
547
+ .no-tools {
548
+ grid-column: 1 / -1;
549
+ text-align: center;
550
+ padding: 48px 24px;
551
+ }
552
+
553
+ .empty-state {
554
+ max-width: 400px;
555
+ margin: 0 auto;
556
+ }
557
+
558
+ .empty-icon {
559
+ font-size: 48px;
560
+ margin-bottom: 16px;
561
+ }
562
+
563
+ .empty-state h3 {
564
+ font-size: 18px;
565
+ font-weight: 600;
566
+ margin: 0 0 8px 0;
567
+ color: #374151;
568
+ }
569
+
570
+ .theme-dark .empty-state h3 {
571
+ color: #f9fafb;
572
+ }
573
+
574
+ .empty-state p {
575
+ font-size: 14px;
576
+ color: #6b7280;
577
+ margin: 0 0 16px 0;
578
+ }
579
+
580
+ .theme-dark .empty-state p {
581
+ color: #9ca3af;
582
+ }
583
+
584
+ .clear-filters-btn {
585
+ background: #2563eb;
586
+ color: white;
587
+ border: none;
588
+ padding: 8px 16px;
589
+ border-radius: 6px;
590
+ font-size: 14px;
591
+ cursor: pointer;
592
+ transition: background 0.2s ease;
593
+ }
594
+
595
+ .clear-filters-btn:hover {
596
+ background: #1d4ed8;
597
+ }
598
+
599
+ /* Load More */
600
+ .load-more-section {
601
+ text-align: center;
602
+ margin-top: 24px;
603
+ }
604
+
605
+ .load-more-btn {
606
+ background: #f3f4f6;
607
+ color: #374151;
608
+ border: 1px solid #d1d5db;
609
+ padding: 12px 24px;
610
+ border-radius: 8px;
611
+ font-size: 14px;
612
+ font-weight: 500;
613
+ cursor: pointer;
614
+ transition: all 0.2s ease;
615
+ }
616
+
617
+ .theme-dark .load-more-btn {
618
+ background: #4b5563;
619
+ color: #d1d5db;
620
+ border-color: #6b7280;
621
+ }
622
+
623
+ .load-more-btn:hover {
624
+ background: #e5e7eb;
625
+ border-color: #9ca3af;
626
+ }
627
+
628
+ .theme-dark .load-more-btn:hover {
629
+ background: #6b7280;
630
+ border-color: #9ca3af;
631
+ }
632
+
633
+ /* Configured Tools Section */
634
+ .configured-tools h3 {
635
+ font-size: 20px;
636
+ font-weight: 600;
637
+ margin: 0 0 16px 0;
638
+ color: #111827;
639
+ }
640
+
641
+ .theme-dark .configured-tools h3 {
642
+ color: #f9fafb;
643
+ }
644
+
645
+ /* Responsive Design */
646
+ @media (max-width: 768px) {
647
+ .tools-tabs {
648
+ flex-direction: column;
649
+ }
650
+
651
+ .tools-tabs .tab {
652
+ border-bottom: 1px solid #e5e7eb;
653
+ border-right: none;
654
+ }
655
+
656
+ .theme-dark .tools-tabs .tab {
657
+ border-bottom-color: #374151;
658
+ }
659
+
660
+ .tool-filters {
661
+ flex-direction: column;
662
+ }
663
+
664
+ .filter-controls {
665
+ flex-direction: column;
666
+ }
667
+
668
+ .tools-grid {
669
+ grid-template-columns: 1fr;
670
+ }
671
+
672
+ .tool-header {
673
+ flex-direction: column;
674
+ align-items: flex-start;
675
+ }
676
+
677
+ .action-buttons {
678
+ flex-direction: column;
679
+ }
680
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "4.0.2",
3
+ "version": "4.0.4",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",