@trops/dash-core 0.1.131 → 0.1.133
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/electron/index.js +1485 -1345
- package/dist/electron/index.js.map +1 -1
- package/dist/index.esm.js +1613 -393
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1613 -393
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -3603,6 +3603,36 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3603
3603
|
children: tag
|
|
3604
3604
|
}, tag);
|
|
3605
3605
|
})
|
|
3606
|
+
}), pkg.theme && /*#__PURE__*/jsxs("div", {
|
|
3607
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3608
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
3609
|
+
children: "INCLUDES THEME"
|
|
3610
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3611
|
+
className: "p-3 rounded ".concat(currentTheme["bg-primary-medium"], " flex items-center gap-3"),
|
|
3612
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3613
|
+
icon: "palette",
|
|
3614
|
+
className: "h-4 w-4 opacity-60"
|
|
3615
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3616
|
+
className: "flex-1",
|
|
3617
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3618
|
+
className: "text-sm font-medium",
|
|
3619
|
+
children: pkg.theme.name || pkg.theme.key || "Bundled Theme"
|
|
3620
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3621
|
+
className: "text-xs opacity-40 ml-2",
|
|
3622
|
+
children: "Will be auto-installed"
|
|
3623
|
+
})]
|
|
3624
|
+
}), pkg.theme.colors && /*#__PURE__*/jsx("div", {
|
|
3625
|
+
className: "flex items-center gap-1",
|
|
3626
|
+
children: [pkg.theme.colors.primary, pkg.theme.colors.secondary, pkg.theme.colors.tertiary].filter(Boolean).map(function (color, i) {
|
|
3627
|
+
return /*#__PURE__*/jsx("div", {
|
|
3628
|
+
className: "h-4 w-4 rounded-full border border-white/20",
|
|
3629
|
+
style: {
|
|
3630
|
+
backgroundColor: color
|
|
3631
|
+
}
|
|
3632
|
+
}, i);
|
|
3633
|
+
})
|
|
3634
|
+
})]
|
|
3635
|
+
})]
|
|
3606
3636
|
}), /*#__PURE__*/jsxs("div", {
|
|
3607
3637
|
children: [/*#__PURE__*/jsx("span", {
|
|
3608
3638
|
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
@@ -36148,368 +36178,1511 @@ var ProvidersSection = function ProvidersSection(_ref) {
|
|
|
36148
36178
|
});
|
|
36149
36179
|
};
|
|
36150
36180
|
|
|
36151
|
-
var
|
|
36152
|
-
|
|
36153
|
-
// --- Color Swatch Grid ---
|
|
36154
|
-
|
|
36155
|
-
var SwatchCell = function SwatchCell(_ref) {
|
|
36156
|
-
var tokenKey = _ref.tokenKey,
|
|
36157
|
-
resolvedClass = _ref.resolvedClass,
|
|
36158
|
-
type = _ref.type;
|
|
36159
|
-
var tooltip = "".concat(tokenKey, " \u2192 ").concat(resolvedClass || "(none)");
|
|
36160
|
-
if (type === "bg") {
|
|
36161
|
-
return /*#__PURE__*/jsx("div", {
|
|
36162
|
-
className: "h-8 flex-1 rounded ".concat(resolvedClass || ""),
|
|
36163
|
-
title: tooltip
|
|
36164
|
-
});
|
|
36165
|
-
}
|
|
36166
|
-
if (type === "text") {
|
|
36167
|
-
return /*#__PURE__*/jsx("div", {
|
|
36168
|
-
className: "h-8 flex-1 rounded flex items-center justify-center bg-black/10",
|
|
36169
|
-
title: tooltip,
|
|
36170
|
-
children: /*#__PURE__*/jsx("span", {
|
|
36171
|
-
className: "text-xs font-bold ".concat(resolvedClass || ""),
|
|
36172
|
-
children: "Aa"
|
|
36173
|
-
})
|
|
36174
|
-
});
|
|
36175
|
-
}
|
|
36176
|
-
|
|
36177
|
-
// border
|
|
36178
|
-
return /*#__PURE__*/jsx("div", {
|
|
36179
|
-
className: "h-8 flex-1 rounded border-2 ".concat(resolvedClass || ""),
|
|
36180
|
-
title: tooltip
|
|
36181
|
-
});
|
|
36182
|
-
};
|
|
36183
|
-
var ColorSwatchGrid = function ColorSwatchGrid(_ref2) {
|
|
36184
|
-
var displayTheme = _ref2.displayTheme;
|
|
36185
|
-
return /*#__PURE__*/jsx("div", {
|
|
36186
|
-
className: "flex flex-col space-y-5",
|
|
36187
|
-
children: colorTypes.map(function (family) {
|
|
36188
|
-
return /*#__PURE__*/jsxs("div", {
|
|
36189
|
-
className: "flex flex-col space-y-2",
|
|
36190
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
36191
|
-
className: "text-xs font-semibold opacity-50 capitalize",
|
|
36192
|
-
children: family
|
|
36193
|
-
}), TOKEN_TYPES.map(function (type) {
|
|
36194
|
-
return /*#__PURE__*/jsxs("div", {
|
|
36195
|
-
className: "flex flex-row items-center gap-2",
|
|
36196
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
36197
|
-
className: "text-[10px] opacity-40 w-10 text-right shrink-0",
|
|
36198
|
-
children: type
|
|
36199
|
-
}), /*#__PURE__*/jsx("div", {
|
|
36200
|
-
className: "flex flex-row gap-1.5 flex-1",
|
|
36201
|
-
children: themeVariants.map(function (shade) {
|
|
36202
|
-
var tokenKey = "".concat(type, "-").concat(family, "-").concat(shade);
|
|
36203
|
-
var resolvedClass = displayTheme[tokenKey] || "";
|
|
36204
|
-
return /*#__PURE__*/jsx(SwatchCell, {
|
|
36205
|
-
tokenKey: tokenKey,
|
|
36206
|
-
resolvedClass: resolvedClass,
|
|
36207
|
-
type: type
|
|
36208
|
-
}, shade);
|
|
36209
|
-
})
|
|
36210
|
-
})]
|
|
36211
|
-
}, type);
|
|
36212
|
-
})]
|
|
36213
|
-
}, family);
|
|
36214
|
-
})
|
|
36215
|
-
});
|
|
36216
|
-
};
|
|
36217
|
-
|
|
36218
|
-
// --- Component Style Accordion ---
|
|
36219
|
-
|
|
36220
|
-
var COLOR_KEYS = ["backgroundColor", "textColor", "borderColor", "hoverBackgroundColor", "hoverTextColor", "hoverBorderColor", "activeBackgroundColor", "activeTextColor", "focusRingColor", "focusBorderColor"];
|
|
36221
|
-
var NON_COLOR_KEYS = ["shadow", "borderRadius", "spacing", "textSize", "iconSize", "fontWeight", "transition", "cursor", "disabledOpacity", "letterSpacing", "lineHeight"];
|
|
36222
|
-
var COMPONENT_GROUPS = [{
|
|
36223
|
-
label: "Buttons",
|
|
36224
|
-
keys: ["BUTTON", "BUTTON_2", "BUTTON_3", "BUTTON_ICON", "BUTTON_ICON_2", "BUTTON_ICON_3"]
|
|
36225
|
-
}, {
|
|
36226
|
-
label: "Panels",
|
|
36227
|
-
keys: ["PANEL", "PANEL_2", "PANEL_3", "PANEL_HEADER", "PANEL_HEADER_2", "PANEL_HEADER_3", "PANEL_FOOTER", "PANEL_FOOTER_2", "PANEL_FOOTER_3", "DASH_PANEL", "DASH_PANEL_2", "DASH_PANEL_3", "DASH_PANEL_HEADER", "DASH_PANEL_HEADER_2", "DASH_PANEL_HEADER_3", "DASH_PANEL_FOOTER", "DASH_PANEL_FOOTER_2", "DASH_PANEL_FOOTER_3"]
|
|
36228
|
-
}, {
|
|
36229
|
-
label: "Cards",
|
|
36230
|
-
keys: ["CARD", "CARD_2", "CARD_3", "STAT_CARD", "STAT_CARD_LABEL", "STAT_CARD_VALUE", "STAT_CARD_CHANGE"]
|
|
36231
|
-
}, {
|
|
36232
|
-
label: "Typography",
|
|
36233
|
-
keys: ["HEADING", "HEADING_2", "HEADING_3", "SUBHEADING", "SUBHEADING_2", "SUBHEADING_3", "PARAGRAPH", "PARAGRAPH_2", "PARAGRAPH_3"]
|
|
36234
|
-
}, {
|
|
36235
|
-
label: "Navigation",
|
|
36236
|
-
keys: ["MENU_ITEM", "MENU_ITEM_2", "MENU_ITEM_3", "TABS", "TABS_2", "TABS_3", "TABS_LIST", "TABS_LIST_2", "TABS_LIST_3", "TABS_TRIGGER", "TABS_TRIGGER_2", "TABS_TRIGGER_3", "TABS_CONTENT", "TABS_CONTENT_2", "TABS_CONTENT_3", "SIDEBAR", "SIDEBAR_ITEM", "NAVBAR", "TABBED_NAVBAR", "BREADCRUMBS", "BREADCRUMBS_2", "BREADCRUMBS_3"]
|
|
36237
|
-
}, {
|
|
36238
|
-
label: "Forms",
|
|
36239
|
-
keys: ["INPUT_TEXT", "SELECT_MENU", "TEXTAREA", "CHECKBOX", "RADIO", "SWITCH", "SLIDER", "SEARCH_INPUT", "TOGGLE", "TOGGLE_2", "TOGGLE_3", "FORM_LABEL"]
|
|
36240
|
-
}, {
|
|
36241
|
-
label: "Feedback",
|
|
36242
|
-
keys: ["ALERT", "ALERT_2", "ALERT_3", "ALERT_BANNER", "TOAST", "TOAST_2", "TOAST_3", "PROGRESS_BAR", "PROGRESS_BAR_2", "PROGRESS_BAR_3", "TAG", "TAG_2", "TAG_3", "TOOLTIP", "EMPTY_STATE"]
|
|
36243
|
-
}, {
|
|
36244
|
-
label: "Tables",
|
|
36245
|
-
keys: ["TABLE", "TABLE_2", "TABLE_3", "DATA_LIST", "DATA_LIST_ITEM"]
|
|
36246
|
-
}, {
|
|
36247
|
-
label: "Advanced",
|
|
36248
|
-
keys: ["ACCORDION", "ACCORDION_2", "ACCORDION_3", "ACCORDION_ITEM", "ACCORDION_ITEM_2", "ACCORDION_ITEM_3", "ACCORDION_TRIGGER", "ACCORDION_TRIGGER_2", "ACCORDION_TRIGGER_3", "ACCORDION_CONTENT", "ACCORDION_CONTENT_2", "ACCORDION_CONTENT_3", "COMMAND_PALETTE", "COMMAND_PALETTE_INPUT", "COMMAND_PALETTE_ITEM", "DRAWER", "DRAWER_HEADER", "DRAWER_FOOTER", "STEPPER", "STEPPER_STEP", "STEPPER_CONNECTOR", "SKELETON", "CODE_EDITOR"]
|
|
36249
|
-
}, {
|
|
36250
|
-
label: "Layout",
|
|
36251
|
-
keys: ["WIDGET_CHROME", "WIDGET", "WORKSPACE", "LAYOUT_CONTAINER", "DASHBOARD_FOOTER", "DASHBOARD_FOOTER_2", "DASHBOARD_FOOTER_3", "SETTINGS_MODAL_SIDEBAR", "SETTINGS_MODAL_FOOTER"]
|
|
36252
|
-
}];
|
|
36253
|
-
var ComponentStyleRow = function ComponentStyleRow(_ref3) {
|
|
36254
|
-
var objectKey = _ref3.objectKey,
|
|
36255
|
-
styles = _ref3.styles;
|
|
36256
|
-
if (!styles) return null;
|
|
36257
|
-
var colorEntries = COLOR_KEYS.filter(function (k) {
|
|
36258
|
-
return styles[k];
|
|
36259
|
-
}).map(function (k) {
|
|
36260
|
-
return {
|
|
36261
|
-
key: k,
|
|
36262
|
-
value: styles[k]
|
|
36263
|
-
};
|
|
36264
|
-
});
|
|
36265
|
-
var nonColorEntries = NON_COLOR_KEYS.filter(function (k) {
|
|
36266
|
-
return styles[k];
|
|
36267
|
-
}).map(function (k) {
|
|
36268
|
-
return {
|
|
36269
|
-
key: k,
|
|
36270
|
-
value: styles[k]
|
|
36271
|
-
};
|
|
36272
|
-
});
|
|
36273
|
-
return /*#__PURE__*/jsxs("div", {
|
|
36274
|
-
className: "flex flex-row items-center gap-3 py-1.5",
|
|
36275
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
36276
|
-
className: "text-[11px] font-mono opacity-70 w-40 shrink-0 truncate",
|
|
36277
|
-
children: objectKey
|
|
36278
|
-
}), /*#__PURE__*/jsx("div", {
|
|
36279
|
-
className: "flex flex-row items-center gap-1",
|
|
36280
|
-
children: colorEntries.map(function (_ref4) {
|
|
36281
|
-
var key = _ref4.key,
|
|
36282
|
-
value = _ref4.value;
|
|
36283
|
-
if (key.toLowerCase().includes("text")) {
|
|
36284
|
-
return /*#__PURE__*/jsx("div", {
|
|
36285
|
-
className: "h-5 w-5 rounded-sm flex items-center justify-center bg-black/10",
|
|
36286
|
-
title: "".concat(key, ": ").concat(value),
|
|
36287
|
-
children: /*#__PURE__*/jsx("span", {
|
|
36288
|
-
className: "text-[8px] font-bold ".concat(value),
|
|
36289
|
-
children: "Aa"
|
|
36290
|
-
})
|
|
36291
|
-
}, key);
|
|
36292
|
-
}
|
|
36293
|
-
if (key.toLowerCase().includes("border")) {
|
|
36294
|
-
return /*#__PURE__*/jsx("div", {
|
|
36295
|
-
className: "h-5 w-5 rounded-sm border-2 ".concat(value),
|
|
36296
|
-
title: "".concat(key, ": ").concat(value)
|
|
36297
|
-
}, key);
|
|
36298
|
-
}
|
|
36299
|
-
return /*#__PURE__*/jsx("div", {
|
|
36300
|
-
className: "h-5 w-5 rounded-sm ".concat(value),
|
|
36301
|
-
title: "".concat(key, ": ").concat(value)
|
|
36302
|
-
}, key);
|
|
36303
|
-
})
|
|
36304
|
-
}), /*#__PURE__*/jsx("div", {
|
|
36305
|
-
className: "flex flex-row items-center gap-2 flex-1 overflow-hidden",
|
|
36306
|
-
children: nonColorEntries.map(function (_ref5) {
|
|
36307
|
-
var key = _ref5.key,
|
|
36308
|
-
value = _ref5.value;
|
|
36309
|
-
return /*#__PURE__*/jsx("span", {
|
|
36310
|
-
className: "text-[10px] opacity-40 whitespace-nowrap",
|
|
36311
|
-
title: key,
|
|
36312
|
-
children: value
|
|
36313
|
-
}, key);
|
|
36314
|
-
})
|
|
36315
|
-
})]
|
|
36316
|
-
});
|
|
36317
|
-
};
|
|
36318
|
-
|
|
36319
|
-
// --- Main Component ---
|
|
36320
|
-
|
|
36321
|
-
var ThemeDetail = function ThemeDetail(_ref6) {
|
|
36322
|
-
var themeKey = _ref6.themeKey,
|
|
36323
|
-
themes = _ref6.themes,
|
|
36324
|
-
currentThemeKey = _ref6.currentThemeKey,
|
|
36325
|
-
themeVariant = _ref6.themeVariant,
|
|
36326
|
-
onActivate = _ref6.onActivate,
|
|
36327
|
-
onOpenThemeEditor = _ref6.onOpenThemeEditor,
|
|
36328
|
-
_ref6$onDelete = _ref6.onDelete,
|
|
36329
|
-
onDelete = _ref6$onDelete === void 0 ? null : _ref6$onDelete;
|
|
36330
|
-
var theme = themeKey && themes ? themes[themeKey] : null;
|
|
36331
|
-
var displayTheme = useMemo(function () {
|
|
36332
|
-
return theme ? theme[themeVariant] || {} : {};
|
|
36333
|
-
}, [theme, themeVariant]);
|
|
36334
|
-
var isActive = themeKey === currentThemeKey;
|
|
36335
|
-
|
|
36336
|
-
// Memoize all component styles
|
|
36337
|
-
var allStyles = useMemo(function () {
|
|
36338
|
-
var result = {};
|
|
36339
|
-
Object.values(themeObjects).forEach(function (key) {
|
|
36340
|
-
result[key] = getStylesForItem(key, displayTheme, {});
|
|
36341
|
-
});
|
|
36342
|
-
return result;
|
|
36343
|
-
}, [displayTheme]);
|
|
36344
|
-
if (!theme) return null;
|
|
36345
|
-
return /*#__PURE__*/jsxs("div", {
|
|
36346
|
-
className: "flex flex-col flex-1 min-h-0",
|
|
36347
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
36348
|
-
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6",
|
|
36349
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
36350
|
-
className: "flex flex-row items-center gap-3",
|
|
36351
|
-
children: [/*#__PURE__*/jsx(SubHeading, {
|
|
36352
|
-
title: theme.name || themeKey,
|
|
36353
|
-
padding: false
|
|
36354
|
-
}), isActive && /*#__PURE__*/jsx("span", {
|
|
36355
|
-
className: "text-xs opacity-40",
|
|
36356
|
-
children: "active"
|
|
36357
|
-
})]
|
|
36358
|
-
}), /*#__PURE__*/jsx(ColorSwatchGrid, {
|
|
36359
|
-
displayTheme: displayTheme
|
|
36360
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
36361
|
-
className: "flex flex-col space-y-2",
|
|
36362
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
36363
|
-
className: "text-xs font-semibold opacity-50",
|
|
36364
|
-
children: "Component Styles"
|
|
36365
|
-
}), /*#__PURE__*/jsx(Accordion2, {
|
|
36366
|
-
type: "multiple",
|
|
36367
|
-
children: COMPONENT_GROUPS.map(function (group) {
|
|
36368
|
-
// Only show groups that have valid theme objects
|
|
36369
|
-
var validKeys = group.keys.filter(function (k) {
|
|
36370
|
-
return themeObjects[k];
|
|
36371
|
-
});
|
|
36372
|
-
if (validKeys.length === 0) return null;
|
|
36373
|
-
return /*#__PURE__*/jsxs(Accordion2.Item, {
|
|
36374
|
-
value: group.label,
|
|
36375
|
-
children: [/*#__PURE__*/jsxs(Accordion2.Trigger, {
|
|
36376
|
-
value: group.label,
|
|
36377
|
-
children: [group.label, " (", validKeys.length, ")"]
|
|
36378
|
-
}), /*#__PURE__*/jsx(Accordion2.Content, {
|
|
36379
|
-
value: group.label,
|
|
36380
|
-
children: /*#__PURE__*/jsx("div", {
|
|
36381
|
-
className: "flex flex-col",
|
|
36382
|
-
children: validKeys.map(function (k) {
|
|
36383
|
-
var objectValue = themeObjects[k];
|
|
36384
|
-
return /*#__PURE__*/jsx(ComponentStyleRow, {
|
|
36385
|
-
objectKey: objectValue,
|
|
36386
|
-
styles: allStyles[objectValue]
|
|
36387
|
-
}, k);
|
|
36388
|
-
})
|
|
36389
|
-
})
|
|
36390
|
-
})]
|
|
36391
|
-
}, group.label);
|
|
36392
|
-
})
|
|
36393
|
-
})]
|
|
36394
|
-
})]
|
|
36395
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
36396
|
-
className: "flex-shrink-0 flex flex-row justify-between px-6 py-4 border-t border-white/10",
|
|
36397
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
36398
|
-
children: !isActive && onDelete && /*#__PURE__*/jsx(Button, {
|
|
36399
|
-
title: "Delete",
|
|
36400
|
-
onClick: function onClick() {
|
|
36401
|
-
return onDelete(themeKey);
|
|
36402
|
-
},
|
|
36403
|
-
size: "sm"
|
|
36404
|
-
})
|
|
36405
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
36406
|
-
className: "flex flex-row gap-2",
|
|
36407
|
-
children: [!isActive && /*#__PURE__*/jsx(Button, {
|
|
36408
|
-
title: "Activate",
|
|
36409
|
-
onClick: function onClick() {
|
|
36410
|
-
return onActivate(themeKey);
|
|
36411
|
-
},
|
|
36412
|
-
size: "sm"
|
|
36413
|
-
}), /*#__PURE__*/jsx(Button, {
|
|
36414
|
-
title: "Edit",
|
|
36415
|
-
onClick: onOpenThemeEditor,
|
|
36416
|
-
size: "sm"
|
|
36417
|
-
})]
|
|
36418
|
-
})]
|
|
36419
|
-
})]
|
|
36420
|
-
});
|
|
36421
|
-
};
|
|
36181
|
+
var THEME_TAGS = ["dark", "light", "colorful", "minimal", "professional", "vibrant", "pastel", "high-contrast", "warm", "cool"];
|
|
36422
36182
|
|
|
36423
|
-
|
|
36424
|
-
|
|
36425
|
-
|
|
36426
|
-
|
|
36427
|
-
|
|
36428
|
-
|
|
36429
|
-
|
|
36430
|
-
|
|
36431
|
-
|
|
36432
|
-
|
|
36433
|
-
|
|
36434
|
-
|
|
36435
|
-
|
|
36183
|
+
/**
|
|
36184
|
+
* PublishThemeModal — multi-step stepper for publishing a theme
|
|
36185
|
+
* to the Dash Registry.
|
|
36186
|
+
*
|
|
36187
|
+
* Steps:
|
|
36188
|
+
* 0. Account — Auth check, sign-in prompt, profile display
|
|
36189
|
+
* 1. Details — Author name (pre-filled from profile) + description
|
|
36190
|
+
* 2. Tags — Predefined theme tag selection
|
|
36191
|
+
* 3. Publish — Review summary with color swatches, publish action
|
|
36192
|
+
*/
|
|
36193
|
+
var PublishThemeModal = function PublishThemeModal(_ref) {
|
|
36194
|
+
var _result$registryResul, _result$registryResul2;
|
|
36195
|
+
var isOpen = _ref.isOpen,
|
|
36196
|
+
setIsOpen = _ref.setIsOpen,
|
|
36197
|
+
appId = _ref.appId,
|
|
36198
|
+
themeKey = _ref.themeKey,
|
|
36199
|
+
themeName = _ref.themeName;
|
|
36436
36200
|
var _useContext = useContext(ThemeContext),
|
|
36437
|
-
themes = _useContext.themes,
|
|
36438
|
-
currentThemeKey = _useContext.themeKey,
|
|
36439
|
-
themeVariant = _useContext.themeVariant,
|
|
36440
|
-
changeCurrentTheme = _useContext.changeCurrentTheme,
|
|
36441
|
-
changeThemeVariant = _useContext.changeThemeVariant,
|
|
36442
|
-
changeThemesForApplication = _useContext.changeThemesForApplication,
|
|
36443
36201
|
currentTheme = _useContext.currentTheme;
|
|
36444
|
-
var
|
|
36202
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
36203
|
+
grow: false
|
|
36204
|
+
});
|
|
36205
|
+
|
|
36206
|
+
// Stepper state
|
|
36207
|
+
var _useState = useState(0),
|
|
36445
36208
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36446
|
-
|
|
36447
|
-
|
|
36448
|
-
|
|
36209
|
+
step = _useState2[0],
|
|
36210
|
+
setStep = _useState2[1];
|
|
36211
|
+
|
|
36212
|
+
// Step 0: Account / Auth
|
|
36213
|
+
var _useState3 = useState("loading"),
|
|
36449
36214
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
36450
|
-
|
|
36451
|
-
|
|
36452
|
-
var _useState5 = useState(
|
|
36215
|
+
authStatus = _useState4[0],
|
|
36216
|
+
setAuthStatus = _useState4[1];
|
|
36217
|
+
var _useState5 = useState(null),
|
|
36453
36218
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
36454
|
-
|
|
36455
|
-
|
|
36219
|
+
profile = _useState6[0],
|
|
36220
|
+
setProfile = _useState6[1];
|
|
36456
36221
|
var _useState7 = useState(null),
|
|
36457
36222
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
36458
|
-
|
|
36459
|
-
|
|
36460
|
-
var _useState9 = useState(
|
|
36223
|
+
authFlow = _useState8[0],
|
|
36224
|
+
setAuthFlow = _useState8[1];
|
|
36225
|
+
var _useState9 = useState(false),
|
|
36461
36226
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
36462
|
-
|
|
36463
|
-
|
|
36464
|
-
var
|
|
36465
|
-
|
|
36227
|
+
isPolling = _useState0[0],
|
|
36228
|
+
setIsPolling = _useState0[1];
|
|
36229
|
+
var _useState1 = useState(null),
|
|
36230
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
36231
|
+
authError = _useState10[0],
|
|
36232
|
+
setAuthError = _useState10[1];
|
|
36466
36233
|
|
|
36467
|
-
//
|
|
36234
|
+
// Step 1: Details
|
|
36235
|
+
var _useState11 = useState(""),
|
|
36236
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
36237
|
+
authorName = _useState12[0],
|
|
36238
|
+
setAuthorName = _useState12[1];
|
|
36239
|
+
var _useState13 = useState(""),
|
|
36240
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
36241
|
+
description = _useState14[0],
|
|
36242
|
+
setDescription = _useState14[1];
|
|
36243
|
+
|
|
36244
|
+
// Step 2: Tags
|
|
36245
|
+
var _useState15 = useState([]),
|
|
36246
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
36247
|
+
selectedTags = _useState16[0],
|
|
36248
|
+
setSelectedTags = _useState16[1];
|
|
36249
|
+
|
|
36250
|
+
// Publish preview (colors)
|
|
36251
|
+
var _useState17 = useState(null),
|
|
36252
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
36253
|
+
preview = _useState18[0],
|
|
36254
|
+
setPreview = _useState18[1];
|
|
36255
|
+
|
|
36256
|
+
// Step 3: Publish
|
|
36257
|
+
var _useState19 = useState(false),
|
|
36258
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
36259
|
+
isPublishing = _useState20[0],
|
|
36260
|
+
setIsPublishing = _useState20[1];
|
|
36261
|
+
var _useState21 = useState(null),
|
|
36262
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
36263
|
+
result = _useState22[0],
|
|
36264
|
+
setResult = _useState22[1];
|
|
36265
|
+
|
|
36266
|
+
// Fetch publish preview on open
|
|
36468
36267
|
useEffect(function () {
|
|
36469
|
-
if (
|
|
36470
|
-
|
|
36471
|
-
|
|
36472
|
-
|
|
36473
|
-
|
|
36474
|
-
|
|
36475
|
-
|
|
36268
|
+
if (!isOpen || !appId || !themeKey) return;
|
|
36269
|
+
window.mainApi.themes.getThemePublishPreview(appId, themeKey).then(function (res) {
|
|
36270
|
+
if (res.success) setPreview(res);
|
|
36271
|
+
})["catch"](console.error);
|
|
36272
|
+
}, [isOpen, appId, themeKey]);
|
|
36273
|
+
|
|
36274
|
+
// Check auth status on mount
|
|
36275
|
+
useEffect(function () {
|
|
36276
|
+
if (!isOpen) return;
|
|
36277
|
+
var cancelled = false;
|
|
36278
|
+
function checkAuth() {
|
|
36279
|
+
return _checkAuth.apply(this, arguments);
|
|
36476
36280
|
}
|
|
36477
|
-
|
|
36478
|
-
|
|
36479
|
-
|
|
36480
|
-
|
|
36481
|
-
|
|
36482
|
-
|
|
36483
|
-
|
|
36484
|
-
|
|
36281
|
+
function _checkAuth() {
|
|
36282
|
+
_checkAuth = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
36283
|
+
var status, userProfile;
|
|
36284
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
36285
|
+
while (1) switch (_context.prev = _context.next) {
|
|
36286
|
+
case 0:
|
|
36287
|
+
_context.prev = 0;
|
|
36288
|
+
_context.next = 1;
|
|
36289
|
+
return window.mainApi.registryAuth.getStatus();
|
|
36290
|
+
case 1:
|
|
36291
|
+
status = _context.sent;
|
|
36292
|
+
if (!cancelled) {
|
|
36293
|
+
_context.next = 2;
|
|
36294
|
+
break;
|
|
36295
|
+
}
|
|
36296
|
+
return _context.abrupt("return");
|
|
36297
|
+
case 2:
|
|
36298
|
+
if (!status.authenticated) {
|
|
36299
|
+
_context.next = 5;
|
|
36300
|
+
break;
|
|
36301
|
+
}
|
|
36302
|
+
_context.next = 3;
|
|
36303
|
+
return window.mainApi.registryAuth.getProfile();
|
|
36304
|
+
case 3:
|
|
36305
|
+
userProfile = _context.sent;
|
|
36306
|
+
if (!cancelled) {
|
|
36307
|
+
_context.next = 4;
|
|
36308
|
+
break;
|
|
36309
|
+
}
|
|
36310
|
+
return _context.abrupt("return");
|
|
36311
|
+
case 4:
|
|
36312
|
+
if (userProfile) {
|
|
36313
|
+
setProfile(userProfile);
|
|
36314
|
+
setAuthStatus("authenticated");
|
|
36315
|
+
setAuthorName(userProfile.displayName || userProfile.username || "");
|
|
36316
|
+
} else {
|
|
36317
|
+
setAuthStatus("unauthenticated");
|
|
36318
|
+
}
|
|
36319
|
+
_context.next = 6;
|
|
36320
|
+
break;
|
|
36321
|
+
case 5:
|
|
36322
|
+
setAuthStatus("unauthenticated");
|
|
36323
|
+
case 6:
|
|
36324
|
+
_context.next = 8;
|
|
36325
|
+
break;
|
|
36326
|
+
case 7:
|
|
36327
|
+
_context.prev = 7;
|
|
36328
|
+
_context["catch"](0);
|
|
36329
|
+
if (!cancelled) setAuthStatus("unauthenticated");
|
|
36330
|
+
case 8:
|
|
36331
|
+
case "end":
|
|
36332
|
+
return _context.stop();
|
|
36333
|
+
}
|
|
36334
|
+
}, _callee, null, [[0, 7]]);
|
|
36335
|
+
}));
|
|
36336
|
+
return _checkAuth.apply(this, arguments);
|
|
36337
|
+
}
|
|
36338
|
+
checkAuth();
|
|
36339
|
+
return function () {
|
|
36340
|
+
cancelled = true;
|
|
36341
|
+
};
|
|
36342
|
+
}, [isOpen]);
|
|
36343
|
+
function resetState() {
|
|
36344
|
+
setStep(0);
|
|
36345
|
+
setAuthStatus("loading");
|
|
36346
|
+
setProfile(null);
|
|
36347
|
+
setAuthFlow(null);
|
|
36348
|
+
setIsPolling(false);
|
|
36349
|
+
setAuthError(null);
|
|
36350
|
+
setAuthorName("");
|
|
36351
|
+
setDescription("");
|
|
36352
|
+
setSelectedTags([]);
|
|
36353
|
+
setPreview(null);
|
|
36354
|
+
setIsPublishing(false);
|
|
36355
|
+
setResult(null);
|
|
36485
36356
|
}
|
|
36486
|
-
function
|
|
36487
|
-
|
|
36488
|
-
|
|
36489
|
-
saveAndSelectTheme(key, theme);
|
|
36490
|
-
setGenerateMode(GENERATE_MODES.NONE);
|
|
36357
|
+
function handleClose() {
|
|
36358
|
+
setIsOpen(false);
|
|
36359
|
+
setTimeout(resetState, 200);
|
|
36491
36360
|
}
|
|
36492
|
-
function
|
|
36493
|
-
if (
|
|
36494
|
-
if (
|
|
36495
|
-
|
|
36496
|
-
|
|
36497
|
-
id: key,
|
|
36498
|
-
name: wizardName.trim()
|
|
36499
|
-
});
|
|
36500
|
-
saveAndSelectTheme(key, finalTheme);
|
|
36361
|
+
function handleStepChange(nextStep) {
|
|
36362
|
+
if (step === 0 && nextStep > 0 && authStatus !== "authenticated") return;
|
|
36363
|
+
if (step === 1 && nextStep > 1 && !authorName.trim()) return;
|
|
36364
|
+
if (step === 2 && nextStep > 2 && selectedTags.length === 0) return;
|
|
36365
|
+
setStep(nextStep);
|
|
36501
36366
|
}
|
|
36502
|
-
function
|
|
36503
|
-
|
|
36504
|
-
|
|
36505
|
-
|
|
36506
|
-
}
|
|
36507
|
-
setSelectedThemeKey(key);
|
|
36508
|
-
setGenerateMode(GENERATE_MODES.NONE);
|
|
36509
|
-
}, function (e, err) {
|
|
36367
|
+
function toggleTag(tag) {
|
|
36368
|
+
setSelectedTags(function (prev) {
|
|
36369
|
+
return prev.includes(tag) ? prev.filter(function (t) {
|
|
36370
|
+
return t !== tag;
|
|
36371
|
+
}) : [].concat(_toConsumableArray(prev), [tag]);
|
|
36510
36372
|
});
|
|
36511
36373
|
}
|
|
36512
|
-
function
|
|
36374
|
+
function handlePublish() {
|
|
36375
|
+
return _handlePublish.apply(this, arguments);
|
|
36376
|
+
}
|
|
36377
|
+
function _handlePublish() {
|
|
36378
|
+
_handlePublish = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
36379
|
+
var options, res, _t2;
|
|
36380
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
36381
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
36382
|
+
case 0:
|
|
36383
|
+
if (!(!appId || !themeKey)) {
|
|
36384
|
+
_context2.next = 1;
|
|
36385
|
+
break;
|
|
36386
|
+
}
|
|
36387
|
+
return _context2.abrupt("return");
|
|
36388
|
+
case 1:
|
|
36389
|
+
setIsPublishing(true);
|
|
36390
|
+
setResult(null);
|
|
36391
|
+
_context2.prev = 2;
|
|
36392
|
+
options = {
|
|
36393
|
+
authorName: authorName.trim(),
|
|
36394
|
+
description: description.trim() || undefined,
|
|
36395
|
+
tags: selectedTags
|
|
36396
|
+
};
|
|
36397
|
+
_context2.next = 3;
|
|
36398
|
+
return window.mainApi.themes.publishTheme(appId, themeKey, options);
|
|
36399
|
+
case 3:
|
|
36400
|
+
res = _context2.sent;
|
|
36401
|
+
setResult(res);
|
|
36402
|
+
_context2.next = 5;
|
|
36403
|
+
break;
|
|
36404
|
+
case 4:
|
|
36405
|
+
_context2.prev = 4;
|
|
36406
|
+
_t2 = _context2["catch"](2);
|
|
36407
|
+
setResult({
|
|
36408
|
+
success: false,
|
|
36409
|
+
error: _t2.message || "Failed to prepare theme for publish."
|
|
36410
|
+
});
|
|
36411
|
+
case 5:
|
|
36412
|
+
_context2.prev = 5;
|
|
36413
|
+
setIsPublishing(false);
|
|
36414
|
+
return _context2.finish(5);
|
|
36415
|
+
case 6:
|
|
36416
|
+
case "end":
|
|
36417
|
+
return _context2.stop();
|
|
36418
|
+
}
|
|
36419
|
+
}, _callee2, null, [[2, 4, 5, 6]]);
|
|
36420
|
+
}));
|
|
36421
|
+
return _handlePublish.apply(this, arguments);
|
|
36422
|
+
}
|
|
36423
|
+
function handleSignIn() {
|
|
36424
|
+
return _handleSignIn.apply(this, arguments);
|
|
36425
|
+
}
|
|
36426
|
+
function _handleSignIn() {
|
|
36427
|
+
_handleSignIn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
36428
|
+
var flow, interval, poll;
|
|
36429
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
36430
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
36431
|
+
case 0:
|
|
36432
|
+
setAuthError(null);
|
|
36433
|
+
_context4.prev = 1;
|
|
36434
|
+
_context4.next = 2;
|
|
36435
|
+
return window.mainApi.registryAuth.initiateLogin();
|
|
36436
|
+
case 2:
|
|
36437
|
+
flow = _context4.sent;
|
|
36438
|
+
setAuthFlow(flow);
|
|
36439
|
+
if (flow.verificationUrlComplete) {
|
|
36440
|
+
window.mainApi.shell.openExternal(flow.verificationUrlComplete);
|
|
36441
|
+
}
|
|
36442
|
+
setIsPolling(true);
|
|
36443
|
+
interval = (flow.interval || 5) * 1000;
|
|
36444
|
+
poll = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
36445
|
+
var pollResult, userProfile;
|
|
36446
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
36447
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
36448
|
+
case 0:
|
|
36449
|
+
_context3.prev = 0;
|
|
36450
|
+
_context3.next = 1;
|
|
36451
|
+
return window.mainApi.registryAuth.pollToken(flow.deviceCode);
|
|
36452
|
+
case 1:
|
|
36453
|
+
pollResult = _context3.sent;
|
|
36454
|
+
if (!(pollResult.status === "authorized")) {
|
|
36455
|
+
_context3.next = 3;
|
|
36456
|
+
break;
|
|
36457
|
+
}
|
|
36458
|
+
clearInterval(poll);
|
|
36459
|
+
setIsPolling(false);
|
|
36460
|
+
setAuthFlow(null);
|
|
36461
|
+
_context3.next = 2;
|
|
36462
|
+
return window.mainApi.registryAuth.getProfile();
|
|
36463
|
+
case 2:
|
|
36464
|
+
userProfile = _context3.sent;
|
|
36465
|
+
setProfile(userProfile);
|
|
36466
|
+
setAuthStatus("authenticated");
|
|
36467
|
+
if (userProfile !== null && userProfile !== void 0 && userProfile.displayName && !authorName) {
|
|
36468
|
+
setAuthorName(userProfile.displayName);
|
|
36469
|
+
}
|
|
36470
|
+
_context3.next = 4;
|
|
36471
|
+
break;
|
|
36472
|
+
case 3:
|
|
36473
|
+
if (pollResult.status === "expired") {
|
|
36474
|
+
clearInterval(poll);
|
|
36475
|
+
setIsPolling(false);
|
|
36476
|
+
setAuthFlow(null);
|
|
36477
|
+
}
|
|
36478
|
+
case 4:
|
|
36479
|
+
_context3.next = 6;
|
|
36480
|
+
break;
|
|
36481
|
+
case 5:
|
|
36482
|
+
_context3.prev = 5;
|
|
36483
|
+
_context3["catch"](0);
|
|
36484
|
+
clearInterval(poll);
|
|
36485
|
+
setIsPolling(false);
|
|
36486
|
+
case 6:
|
|
36487
|
+
case "end":
|
|
36488
|
+
return _context3.stop();
|
|
36489
|
+
}
|
|
36490
|
+
}, _callee3, null, [[0, 5]]);
|
|
36491
|
+
})), interval);
|
|
36492
|
+
_context4.next = 4;
|
|
36493
|
+
break;
|
|
36494
|
+
case 3:
|
|
36495
|
+
_context4.prev = 3;
|
|
36496
|
+
_context4["catch"](1);
|
|
36497
|
+
setAuthError("Could not reach the registry. Check your connection and try again.");
|
|
36498
|
+
case 4:
|
|
36499
|
+
case "end":
|
|
36500
|
+
return _context4.stop();
|
|
36501
|
+
}
|
|
36502
|
+
}, _callee4, null, [[1, 3]]);
|
|
36503
|
+
}));
|
|
36504
|
+
return _handleSignIn.apply(this, arguments);
|
|
36505
|
+
}
|
|
36506
|
+
function handleSignOut() {
|
|
36507
|
+
return _handleSignOut.apply(this, arguments);
|
|
36508
|
+
}
|
|
36509
|
+
function _handleSignOut() {
|
|
36510
|
+
_handleSignOut = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
36511
|
+
return _regeneratorRuntime.wrap(function (_context5) {
|
|
36512
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
36513
|
+
case 0:
|
|
36514
|
+
_context5.prev = 0;
|
|
36515
|
+
_context5.next = 1;
|
|
36516
|
+
return window.mainApi.registryAuth.logout();
|
|
36517
|
+
case 1:
|
|
36518
|
+
setAuthStatus("unauthenticated");
|
|
36519
|
+
setProfile(null);
|
|
36520
|
+
_context5.next = 3;
|
|
36521
|
+
break;
|
|
36522
|
+
case 2:
|
|
36523
|
+
_context5.prev = 2;
|
|
36524
|
+
_context5["catch"](0);
|
|
36525
|
+
case 3:
|
|
36526
|
+
case "end":
|
|
36527
|
+
return _context5.stop();
|
|
36528
|
+
}
|
|
36529
|
+
}, _callee5, null, [[0, 2]]);
|
|
36530
|
+
}));
|
|
36531
|
+
return _handleSignOut.apply(this, arguments);
|
|
36532
|
+
}
|
|
36533
|
+
var isLastStep = step === 3;
|
|
36534
|
+
var canAdvance = step === 0 ? authStatus === "authenticated" : step === 1 ? !!authorName.trim() : step === 2 ? selectedTags.length > 0 : true;
|
|
36535
|
+
var previewColors = (preview === null || preview === void 0 ? void 0 : preview.colors) || {};
|
|
36536
|
+
var colorEntries = [{
|
|
36537
|
+
label: "Primary",
|
|
36538
|
+
value: previewColors.primary
|
|
36539
|
+
}, {
|
|
36540
|
+
label: "Secondary",
|
|
36541
|
+
value: previewColors.secondary
|
|
36542
|
+
}, {
|
|
36543
|
+
label: "Tertiary",
|
|
36544
|
+
value: previewColors.tertiary
|
|
36545
|
+
}, {
|
|
36546
|
+
label: "Neutral",
|
|
36547
|
+
value: previewColors.neutral
|
|
36548
|
+
}].filter(function (c) {
|
|
36549
|
+
return c.value;
|
|
36550
|
+
});
|
|
36551
|
+
return /*#__PURE__*/jsx(Modal, {
|
|
36552
|
+
isOpen: isOpen,
|
|
36553
|
+
setIsOpen: handleClose,
|
|
36554
|
+
width: "w-full max-w-2xl",
|
|
36555
|
+
height: "h-[70vh]",
|
|
36556
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36557
|
+
className: "flex flex-col h-full rounded-lg overflow-clip border ".concat(panelStyles.backgroundColor || "", " ").concat(panelStyles.borderColor || "", " ").concat(panelStyles.textColor || ""),
|
|
36558
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
36559
|
+
className: "flex-shrink-0 flex flex-row items-center justify-between p-4 border-b border-white/10",
|
|
36560
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
36561
|
+
className: "text-lg font-semibold",
|
|
36562
|
+
children: ["Publish \"", themeName || themeKey || "Theme", "\""]
|
|
36563
|
+
}), /*#__PURE__*/jsx("button", {
|
|
36564
|
+
type: "button",
|
|
36565
|
+
onClick: handleClose,
|
|
36566
|
+
className: "opacity-50 hover:opacity-100 transition-opacity cursor-pointer",
|
|
36567
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36568
|
+
icon: "xmark",
|
|
36569
|
+
className: "h-5 w-5"
|
|
36570
|
+
})
|
|
36571
|
+
})]
|
|
36572
|
+
}), /*#__PURE__*/jsxs(Stepper, {
|
|
36573
|
+
activeStep: step,
|
|
36574
|
+
onStepChange: handleStepChange,
|
|
36575
|
+
showNavigation: false,
|
|
36576
|
+
className: "flex-1 min-h-0 flex flex-col px-6 pt-2",
|
|
36577
|
+
children: [/*#__PURE__*/jsx(Stepper.Step, {
|
|
36578
|
+
label: "Account",
|
|
36579
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36580
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
36581
|
+
children: [authStatus === "loading" && /*#__PURE__*/jsx("div", {
|
|
36582
|
+
className: "flex items-center justify-center py-12",
|
|
36583
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36584
|
+
className: "flex items-center gap-3 text-sm opacity-60",
|
|
36585
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36586
|
+
icon: "spinner",
|
|
36587
|
+
className: "h-4 w-4 animate-spin"
|
|
36588
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36589
|
+
children: "Checking account status..."
|
|
36590
|
+
})]
|
|
36591
|
+
})
|
|
36592
|
+
}), authStatus === "authenticated" && profile && /*#__PURE__*/jsxs("div", {
|
|
36593
|
+
className: "space-y-4",
|
|
36594
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36595
|
+
className: "text-sm opacity-70",
|
|
36596
|
+
children: "You're signed in and ready to publish."
|
|
36597
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36598
|
+
className: "bg-white/5 border border-white/10 rounded-lg p-4 flex items-center gap-4",
|
|
36599
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
36600
|
+
className: "flex items-center justify-center h-10 w-10 rounded-full bg-green-500/20 border border-green-500/30",
|
|
36601
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36602
|
+
icon: "circle-check",
|
|
36603
|
+
className: "h-5 w-5 text-green-400"
|
|
36604
|
+
})
|
|
36605
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36606
|
+
className: "flex-1 min-w-0",
|
|
36607
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
36608
|
+
className: "text-sm font-medium truncate",
|
|
36609
|
+
children: profile.displayName || profile.username
|
|
36610
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36611
|
+
className: "text-xs opacity-50 truncate",
|
|
36612
|
+
children: ["@", profile.username]
|
|
36613
|
+
})]
|
|
36614
|
+
})]
|
|
36615
|
+
}), /*#__PURE__*/jsx("button", {
|
|
36616
|
+
type: "button",
|
|
36617
|
+
onClick: handleSignOut,
|
|
36618
|
+
className: "text-xs opacity-40 hover:opacity-70 transition-opacity cursor-pointer",
|
|
36619
|
+
children: "Sign out"
|
|
36620
|
+
})]
|
|
36621
|
+
}), authStatus === "unauthenticated" && /*#__PURE__*/jsxs("div", {
|
|
36622
|
+
className: "space-y-4",
|
|
36623
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36624
|
+
className: "text-sm opacity-70",
|
|
36625
|
+
children: "Sign in to the Dash Registry to publish your theme."
|
|
36626
|
+
}), !authFlow && !isPolling && /*#__PURE__*/jsxs(Fragment, {
|
|
36627
|
+
children: [/*#__PURE__*/jsx("button", {
|
|
36628
|
+
type: "button",
|
|
36629
|
+
onClick: handleSignIn,
|
|
36630
|
+
className: "px-4 py-2 rounded-lg text-sm bg-blue-500/20 border border-blue-500/30 text-blue-300 hover:bg-blue-500/30 transition-colors cursor-pointer",
|
|
36631
|
+
children: "Sign in to Registry"
|
|
36632
|
+
}), authError && /*#__PURE__*/jsx("div", {
|
|
36633
|
+
className: "bg-red-500/10 border border-red-500/20 rounded-lg p-3",
|
|
36634
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36635
|
+
className: "flex items-start gap-2",
|
|
36636
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36637
|
+
icon: "circle-xmark",
|
|
36638
|
+
className: "h-3.5 w-3.5 text-red-400 mt-0.5 flex-shrink-0"
|
|
36639
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36640
|
+
className: "text-xs text-red-300/90",
|
|
36641
|
+
children: authError
|
|
36642
|
+
})]
|
|
36643
|
+
})
|
|
36644
|
+
})]
|
|
36645
|
+
}), authFlow && isPolling && /*#__PURE__*/jsxs("div", {
|
|
36646
|
+
className: "bg-blue-500/10 border border-blue-500/20 rounded-lg p-4 space-y-3",
|
|
36647
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36648
|
+
className: "text-xs text-blue-300/90",
|
|
36649
|
+
children: "Enter this code in your browser:"
|
|
36650
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36651
|
+
className: "text-center",
|
|
36652
|
+
children: /*#__PURE__*/jsx("span", {
|
|
36653
|
+
className: "text-2xl font-mono font-bold tracking-widest text-white",
|
|
36654
|
+
children: authFlow.userCode
|
|
36655
|
+
})
|
|
36656
|
+
}), /*#__PURE__*/jsx("p", {
|
|
36657
|
+
className: "text-xs text-blue-300/70 text-center",
|
|
36658
|
+
children: "Waiting for authorization..."
|
|
36659
|
+
})]
|
|
36660
|
+
})]
|
|
36661
|
+
})]
|
|
36662
|
+
})
|
|
36663
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
36664
|
+
label: "Details",
|
|
36665
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36666
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
36667
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36668
|
+
className: "text-sm opacity-70",
|
|
36669
|
+
children: "Provide details about your theme for the registry listing."
|
|
36670
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36671
|
+
children: [/*#__PURE__*/jsx("label", {
|
|
36672
|
+
className: "block text-sm font-medium opacity-70 mb-1",
|
|
36673
|
+
children: "Author Name"
|
|
36674
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36675
|
+
className: "px-3 py-2 rounded-lg bg-white/5 border border-white/10 text-sm opacity-80",
|
|
36676
|
+
children: authorName || "\u2014"
|
|
36677
|
+
})]
|
|
36678
|
+
}), colorEntries.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
36679
|
+
children: [/*#__PURE__*/jsx("label", {
|
|
36680
|
+
className: "block text-sm font-medium opacity-70 mb-2",
|
|
36681
|
+
children: "Theme Colors"
|
|
36682
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36683
|
+
className: "flex flex-row gap-3",
|
|
36684
|
+
children: colorEntries.map(function (_ref2) {
|
|
36685
|
+
var label = _ref2.label,
|
|
36686
|
+
value = _ref2.value;
|
|
36687
|
+
return /*#__PURE__*/jsxs("div", {
|
|
36688
|
+
className: "flex flex-col items-center gap-1",
|
|
36689
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
36690
|
+
className: "h-8 w-8 rounded-full border-2 border-white/20",
|
|
36691
|
+
style: {
|
|
36692
|
+
backgroundColor: value
|
|
36693
|
+
}
|
|
36694
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36695
|
+
className: "text-[10px] opacity-50",
|
|
36696
|
+
children: label
|
|
36697
|
+
})]
|
|
36698
|
+
}, label);
|
|
36699
|
+
})
|
|
36700
|
+
})]
|
|
36701
|
+
}), /*#__PURE__*/jsx(TextArea, {
|
|
36702
|
+
label: "Description",
|
|
36703
|
+
value: description,
|
|
36704
|
+
onChange: setDescription,
|
|
36705
|
+
placeholder: "A brief description of this theme...",
|
|
36706
|
+
rows: 3
|
|
36707
|
+
})]
|
|
36708
|
+
})
|
|
36709
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
36710
|
+
label: "Tags",
|
|
36711
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36712
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-5",
|
|
36713
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36714
|
+
className: "text-sm opacity-70",
|
|
36715
|
+
children: "Select at least one tag to categorize your theme."
|
|
36716
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36717
|
+
className: "grid grid-cols-3 gap-2",
|
|
36718
|
+
children: THEME_TAGS.map(function (tag) {
|
|
36719
|
+
var isSelected = selectedTags.includes(tag);
|
|
36720
|
+
return /*#__PURE__*/jsx("button", {
|
|
36721
|
+
type: "button",
|
|
36722
|
+
onClick: function onClick() {
|
|
36723
|
+
return toggleTag(tag);
|
|
36724
|
+
},
|
|
36725
|
+
className: "px-3 py-1.5 rounded-full text-sm border transition-colors cursor-pointer ".concat(isSelected ? "bg-white/15 border-white/30 text-white" : "bg-transparent border-white/10 text-white/60 hover:border-white/20 hover:text-white/80"),
|
|
36726
|
+
children: tag
|
|
36727
|
+
}, tag);
|
|
36728
|
+
})
|
|
36729
|
+
})]
|
|
36730
|
+
})
|
|
36731
|
+
}), /*#__PURE__*/jsx(Stepper.Step, {
|
|
36732
|
+
label: "Publish",
|
|
36733
|
+
children: /*#__PURE__*/jsx("div", {
|
|
36734
|
+
className: "flex-1 min-h-0 overflow-y-auto pb-4 space-y-4",
|
|
36735
|
+
children: !result ? /*#__PURE__*/jsxs(Fragment, {
|
|
36736
|
+
children: [/*#__PURE__*/jsx("p", {
|
|
36737
|
+
className: "text-sm opacity-70",
|
|
36738
|
+
children: "Review your theme details before publishing."
|
|
36739
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36740
|
+
className: "bg-white/5 border border-white/10 rounded-lg p-4 space-y-2 text-sm",
|
|
36741
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
36742
|
+
className: "flex gap-2",
|
|
36743
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36744
|
+
className: "opacity-50 w-20 flex-shrink-0",
|
|
36745
|
+
children: "Author"
|
|
36746
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36747
|
+
children: authorName
|
|
36748
|
+
})]
|
|
36749
|
+
}), description.trim() && /*#__PURE__*/jsxs("div", {
|
|
36750
|
+
className: "flex gap-2",
|
|
36751
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36752
|
+
className: "opacity-50 w-20 flex-shrink-0",
|
|
36753
|
+
children: "Description"
|
|
36754
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36755
|
+
children: description
|
|
36756
|
+
})]
|
|
36757
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36758
|
+
className: "flex gap-2",
|
|
36759
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36760
|
+
className: "opacity-50 w-20 flex-shrink-0",
|
|
36761
|
+
children: "Tags"
|
|
36762
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36763
|
+
children: selectedTags.length > 0 ? selectedTags.join(", ") : "None"
|
|
36764
|
+
})]
|
|
36765
|
+
}), colorEntries.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
36766
|
+
className: "flex gap-2 items-center",
|
|
36767
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36768
|
+
className: "opacity-50 w-20 flex-shrink-0",
|
|
36769
|
+
children: "Colors"
|
|
36770
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36771
|
+
className: "flex gap-1.5",
|
|
36772
|
+
children: colorEntries.map(function (_ref3) {
|
|
36773
|
+
var label = _ref3.label,
|
|
36774
|
+
value = _ref3.value;
|
|
36775
|
+
return /*#__PURE__*/jsx("div", {
|
|
36776
|
+
className: "h-5 w-5 rounded-full border border-white/20",
|
|
36777
|
+
style: {
|
|
36778
|
+
backgroundColor: value
|
|
36779
|
+
},
|
|
36780
|
+
title: "".concat(label, ": ").concat(value)
|
|
36781
|
+
}, label);
|
|
36782
|
+
})
|
|
36783
|
+
})]
|
|
36784
|
+
})]
|
|
36785
|
+
})]
|
|
36786
|
+
}) : result.success ? /*#__PURE__*/jsxs("div", {
|
|
36787
|
+
className: "space-y-3",
|
|
36788
|
+
children: [(_result$registryResul = result.registryResult) !== null && _result$registryResul !== void 0 && _result$registryResul.success ? /*#__PURE__*/jsxs("div", {
|
|
36789
|
+
className: "space-y-3",
|
|
36790
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
36791
|
+
className: "flex items-center gap-2",
|
|
36792
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36793
|
+
icon: "circle-check",
|
|
36794
|
+
className: "h-4 w-4 text-green-400"
|
|
36795
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36796
|
+
className: "text-sm",
|
|
36797
|
+
children: "Published to Dash Registry"
|
|
36798
|
+
})]
|
|
36799
|
+
}), result.registryResult.registryUrl && /*#__PURE__*/jsxs("div", {
|
|
36800
|
+
className: "bg-white/5 border border-white/10 rounded-lg p-3",
|
|
36801
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
36802
|
+
className: "text-xs opacity-50 mb-1",
|
|
36803
|
+
children: "Shareable Link"
|
|
36804
|
+
}), /*#__PURE__*/jsx("button", {
|
|
36805
|
+
type: "button",
|
|
36806
|
+
onClick: function onClick() {
|
|
36807
|
+
return window.mainApi.shell.openExternal(result.registryResult.registryUrl);
|
|
36808
|
+
},
|
|
36809
|
+
className: "text-sm text-blue-400 hover:underline cursor-pointer break-all text-left",
|
|
36810
|
+
children: result.registryResult.registryUrl
|
|
36811
|
+
})]
|
|
36812
|
+
})]
|
|
36813
|
+
}) : /*#__PURE__*/jsxs("div", {
|
|
36814
|
+
className: "space-y-3",
|
|
36815
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
36816
|
+
className: "flex items-center gap-2",
|
|
36817
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36818
|
+
icon: "circle-check",
|
|
36819
|
+
className: "h-4 w-4 text-green-400"
|
|
36820
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36821
|
+
className: "text-sm",
|
|
36822
|
+
children: "Theme prepared for publishing."
|
|
36823
|
+
})]
|
|
36824
|
+
}), ((_result$registryResul2 = result.registryResult) === null || _result$registryResul2 === void 0 ? void 0 : _result$registryResul2.error) && /*#__PURE__*/jsx("div", {
|
|
36825
|
+
className: "bg-amber-500/10 border border-amber-500/20 rounded-lg p-3",
|
|
36826
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
36827
|
+
className: "flex items-start gap-2",
|
|
36828
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36829
|
+
icon: "triangle-exclamation",
|
|
36830
|
+
className: "h-3.5 w-3.5 text-amber-400 mt-0.5 flex-shrink-0"
|
|
36831
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
36832
|
+
className: "text-xs text-amber-300/90",
|
|
36833
|
+
children: ["Registry upload failed:", " ", result.registryResult.error, ". Your theme was saved locally."]
|
|
36834
|
+
})]
|
|
36835
|
+
})
|
|
36836
|
+
})]
|
|
36837
|
+
}), result.filePath && /*#__PURE__*/jsxs("div", {
|
|
36838
|
+
className: "text-xs opacity-50 break-all",
|
|
36839
|
+
children: ["Saved to: ", result.filePath]
|
|
36840
|
+
})]
|
|
36841
|
+
}) : /*#__PURE__*/jsxs("div", {
|
|
36842
|
+
className: "flex items-center gap-2",
|
|
36843
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36844
|
+
icon: "circle-xmark",
|
|
36845
|
+
className: "h-4 w-4 text-red-400"
|
|
36846
|
+
}), /*#__PURE__*/jsx("span", {
|
|
36847
|
+
className: "text-sm text-red-400",
|
|
36848
|
+
children: result.error || "Publish preparation failed."
|
|
36849
|
+
})]
|
|
36850
|
+
})
|
|
36851
|
+
})
|
|
36852
|
+
})]
|
|
36853
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36854
|
+
className: "flex-shrink-0 flex flex-row items-center px-6 py-4 border-t border-white/10",
|
|
36855
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
36856
|
+
className: "flex flex-row gap-2",
|
|
36857
|
+
children: /*#__PURE__*/jsx(Button3, {
|
|
36858
|
+
title: step === 0 ? "Cancel" : "Back",
|
|
36859
|
+
onClick: step === 0 ? handleClose : function () {
|
|
36860
|
+
return setStep(step - 1);
|
|
36861
|
+
},
|
|
36862
|
+
disabled: isPublishing
|
|
36863
|
+
})
|
|
36864
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36865
|
+
className: "flex-1 text-center",
|
|
36866
|
+
children: /*#__PURE__*/jsxs("span", {
|
|
36867
|
+
className: "text-xs opacity-40",
|
|
36868
|
+
children: ["Step ", step + 1, " of 4"]
|
|
36869
|
+
})
|
|
36870
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36871
|
+
className: "flex flex-row gap-2",
|
|
36872
|
+
children: result !== null && result !== void 0 && result.success ? /*#__PURE__*/jsx(Button2, {
|
|
36873
|
+
title: "Done",
|
|
36874
|
+
onClick: handleClose
|
|
36875
|
+
}) : isLastStep ? /*#__PURE__*/jsx(Button2, {
|
|
36876
|
+
title: isPublishing ? "Publishing..." : "Publish",
|
|
36877
|
+
onClick: handlePublish,
|
|
36878
|
+
disabled: isPublishing
|
|
36879
|
+
}) : /*#__PURE__*/jsx(Button2, {
|
|
36880
|
+
title: "Next",
|
|
36881
|
+
onClick: function onClick() {
|
|
36882
|
+
return handleStepChange(step + 1);
|
|
36883
|
+
},
|
|
36884
|
+
disabled: !canAdvance
|
|
36885
|
+
})
|
|
36886
|
+
})]
|
|
36887
|
+
})]
|
|
36888
|
+
})
|
|
36889
|
+
});
|
|
36890
|
+
};
|
|
36891
|
+
|
|
36892
|
+
var TOKEN_TYPES = ["bg", "text", "border"];
|
|
36893
|
+
|
|
36894
|
+
// --- Color Swatch Grid ---
|
|
36895
|
+
|
|
36896
|
+
var SwatchCell = function SwatchCell(_ref) {
|
|
36897
|
+
var tokenKey = _ref.tokenKey,
|
|
36898
|
+
resolvedClass = _ref.resolvedClass,
|
|
36899
|
+
type = _ref.type;
|
|
36900
|
+
var tooltip = "".concat(tokenKey, " \u2192 ").concat(resolvedClass || "(none)");
|
|
36901
|
+
if (type === "bg") {
|
|
36902
|
+
return /*#__PURE__*/jsx("div", {
|
|
36903
|
+
className: "h-8 flex-1 rounded ".concat(resolvedClass || ""),
|
|
36904
|
+
title: tooltip
|
|
36905
|
+
});
|
|
36906
|
+
}
|
|
36907
|
+
if (type === "text") {
|
|
36908
|
+
return /*#__PURE__*/jsx("div", {
|
|
36909
|
+
className: "h-8 flex-1 rounded flex items-center justify-center bg-black/10",
|
|
36910
|
+
title: tooltip,
|
|
36911
|
+
children: /*#__PURE__*/jsx("span", {
|
|
36912
|
+
className: "text-xs font-bold ".concat(resolvedClass || ""),
|
|
36913
|
+
children: "Aa"
|
|
36914
|
+
})
|
|
36915
|
+
});
|
|
36916
|
+
}
|
|
36917
|
+
|
|
36918
|
+
// border
|
|
36919
|
+
return /*#__PURE__*/jsx("div", {
|
|
36920
|
+
className: "h-8 flex-1 rounded border-2 ".concat(resolvedClass || ""),
|
|
36921
|
+
title: tooltip
|
|
36922
|
+
});
|
|
36923
|
+
};
|
|
36924
|
+
var ColorSwatchGrid = function ColorSwatchGrid(_ref2) {
|
|
36925
|
+
var displayTheme = _ref2.displayTheme;
|
|
36926
|
+
return /*#__PURE__*/jsx("div", {
|
|
36927
|
+
className: "flex flex-col space-y-5",
|
|
36928
|
+
children: colorTypes.map(function (family) {
|
|
36929
|
+
return /*#__PURE__*/jsxs("div", {
|
|
36930
|
+
className: "flex flex-col space-y-2",
|
|
36931
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36932
|
+
className: "text-xs font-semibold opacity-50 capitalize",
|
|
36933
|
+
children: family
|
|
36934
|
+
}), TOKEN_TYPES.map(function (type) {
|
|
36935
|
+
return /*#__PURE__*/jsxs("div", {
|
|
36936
|
+
className: "flex flex-row items-center gap-2",
|
|
36937
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
36938
|
+
className: "text-[10px] opacity-40 w-10 text-right shrink-0",
|
|
36939
|
+
children: type
|
|
36940
|
+
}), /*#__PURE__*/jsx("div", {
|
|
36941
|
+
className: "flex flex-row gap-1.5 flex-1",
|
|
36942
|
+
children: themeVariants.map(function (shade) {
|
|
36943
|
+
var tokenKey = "".concat(type, "-").concat(family, "-").concat(shade);
|
|
36944
|
+
var resolvedClass = displayTheme[tokenKey] || "";
|
|
36945
|
+
return /*#__PURE__*/jsx(SwatchCell, {
|
|
36946
|
+
tokenKey: tokenKey,
|
|
36947
|
+
resolvedClass: resolvedClass,
|
|
36948
|
+
type: type
|
|
36949
|
+
}, shade);
|
|
36950
|
+
})
|
|
36951
|
+
})]
|
|
36952
|
+
}, type);
|
|
36953
|
+
})]
|
|
36954
|
+
}, family);
|
|
36955
|
+
})
|
|
36956
|
+
});
|
|
36957
|
+
};
|
|
36958
|
+
|
|
36959
|
+
// --- Component Style Accordion ---
|
|
36960
|
+
|
|
36961
|
+
var COLOR_KEYS = ["backgroundColor", "textColor", "borderColor", "hoverBackgroundColor", "hoverTextColor", "hoverBorderColor", "activeBackgroundColor", "activeTextColor", "focusRingColor", "focusBorderColor"];
|
|
36962
|
+
var NON_COLOR_KEYS = ["shadow", "borderRadius", "spacing", "textSize", "iconSize", "fontWeight", "transition", "cursor", "disabledOpacity", "letterSpacing", "lineHeight"];
|
|
36963
|
+
var COMPONENT_GROUPS = [{
|
|
36964
|
+
label: "Buttons",
|
|
36965
|
+
keys: ["BUTTON", "BUTTON_2", "BUTTON_3", "BUTTON_ICON", "BUTTON_ICON_2", "BUTTON_ICON_3"]
|
|
36966
|
+
}, {
|
|
36967
|
+
label: "Panels",
|
|
36968
|
+
keys: ["PANEL", "PANEL_2", "PANEL_3", "PANEL_HEADER", "PANEL_HEADER_2", "PANEL_HEADER_3", "PANEL_FOOTER", "PANEL_FOOTER_2", "PANEL_FOOTER_3", "DASH_PANEL", "DASH_PANEL_2", "DASH_PANEL_3", "DASH_PANEL_HEADER", "DASH_PANEL_HEADER_2", "DASH_PANEL_HEADER_3", "DASH_PANEL_FOOTER", "DASH_PANEL_FOOTER_2", "DASH_PANEL_FOOTER_3"]
|
|
36969
|
+
}, {
|
|
36970
|
+
label: "Cards",
|
|
36971
|
+
keys: ["CARD", "CARD_2", "CARD_3", "STAT_CARD", "STAT_CARD_LABEL", "STAT_CARD_VALUE", "STAT_CARD_CHANGE"]
|
|
36972
|
+
}, {
|
|
36973
|
+
label: "Typography",
|
|
36974
|
+
keys: ["HEADING", "HEADING_2", "HEADING_3", "SUBHEADING", "SUBHEADING_2", "SUBHEADING_3", "PARAGRAPH", "PARAGRAPH_2", "PARAGRAPH_3"]
|
|
36975
|
+
}, {
|
|
36976
|
+
label: "Navigation",
|
|
36977
|
+
keys: ["MENU_ITEM", "MENU_ITEM_2", "MENU_ITEM_3", "TABS", "TABS_2", "TABS_3", "TABS_LIST", "TABS_LIST_2", "TABS_LIST_3", "TABS_TRIGGER", "TABS_TRIGGER_2", "TABS_TRIGGER_3", "TABS_CONTENT", "TABS_CONTENT_2", "TABS_CONTENT_3", "SIDEBAR", "SIDEBAR_ITEM", "NAVBAR", "TABBED_NAVBAR", "BREADCRUMBS", "BREADCRUMBS_2", "BREADCRUMBS_3"]
|
|
36978
|
+
}, {
|
|
36979
|
+
label: "Forms",
|
|
36980
|
+
keys: ["INPUT_TEXT", "SELECT_MENU", "TEXTAREA", "CHECKBOX", "RADIO", "SWITCH", "SLIDER", "SEARCH_INPUT", "TOGGLE", "TOGGLE_2", "TOGGLE_3", "FORM_LABEL"]
|
|
36981
|
+
}, {
|
|
36982
|
+
label: "Feedback",
|
|
36983
|
+
keys: ["ALERT", "ALERT_2", "ALERT_3", "ALERT_BANNER", "TOAST", "TOAST_2", "TOAST_3", "PROGRESS_BAR", "PROGRESS_BAR_2", "PROGRESS_BAR_3", "TAG", "TAG_2", "TAG_3", "TOOLTIP", "EMPTY_STATE"]
|
|
36984
|
+
}, {
|
|
36985
|
+
label: "Tables",
|
|
36986
|
+
keys: ["TABLE", "TABLE_2", "TABLE_3", "DATA_LIST", "DATA_LIST_ITEM"]
|
|
36987
|
+
}, {
|
|
36988
|
+
label: "Advanced",
|
|
36989
|
+
keys: ["ACCORDION", "ACCORDION_2", "ACCORDION_3", "ACCORDION_ITEM", "ACCORDION_ITEM_2", "ACCORDION_ITEM_3", "ACCORDION_TRIGGER", "ACCORDION_TRIGGER_2", "ACCORDION_TRIGGER_3", "ACCORDION_CONTENT", "ACCORDION_CONTENT_2", "ACCORDION_CONTENT_3", "COMMAND_PALETTE", "COMMAND_PALETTE_INPUT", "COMMAND_PALETTE_ITEM", "DRAWER", "DRAWER_HEADER", "DRAWER_FOOTER", "STEPPER", "STEPPER_STEP", "STEPPER_CONNECTOR", "SKELETON", "CODE_EDITOR"]
|
|
36990
|
+
}, {
|
|
36991
|
+
label: "Layout",
|
|
36992
|
+
keys: ["WIDGET_CHROME", "WIDGET", "WORKSPACE", "LAYOUT_CONTAINER", "DASHBOARD_FOOTER", "DASHBOARD_FOOTER_2", "DASHBOARD_FOOTER_3", "SETTINGS_MODAL_SIDEBAR", "SETTINGS_MODAL_FOOTER"]
|
|
36993
|
+
}];
|
|
36994
|
+
var ComponentStyleRow = function ComponentStyleRow(_ref3) {
|
|
36995
|
+
var objectKey = _ref3.objectKey,
|
|
36996
|
+
styles = _ref3.styles;
|
|
36997
|
+
if (!styles) return null;
|
|
36998
|
+
var colorEntries = COLOR_KEYS.filter(function (k) {
|
|
36999
|
+
return styles[k];
|
|
37000
|
+
}).map(function (k) {
|
|
37001
|
+
return {
|
|
37002
|
+
key: k,
|
|
37003
|
+
value: styles[k]
|
|
37004
|
+
};
|
|
37005
|
+
});
|
|
37006
|
+
var nonColorEntries = NON_COLOR_KEYS.filter(function (k) {
|
|
37007
|
+
return styles[k];
|
|
37008
|
+
}).map(function (k) {
|
|
37009
|
+
return {
|
|
37010
|
+
key: k,
|
|
37011
|
+
value: styles[k]
|
|
37012
|
+
};
|
|
37013
|
+
});
|
|
37014
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37015
|
+
className: "flex flex-row items-center gap-3 py-1.5",
|
|
37016
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
37017
|
+
className: "text-[11px] font-mono opacity-70 w-40 shrink-0 truncate",
|
|
37018
|
+
children: objectKey
|
|
37019
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37020
|
+
className: "flex flex-row items-center gap-1",
|
|
37021
|
+
children: colorEntries.map(function (_ref4) {
|
|
37022
|
+
var key = _ref4.key,
|
|
37023
|
+
value = _ref4.value;
|
|
37024
|
+
if (key.toLowerCase().includes("text")) {
|
|
37025
|
+
return /*#__PURE__*/jsx("div", {
|
|
37026
|
+
className: "h-5 w-5 rounded-sm flex items-center justify-center bg-black/10",
|
|
37027
|
+
title: "".concat(key, ": ").concat(value),
|
|
37028
|
+
children: /*#__PURE__*/jsx("span", {
|
|
37029
|
+
className: "text-[8px] font-bold ".concat(value),
|
|
37030
|
+
children: "Aa"
|
|
37031
|
+
})
|
|
37032
|
+
}, key);
|
|
37033
|
+
}
|
|
37034
|
+
if (key.toLowerCase().includes("border")) {
|
|
37035
|
+
return /*#__PURE__*/jsx("div", {
|
|
37036
|
+
className: "h-5 w-5 rounded-sm border-2 ".concat(value),
|
|
37037
|
+
title: "".concat(key, ": ").concat(value)
|
|
37038
|
+
}, key);
|
|
37039
|
+
}
|
|
37040
|
+
return /*#__PURE__*/jsx("div", {
|
|
37041
|
+
className: "h-5 w-5 rounded-sm ".concat(value),
|
|
37042
|
+
title: "".concat(key, ": ").concat(value)
|
|
37043
|
+
}, key);
|
|
37044
|
+
})
|
|
37045
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37046
|
+
className: "flex flex-row items-center gap-2 flex-1 overflow-hidden",
|
|
37047
|
+
children: nonColorEntries.map(function (_ref5) {
|
|
37048
|
+
var key = _ref5.key,
|
|
37049
|
+
value = _ref5.value;
|
|
37050
|
+
return /*#__PURE__*/jsx("span", {
|
|
37051
|
+
className: "text-[10px] opacity-40 whitespace-nowrap",
|
|
37052
|
+
title: key,
|
|
37053
|
+
children: value
|
|
37054
|
+
}, key);
|
|
37055
|
+
})
|
|
37056
|
+
})]
|
|
37057
|
+
});
|
|
37058
|
+
};
|
|
37059
|
+
|
|
37060
|
+
// --- Main Component ---
|
|
37061
|
+
|
|
37062
|
+
var ThemeDetail = function ThemeDetail(_ref6) {
|
|
37063
|
+
var themeKey = _ref6.themeKey,
|
|
37064
|
+
themes = _ref6.themes,
|
|
37065
|
+
currentThemeKey = _ref6.currentThemeKey,
|
|
37066
|
+
themeVariant = _ref6.themeVariant,
|
|
37067
|
+
onActivate = _ref6.onActivate,
|
|
37068
|
+
onOpenThemeEditor = _ref6.onOpenThemeEditor,
|
|
37069
|
+
_ref6$onDelete = _ref6.onDelete,
|
|
37070
|
+
onDelete = _ref6$onDelete === void 0 ? null : _ref6$onDelete,
|
|
37071
|
+
_ref6$appId = _ref6.appId,
|
|
37072
|
+
appId = _ref6$appId === void 0 ? null : _ref6$appId;
|
|
37073
|
+
var theme = themeKey && themes ? themes[themeKey] : null;
|
|
37074
|
+
var _useState = useState(false),
|
|
37075
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37076
|
+
publishOpen = _useState2[0],
|
|
37077
|
+
setPublishOpen = _useState2[1];
|
|
37078
|
+
var canPublish = theme && !theme._registryMeta;
|
|
37079
|
+
var displayTheme = useMemo(function () {
|
|
37080
|
+
return theme ? theme[themeVariant] || {} : {};
|
|
37081
|
+
}, [theme, themeVariant]);
|
|
37082
|
+
var isActive = themeKey === currentThemeKey;
|
|
37083
|
+
|
|
37084
|
+
// Memoize all component styles
|
|
37085
|
+
var allStyles = useMemo(function () {
|
|
37086
|
+
var result = {};
|
|
37087
|
+
Object.values(themeObjects).forEach(function (key) {
|
|
37088
|
+
result[key] = getStylesForItem(key, displayTheme, {});
|
|
37089
|
+
});
|
|
37090
|
+
return result;
|
|
37091
|
+
}, [displayTheme]);
|
|
37092
|
+
if (!theme) return null;
|
|
37093
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37094
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
37095
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37096
|
+
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6",
|
|
37097
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37098
|
+
className: "flex flex-row items-center gap-3",
|
|
37099
|
+
children: [/*#__PURE__*/jsx(SubHeading, {
|
|
37100
|
+
title: theme.name || themeKey,
|
|
37101
|
+
padding: false
|
|
37102
|
+
}), isActive && /*#__PURE__*/jsx("span", {
|
|
37103
|
+
className: "text-xs opacity-40",
|
|
37104
|
+
children: "active"
|
|
37105
|
+
})]
|
|
37106
|
+
}), /*#__PURE__*/jsx(ColorSwatchGrid, {
|
|
37107
|
+
displayTheme: displayTheme
|
|
37108
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
37109
|
+
className: "flex flex-col space-y-2",
|
|
37110
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
37111
|
+
className: "text-xs font-semibold opacity-50",
|
|
37112
|
+
children: "Component Styles"
|
|
37113
|
+
}), /*#__PURE__*/jsx(Accordion2, {
|
|
37114
|
+
type: "multiple",
|
|
37115
|
+
children: COMPONENT_GROUPS.map(function (group) {
|
|
37116
|
+
// Only show groups that have valid theme objects
|
|
37117
|
+
var validKeys = group.keys.filter(function (k) {
|
|
37118
|
+
return themeObjects[k];
|
|
37119
|
+
});
|
|
37120
|
+
if (validKeys.length === 0) return null;
|
|
37121
|
+
return /*#__PURE__*/jsxs(Accordion2.Item, {
|
|
37122
|
+
value: group.label,
|
|
37123
|
+
children: [/*#__PURE__*/jsxs(Accordion2.Trigger, {
|
|
37124
|
+
value: group.label,
|
|
37125
|
+
children: [group.label, " (", validKeys.length, ")"]
|
|
37126
|
+
}), /*#__PURE__*/jsx(Accordion2.Content, {
|
|
37127
|
+
value: group.label,
|
|
37128
|
+
children: /*#__PURE__*/jsx("div", {
|
|
37129
|
+
className: "flex flex-col",
|
|
37130
|
+
children: validKeys.map(function (k) {
|
|
37131
|
+
var objectValue = themeObjects[k];
|
|
37132
|
+
return /*#__PURE__*/jsx(ComponentStyleRow, {
|
|
37133
|
+
objectKey: objectValue,
|
|
37134
|
+
styles: allStyles[objectValue]
|
|
37135
|
+
}, k);
|
|
37136
|
+
})
|
|
37137
|
+
})
|
|
37138
|
+
})]
|
|
37139
|
+
}, group.label);
|
|
37140
|
+
})
|
|
37141
|
+
})]
|
|
37142
|
+
})]
|
|
37143
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
37144
|
+
className: "flex-shrink-0 flex flex-row justify-between px-6 py-4 border-t border-white/10",
|
|
37145
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37146
|
+
className: "flex flex-row gap-2",
|
|
37147
|
+
children: [!isActive && onDelete && /*#__PURE__*/jsx(Button, {
|
|
37148
|
+
title: "Delete",
|
|
37149
|
+
onClick: function onClick() {
|
|
37150
|
+
return onDelete(themeKey);
|
|
37151
|
+
},
|
|
37152
|
+
size: "sm"
|
|
37153
|
+
}), canPublish && /*#__PURE__*/jsx(Button, {
|
|
37154
|
+
title: "Publish",
|
|
37155
|
+
onClick: function onClick() {
|
|
37156
|
+
return setPublishOpen(true);
|
|
37157
|
+
},
|
|
37158
|
+
size: "sm"
|
|
37159
|
+
})]
|
|
37160
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
37161
|
+
className: "flex flex-row gap-2",
|
|
37162
|
+
children: [!isActive && /*#__PURE__*/jsx(Button, {
|
|
37163
|
+
title: "Activate",
|
|
37164
|
+
onClick: function onClick() {
|
|
37165
|
+
return onActivate(themeKey);
|
|
37166
|
+
},
|
|
37167
|
+
size: "sm"
|
|
37168
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
37169
|
+
title: "Edit",
|
|
37170
|
+
onClick: onOpenThemeEditor,
|
|
37171
|
+
size: "sm"
|
|
37172
|
+
})]
|
|
37173
|
+
})]
|
|
37174
|
+
}), canPublish && /*#__PURE__*/jsx(PublishThemeModal, {
|
|
37175
|
+
isOpen: publishOpen,
|
|
37176
|
+
setIsOpen: setPublishOpen,
|
|
37177
|
+
appId: appId,
|
|
37178
|
+
themeKey: themeKey,
|
|
37179
|
+
themeName: theme.name || themeKey
|
|
37180
|
+
})]
|
|
37181
|
+
});
|
|
37182
|
+
};
|
|
37183
|
+
|
|
37184
|
+
var RegistryThemeDetail = function RegistryThemeDetail(_ref) {
|
|
37185
|
+
var themePackage = _ref.themePackage,
|
|
37186
|
+
appId = _ref.appId,
|
|
37187
|
+
onInstallComplete = _ref.onInstallComplete;
|
|
37188
|
+
var _useContext = useContext(ThemeContext),
|
|
37189
|
+
currentTheme = _useContext.currentTheme,
|
|
37190
|
+
changeThemesForApplication = _useContext.changeThemesForApplication;
|
|
37191
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
37192
|
+
grow: false
|
|
37193
|
+
});
|
|
37194
|
+
var _useState = useState(false),
|
|
37195
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37196
|
+
isInstalling = _useState2[0],
|
|
37197
|
+
setIsInstalling = _useState2[1];
|
|
37198
|
+
var _useState3 = useState(null),
|
|
37199
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
37200
|
+
installResult = _useState4[0],
|
|
37201
|
+
setInstallResult = _useState4[1];
|
|
37202
|
+
var pkg = themePackage;
|
|
37203
|
+
if (!pkg) return null;
|
|
37204
|
+
var colors = pkg.colors || {};
|
|
37205
|
+
function handleInstall() {
|
|
37206
|
+
return _handleInstall.apply(this, arguments);
|
|
37207
|
+
}
|
|
37208
|
+
function _handleInstall() {
|
|
37209
|
+
_handleInstall = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
37210
|
+
var result, _t;
|
|
37211
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
37212
|
+
while (1) switch (_context.prev = _context.next) {
|
|
37213
|
+
case 0:
|
|
37214
|
+
if (!(!appId || !pkg.name)) {
|
|
37215
|
+
_context.next = 1;
|
|
37216
|
+
break;
|
|
37217
|
+
}
|
|
37218
|
+
return _context.abrupt("return");
|
|
37219
|
+
case 1:
|
|
37220
|
+
setIsInstalling(true);
|
|
37221
|
+
setInstallResult(null);
|
|
37222
|
+
_context.prev = 2;
|
|
37223
|
+
_context.next = 3;
|
|
37224
|
+
return window.mainApi.themes.installThemeFromRegistry(appId, pkg.name);
|
|
37225
|
+
case 3:
|
|
37226
|
+
result = _context.sent;
|
|
37227
|
+
setInstallResult({
|
|
37228
|
+
status: result !== null && result !== void 0 && result.success ? "success" : "error",
|
|
37229
|
+
message: result !== null && result !== void 0 && result.success ? "Theme \"".concat(result.themeKey || pkg.displayName || pkg.name, "\" installed successfully.") : (result === null || result === void 0 ? void 0 : result.error) || "Installation failed."
|
|
37230
|
+
});
|
|
37231
|
+
if (result !== null && result !== void 0 && result.success) {
|
|
37232
|
+
// Refresh ThemeContext with updated themes
|
|
37233
|
+
if (result.themes) {
|
|
37234
|
+
changeThemesForApplication(result.themes);
|
|
37235
|
+
}
|
|
37236
|
+
if (onInstallComplete) {
|
|
37237
|
+
onInstallComplete(result);
|
|
37238
|
+
}
|
|
37239
|
+
}
|
|
37240
|
+
_context.next = 5;
|
|
37241
|
+
break;
|
|
37242
|
+
case 4:
|
|
37243
|
+
_context.prev = 4;
|
|
37244
|
+
_t = _context["catch"](2);
|
|
37245
|
+
setInstallResult({
|
|
37246
|
+
status: "error",
|
|
37247
|
+
message: _t.message || "Failed to install theme."
|
|
37248
|
+
});
|
|
37249
|
+
case 5:
|
|
37250
|
+
_context.prev = 5;
|
|
37251
|
+
setIsInstalling(false);
|
|
37252
|
+
return _context.finish(5);
|
|
37253
|
+
case 6:
|
|
37254
|
+
case "end":
|
|
37255
|
+
return _context.stop();
|
|
37256
|
+
}
|
|
37257
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
37258
|
+
}));
|
|
37259
|
+
return _handleInstall.apply(this, arguments);
|
|
37260
|
+
}
|
|
37261
|
+
var colorEntries = [{
|
|
37262
|
+
label: "Primary",
|
|
37263
|
+
value: colors.primary
|
|
37264
|
+
}, {
|
|
37265
|
+
label: "Secondary",
|
|
37266
|
+
value: colors.secondary
|
|
37267
|
+
}, {
|
|
37268
|
+
label: "Tertiary",
|
|
37269
|
+
value: colors.tertiary
|
|
37270
|
+
}, {
|
|
37271
|
+
label: "Neutral",
|
|
37272
|
+
value: colors.neutral
|
|
37273
|
+
}].filter(function (c) {
|
|
37274
|
+
return c.value;
|
|
37275
|
+
});
|
|
37276
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37277
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
37278
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37279
|
+
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
37280
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37281
|
+
className: "flex flex-row items-center gap-3",
|
|
37282
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
37283
|
+
className: "h-5 w-5 flex-shrink-0 flex items-center justify-center",
|
|
37284
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37285
|
+
icon: "palette",
|
|
37286
|
+
className: "h-5 w-5"
|
|
37287
|
+
})
|
|
37288
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
37289
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
37290
|
+
title: pkg.displayName || pkg.name,
|
|
37291
|
+
padding: false
|
|
37292
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
37293
|
+
className: "flex items-center gap-2 mt-0.5",
|
|
37294
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
37295
|
+
className: "text-sm opacity-60",
|
|
37296
|
+
children: ["by ", pkg.author || "Unknown"]
|
|
37297
|
+
}), pkg.version && /*#__PURE__*/jsxs("span", {
|
|
37298
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
37299
|
+
children: ["v", pkg.version]
|
|
37300
|
+
})]
|
|
37301
|
+
})]
|
|
37302
|
+
})]
|
|
37303
|
+
}), /*#__PURE__*/jsx("hr", {
|
|
37304
|
+
className: currentTheme["border-primary-medium"]
|
|
37305
|
+
}), colorEntries.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
37306
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
37307
|
+
className: "text-xs font-semibold opacity-50 mb-2 block",
|
|
37308
|
+
children: "COLORS"
|
|
37309
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37310
|
+
className: "flex flex-row gap-3",
|
|
37311
|
+
children: colorEntries.map(function (_ref2) {
|
|
37312
|
+
var label = _ref2.label,
|
|
37313
|
+
value = _ref2.value;
|
|
37314
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37315
|
+
className: "flex flex-col items-center gap-1",
|
|
37316
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
37317
|
+
className: "h-10 w-10 rounded-full border-2 border-white/20",
|
|
37318
|
+
style: {
|
|
37319
|
+
backgroundColor: value
|
|
37320
|
+
}
|
|
37321
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37322
|
+
className: "text-[10px] opacity-50",
|
|
37323
|
+
children: label
|
|
37324
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37325
|
+
className: "text-[10px] opacity-30 font-mono",
|
|
37326
|
+
children: value
|
|
37327
|
+
})]
|
|
37328
|
+
}, label);
|
|
37329
|
+
})
|
|
37330
|
+
})]
|
|
37331
|
+
}), pkg.description && /*#__PURE__*/jsx("p", {
|
|
37332
|
+
className: "text-sm",
|
|
37333
|
+
children: pkg.description
|
|
37334
|
+
}), pkg.tags && pkg.tags.length > 0 && /*#__PURE__*/jsx("div", {
|
|
37335
|
+
className: "flex flex-wrap gap-1",
|
|
37336
|
+
children: pkg.tags.map(function (tag) {
|
|
37337
|
+
return /*#__PURE__*/jsx("span", {
|
|
37338
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-60"),
|
|
37339
|
+
children: tag
|
|
37340
|
+
}, tag);
|
|
37341
|
+
})
|
|
37342
|
+
}), installResult && /*#__PURE__*/jsx("div", {
|
|
37343
|
+
className: "p-2 rounded border ".concat(installResult.status === "success" ? "bg-green-900/20 border-green-700" : "bg-red-900/30 border-red-700"),
|
|
37344
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
37345
|
+
className: "flex items-center gap-2",
|
|
37346
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37347
|
+
icon: installResult.status === "success" ? "circle-check" : "circle-xmark",
|
|
37348
|
+
className: "h-4 w-4 ".concat(installResult.status === "success" ? "text-green-400" : "text-red-400")
|
|
37349
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37350
|
+
className: "text-sm ".concat(installResult.status === "error" ? "text-red-400" : ""),
|
|
37351
|
+
children: installResult.message
|
|
37352
|
+
})]
|
|
37353
|
+
})
|
|
37354
|
+
})]
|
|
37355
|
+
}), (installResult === null || installResult === void 0 ? void 0 : installResult.status) !== "success" && /*#__PURE__*/jsx("div", {
|
|
37356
|
+
className: "flex items-center justify-end px-6 py-3 border-t ".concat(currentTheme["border-primary-medium"]),
|
|
37357
|
+
children: /*#__PURE__*/jsx(Button, {
|
|
37358
|
+
title: isInstalling ? "Installing..." : "Install Theme",
|
|
37359
|
+
bgColor: "bg-blue-600",
|
|
37360
|
+
hoverBackgroundColor: isInstalling ? "" : "hover:bg-blue-700",
|
|
37361
|
+
textSize: "text-sm",
|
|
37362
|
+
padding: "py-1.5 px-4",
|
|
37363
|
+
onClick: handleInstall,
|
|
37364
|
+
disabled: isInstalling
|
|
37365
|
+
})
|
|
37366
|
+
})]
|
|
37367
|
+
});
|
|
37368
|
+
};
|
|
37369
|
+
|
|
37370
|
+
var DiscoverThemesDetail = function DiscoverThemesDetail(_ref) {
|
|
37371
|
+
var onBack = _ref.onBack,
|
|
37372
|
+
appId = _ref.appId,
|
|
37373
|
+
onInstallComplete = _ref.onInstallComplete;
|
|
37374
|
+
var _useContext = useContext(ThemeContext),
|
|
37375
|
+
currentTheme = _useContext.currentTheme;
|
|
37376
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
37377
|
+
grow: false
|
|
37378
|
+
});
|
|
37379
|
+
var _useState = useState([]),
|
|
37380
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37381
|
+
packages = _useState2[0],
|
|
37382
|
+
setPackages = _useState2[1];
|
|
37383
|
+
var _useState3 = useState(false),
|
|
37384
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
37385
|
+
isLoading = _useState4[0],
|
|
37386
|
+
setIsLoading = _useState4[1];
|
|
37387
|
+
var _useState5 = useState(null),
|
|
37388
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
37389
|
+
error = _useState6[0],
|
|
37390
|
+
setError = _useState6[1];
|
|
37391
|
+
var _useState7 = useState(""),
|
|
37392
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
37393
|
+
searchQuery = _useState8[0],
|
|
37394
|
+
setSearchQuery = _useState8[1];
|
|
37395
|
+
var _useState9 = useState(null),
|
|
37396
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
37397
|
+
selectedPackageName = _useState0[0],
|
|
37398
|
+
setSelectedPackageName = _useState0[1];
|
|
37399
|
+
var search = useCallback(/*#__PURE__*/function () {
|
|
37400
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
37401
|
+
var _window$mainApi;
|
|
37402
|
+
var result, _t;
|
|
37403
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
37404
|
+
while (1) switch (_context.prev = _context.next) {
|
|
37405
|
+
case 0:
|
|
37406
|
+
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchThemes) {
|
|
37407
|
+
_context.next = 1;
|
|
37408
|
+
break;
|
|
37409
|
+
}
|
|
37410
|
+
setPackages([]);
|
|
37411
|
+
return _context.abrupt("return");
|
|
37412
|
+
case 1:
|
|
37413
|
+
setIsLoading(true);
|
|
37414
|
+
setError(null);
|
|
37415
|
+
_context.prev = 2;
|
|
37416
|
+
_context.next = 3;
|
|
37417
|
+
return window.mainApi.registry.searchThemes(query || "", {});
|
|
37418
|
+
case 3:
|
|
37419
|
+
result = _context.sent;
|
|
37420
|
+
setPackages((result === null || result === void 0 ? void 0 : result.packages) || []);
|
|
37421
|
+
_context.next = 5;
|
|
37422
|
+
break;
|
|
37423
|
+
case 4:
|
|
37424
|
+
_context.prev = 4;
|
|
37425
|
+
_t = _context["catch"](2);
|
|
37426
|
+
setError(_t.message || "Failed to search theme registry");
|
|
37427
|
+
setPackages([]);
|
|
37428
|
+
case 5:
|
|
37429
|
+
_context.prev = 5;
|
|
37430
|
+
setIsLoading(false);
|
|
37431
|
+
return _context.finish(5);
|
|
37432
|
+
case 6:
|
|
37433
|
+
case "end":
|
|
37434
|
+
return _context.stop();
|
|
37435
|
+
}
|
|
37436
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
37437
|
+
}));
|
|
37438
|
+
return function (_x) {
|
|
37439
|
+
return _ref2.apply(this, arguments);
|
|
37440
|
+
};
|
|
37441
|
+
}(), []);
|
|
37442
|
+
|
|
37443
|
+
// Debounce search on query changes
|
|
37444
|
+
useEffect(function () {
|
|
37445
|
+
var timer = setTimeout(function () {
|
|
37446
|
+
search(searchQuery);
|
|
37447
|
+
}, 300);
|
|
37448
|
+
return function () {
|
|
37449
|
+
return clearTimeout(timer);
|
|
37450
|
+
};
|
|
37451
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37452
|
+
}, [searchQuery]);
|
|
37453
|
+
var retry = function retry() {
|
|
37454
|
+
return search(searchQuery);
|
|
37455
|
+
};
|
|
37456
|
+
var selectedPackage = selectedPackageName ? packages.find(function (p) {
|
|
37457
|
+
return p.name === selectedPackageName;
|
|
37458
|
+
}) : null;
|
|
37459
|
+
|
|
37460
|
+
// If a package is selected, show its detail inline
|
|
37461
|
+
if (selectedPackage) {
|
|
37462
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37463
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
37464
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
37465
|
+
className: "flex-shrink-0 px-4 pt-4",
|
|
37466
|
+
children: /*#__PURE__*/jsxs("button", {
|
|
37467
|
+
type: "button",
|
|
37468
|
+
onClick: function onClick() {
|
|
37469
|
+
return setSelectedPackageName(null);
|
|
37470
|
+
},
|
|
37471
|
+
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
37472
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37473
|
+
icon: "arrow-left",
|
|
37474
|
+
className: "h-3 w-3"
|
|
37475
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37476
|
+
children: "Back"
|
|
37477
|
+
})]
|
|
37478
|
+
})
|
|
37479
|
+
}), /*#__PURE__*/jsx(RegistryThemeDetail, {
|
|
37480
|
+
themePackage: selectedPackage,
|
|
37481
|
+
appId: appId,
|
|
37482
|
+
onInstallComplete: onInstallComplete
|
|
37483
|
+
})]
|
|
37484
|
+
});
|
|
37485
|
+
}
|
|
37486
|
+
|
|
37487
|
+
// Package list view
|
|
37488
|
+
var listBody;
|
|
37489
|
+
if (isLoading) {
|
|
37490
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
37491
|
+
className: "flex items-center justify-center py-12",
|
|
37492
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
37493
|
+
className: "text-center",
|
|
37494
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
37495
|
+
className: "animate-spin rounded-full h-6 w-6 border-b-2 border-blue-500 mx-auto mb-3"
|
|
37496
|
+
}), /*#__PURE__*/jsx(Paragraph, {
|
|
37497
|
+
className: "text-sm opacity-50",
|
|
37498
|
+
children: "Loading themes..."
|
|
37499
|
+
})]
|
|
37500
|
+
})
|
|
37501
|
+
});
|
|
37502
|
+
} else if (error) {
|
|
37503
|
+
listBody = /*#__PURE__*/jsxs("div", {
|
|
37504
|
+
className: "px-4 py-8 text-center",
|
|
37505
|
+
children: [/*#__PURE__*/jsx(Paragraph, {
|
|
37506
|
+
className: "text-sm text-red-400 mb-3",
|
|
37507
|
+
children: error
|
|
37508
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
37509
|
+
title: "Retry",
|
|
37510
|
+
bgColor: "bg-gray-700",
|
|
37511
|
+
hoverBackgroundColor: "hover:bg-gray-600",
|
|
37512
|
+
textSize: "text-sm",
|
|
37513
|
+
padding: "py-1 px-3",
|
|
37514
|
+
onClick: retry
|
|
37515
|
+
})]
|
|
37516
|
+
});
|
|
37517
|
+
} else if (packages.length === 0) {
|
|
37518
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
37519
|
+
className: "px-4 py-8 text-center",
|
|
37520
|
+
children: /*#__PURE__*/jsx(Paragraph, {
|
|
37521
|
+
className: "text-sm opacity-50",
|
|
37522
|
+
children: searchQuery ? "No themes match your search." : "No theme packages available."
|
|
37523
|
+
})
|
|
37524
|
+
});
|
|
37525
|
+
} else {
|
|
37526
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
37527
|
+
className: "space-y-1",
|
|
37528
|
+
children: packages.map(function (pkg) {
|
|
37529
|
+
var colors = pkg.colors || {};
|
|
37530
|
+
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
37531
|
+
icon: /*#__PURE__*/jsx("div", {
|
|
37532
|
+
className: "flex items-center gap-0.5",
|
|
37533
|
+
children: [colors.primary, colors.secondary, colors.tertiary].filter(Boolean).map(function (color, i) {
|
|
37534
|
+
return /*#__PURE__*/jsx("div", {
|
|
37535
|
+
className: "h-3 w-3 rounded-full border border-white/20",
|
|
37536
|
+
style: {
|
|
37537
|
+
backgroundColor: color
|
|
37538
|
+
}
|
|
37539
|
+
}, i);
|
|
37540
|
+
})
|
|
37541
|
+
}),
|
|
37542
|
+
onClick: function onClick() {
|
|
37543
|
+
return setSelectedPackageName(pkg.name);
|
|
37544
|
+
},
|
|
37545
|
+
children: pkg.displayName || pkg.name
|
|
37546
|
+
}, pkg.name);
|
|
37547
|
+
})
|
|
37548
|
+
});
|
|
37549
|
+
}
|
|
37550
|
+
return /*#__PURE__*/jsxs("div", {
|
|
37551
|
+
className: "flex flex-col flex-1 min-h-0 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
37552
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
37553
|
+
className: "flex-shrink-0 px-4 pt-4",
|
|
37554
|
+
children: /*#__PURE__*/jsxs("button", {
|
|
37555
|
+
type: "button",
|
|
37556
|
+
onClick: onBack,
|
|
37557
|
+
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
37558
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37559
|
+
icon: "arrow-left",
|
|
37560
|
+
className: "h-3 w-3"
|
|
37561
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37562
|
+
children: "Back"
|
|
37563
|
+
})]
|
|
37564
|
+
})
|
|
37565
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37566
|
+
className: "flex-shrink-0 px-4 py-3",
|
|
37567
|
+
children: /*#__PURE__*/jsx(SearchInput, {
|
|
37568
|
+
value: searchQuery,
|
|
37569
|
+
onChange: setSearchQuery,
|
|
37570
|
+
placeholder: "Search themes...",
|
|
37571
|
+
inputClassName: "py-1.5 text-xs"
|
|
37572
|
+
})
|
|
37573
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37574
|
+
className: "flex-1 min-h-0 overflow-y-auto px-2",
|
|
37575
|
+
children: listBody
|
|
37576
|
+
}), !isLoading && !error && packages.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
37577
|
+
className: "flex-shrink-0 px-4 py-2 text-[10px] opacity-40 border-t border-white/10",
|
|
37578
|
+
children: [packages.length, " theme", packages.length !== 1 ? "s" : ""]
|
|
37579
|
+
})]
|
|
37580
|
+
});
|
|
37581
|
+
};
|
|
37582
|
+
|
|
37583
|
+
function ownKeys$5(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; }
|
|
37584
|
+
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37585
|
+
var ThemesSection = function ThemesSection(_ref) {
|
|
37586
|
+
var _ref$onOpenThemeEdito = _ref.onOpenThemeEditor,
|
|
37587
|
+
onOpenThemeEditor = _ref$onOpenThemeEdito === void 0 ? null : _ref$onOpenThemeEdito,
|
|
37588
|
+
_ref$dashApi = _ref.dashApi,
|
|
37589
|
+
dashApi = _ref$dashApi === void 0 ? null : _ref$dashApi,
|
|
37590
|
+
_ref$credentials = _ref.credentials,
|
|
37591
|
+
credentials = _ref$credentials === void 0 ? null : _ref$credentials,
|
|
37592
|
+
_ref$createRequested = _ref.createRequested,
|
|
37593
|
+
createRequested = _ref$createRequested === void 0 ? false : _ref$createRequested,
|
|
37594
|
+
_ref$onCreateAcknowle = _ref.onCreateAcknowledged,
|
|
37595
|
+
onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle;
|
|
37596
|
+
var _useContext = useContext(ThemeContext),
|
|
37597
|
+
themes = _useContext.themes,
|
|
37598
|
+
currentThemeKey = _useContext.themeKey,
|
|
37599
|
+
themeVariant = _useContext.themeVariant,
|
|
37600
|
+
changeCurrentTheme = _useContext.changeCurrentTheme,
|
|
37601
|
+
changeThemeVariant = _useContext.changeThemeVariant,
|
|
37602
|
+
changeThemesForApplication = _useContext.changeThemesForApplication,
|
|
37603
|
+
currentTheme = _useContext.currentTheme;
|
|
37604
|
+
var _useState = useState(currentThemeKey),
|
|
37605
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37606
|
+
selectedThemeKey = _useState2[0],
|
|
37607
|
+
setSelectedThemeKey = _useState2[1];
|
|
37608
|
+
var _useState3 = useState(GENERATE_MODES.NONE),
|
|
37609
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
37610
|
+
generateMode = _useState4[0],
|
|
37611
|
+
setGenerateMode = _useState4[1];
|
|
37612
|
+
var _useState5 = useState(""),
|
|
37613
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
37614
|
+
wizardName = _useState6[0],
|
|
37615
|
+
setWizardName = _useState6[1];
|
|
37616
|
+
var _useState7 = useState(null),
|
|
37617
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
37618
|
+
wizardMethod = _useState8[0],
|
|
37619
|
+
setWizardMethod = _useState8[1];
|
|
37620
|
+
var _useState9 = useState(null),
|
|
37621
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
37622
|
+
wizardTheme = _useState0[0],
|
|
37623
|
+
setWizardTheme = _useState0[1];
|
|
37624
|
+
// null | "marketplace"
|
|
37625
|
+
var _useState1 = useState(null),
|
|
37626
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
37627
|
+
installMode = _useState10[0],
|
|
37628
|
+
setInstallMode = _useState10[1];
|
|
37629
|
+
var themeEntries = themes ? Object.entries(themes) : [];
|
|
37630
|
+
var appId = credentials === null || credentials === void 0 ? void 0 : credentials.appId;
|
|
37631
|
+
var rowStyles = getStylesForItem(themeObjects.PANEL_HEADER, currentTheme, {
|
|
37632
|
+
grow: false
|
|
37633
|
+
});
|
|
37634
|
+
|
|
37635
|
+
// Handle create request from parent — enter wizard mode
|
|
37636
|
+
var prevCreateRequested = useRef(false);
|
|
37637
|
+
useEffect(function () {
|
|
37638
|
+
if (createRequested && !prevCreateRequested.current) {
|
|
37639
|
+
setGenerateMode(GENERATE_MODES.WIZARD);
|
|
37640
|
+
setWizardName("");
|
|
37641
|
+
setWizardMethod(null);
|
|
37642
|
+
setWizardTheme(null);
|
|
37643
|
+
setSelectedThemeKey(null);
|
|
37644
|
+
setInstallMode(null);
|
|
37645
|
+
}
|
|
37646
|
+
prevCreateRequested.current = createRequested;
|
|
37647
|
+
if (createRequested && onCreateAcknowledged) {
|
|
37648
|
+
onCreateAcknowledged();
|
|
37649
|
+
}
|
|
37650
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37651
|
+
}, [createRequested]);
|
|
37652
|
+
function handleCreateFromPreset(preset) {
|
|
37653
|
+
if (!dashApi || !appId) return;
|
|
37654
|
+
var key = preset.id || "theme-".concat(Date.now());
|
|
37655
|
+
preset.id = key;
|
|
37656
|
+
saveAndSelectTheme(key, preset);
|
|
37657
|
+
setGenerateMode(GENERATE_MODES.NONE);
|
|
37658
|
+
}
|
|
37659
|
+
function handleCreateFromHarmony(theme) {
|
|
37660
|
+
if (!dashApi || !appId) return;
|
|
37661
|
+
var key = theme.id;
|
|
37662
|
+
saveAndSelectTheme(key, theme);
|
|
37663
|
+
setGenerateMode(GENERATE_MODES.NONE);
|
|
37664
|
+
}
|
|
37665
|
+
function handleWizardComplete() {
|
|
37666
|
+
if (!wizardTheme || !wizardName.trim()) return;
|
|
37667
|
+
if (!dashApi || !appId) return;
|
|
37668
|
+
var key = wizardTheme.id || "theme-".concat(Date.now());
|
|
37669
|
+
var finalTheme = _objectSpread$5(_objectSpread$5({}, wizardTheme), {}, {
|
|
37670
|
+
id: key,
|
|
37671
|
+
name: wizardName.trim()
|
|
37672
|
+
});
|
|
37673
|
+
saveAndSelectTheme(key, finalTheme);
|
|
37674
|
+
}
|
|
37675
|
+
function saveAndSelectTheme(key, rawTheme) {
|
|
37676
|
+
dashApi.saveTheme(appId, key, rawTheme, function (e, message) {
|
|
37677
|
+
if (message && message.themes) {
|
|
37678
|
+
changeThemesForApplication(message.themes);
|
|
37679
|
+
}
|
|
37680
|
+
setSelectedThemeKey(key);
|
|
37681
|
+
setGenerateMode(GENERATE_MODES.NONE);
|
|
37682
|
+
}, function (e, err) {
|
|
37683
|
+
});
|
|
37684
|
+
}
|
|
37685
|
+
function handleDeleteTheme(key) {
|
|
36513
37686
|
if (!dashApi || !appId) return;
|
|
36514
37687
|
if (key === currentThemeKey) {
|
|
36515
37688
|
var _themeEntries$find;
|
|
@@ -36543,63 +37716,109 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
36543
37716
|
function handleEdit() {
|
|
36544
37717
|
if (onOpenThemeEditor) onOpenThemeEditor();
|
|
36545
37718
|
}
|
|
36546
|
-
var rowStyles = getStylesForItem(themeObjects.PANEL_HEADER, currentTheme, {
|
|
36547
|
-
grow: false
|
|
36548
|
-
});
|
|
36549
37719
|
var listContent = /*#__PURE__*/jsxs("div", {
|
|
36550
|
-
className: "flex flex-col",
|
|
37720
|
+
className: "flex flex-col h-full",
|
|
36551
37721
|
children: [/*#__PURE__*/jsxs("div", {
|
|
36552
|
-
className: "flex flex
|
|
37722
|
+
className: "flex-shrink-0 flex flex-col gap-2 px-3 py-2 ".concat(rowStyles.backgroundColor || ""),
|
|
36553
37723
|
children: [/*#__PURE__*/jsxs("div", {
|
|
36554
|
-
className: "flex flex-row items-center
|
|
36555
|
-
children: [/*#__PURE__*/
|
|
36556
|
-
|
|
36557
|
-
|
|
36558
|
-
|
|
36559
|
-
|
|
36560
|
-
|
|
36561
|
-
|
|
36562
|
-
|
|
36563
|
-
|
|
37724
|
+
className: "flex flex-row items-center justify-between",
|
|
37725
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37726
|
+
className: "flex flex-row items-center gap-2",
|
|
37727
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37728
|
+
icon: "sun",
|
|
37729
|
+
className: "h-3 w-3 opacity-50"
|
|
37730
|
+
}), /*#__PURE__*/jsx(Switch, {
|
|
37731
|
+
checked: themeVariant === "dark",
|
|
37732
|
+
onChange: handleToggleVariant
|
|
37733
|
+
}), /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37734
|
+
icon: "moon",
|
|
37735
|
+
className: "h-3 w-3 opacity-50"
|
|
37736
|
+
})]
|
|
37737
|
+
}), /*#__PURE__*/jsx("span", {
|
|
37738
|
+
className: "text-xs opacity-50",
|
|
37739
|
+
children: themeVariant === "dark" ? "Dark" : "Light"
|
|
36564
37740
|
})]
|
|
36565
|
-
}), /*#__PURE__*/jsx("
|
|
36566
|
-
className: "
|
|
36567
|
-
children:
|
|
36568
|
-
|
|
36569
|
-
|
|
36570
|
-
|
|
36571
|
-
|
|
36572
|
-
|
|
36573
|
-
|
|
36574
|
-
|
|
36575
|
-
|
|
36576
|
-
|
|
36577
|
-
|
|
36578
|
-
|
|
36579
|
-
|
|
36580
|
-
|
|
36581
|
-
|
|
36582
|
-
|
|
36583
|
-
|
|
36584
|
-
|
|
36585
|
-
|
|
36586
|
-
|
|
36587
|
-
|
|
36588
|
-
},
|
|
36589
|
-
|
|
36590
|
-
className: isSelected ? "bg-white/10 opacity-100" : "",
|
|
36591
|
-
children: theme.name || key
|
|
36592
|
-
}, key);
|
|
36593
|
-
}), themeEntries.length === 0 && /*#__PURE__*/jsx("span", {
|
|
36594
|
-
className: "text-sm opacity-40 py-8 text-center",
|
|
36595
|
-
children: "No themes available"
|
|
37741
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37742
|
+
className: "flex bg-white/5 rounded-md p-0.5",
|
|
37743
|
+
children: [{
|
|
37744
|
+
key: "themes",
|
|
37745
|
+
label: "My Themes"
|
|
37746
|
+
}, {
|
|
37747
|
+
key: "marketplace",
|
|
37748
|
+
label: "Marketplace"
|
|
37749
|
+
}].map(function (tab) {
|
|
37750
|
+
var currentTab = installMode === "marketplace" ? "marketplace" : "themes";
|
|
37751
|
+
return /*#__PURE__*/jsx("button", {
|
|
37752
|
+
type: "button",
|
|
37753
|
+
onClick: function onClick() {
|
|
37754
|
+
if (tab.key === "marketplace") {
|
|
37755
|
+
setInstallMode("marketplace");
|
|
37756
|
+
setSelectedThemeKey(null);
|
|
37757
|
+
setGenerateMode(GENERATE_MODES.NONE);
|
|
37758
|
+
} else {
|
|
37759
|
+
setInstallMode(null);
|
|
37760
|
+
}
|
|
37761
|
+
},
|
|
37762
|
+
className: "flex-1 px-2 py-0.5 rounded text-[11px] transition-colors ".concat(currentTab === tab.key ? "bg-white/10 font-medium opacity-90" : "opacity-50 hover:opacity-70"),
|
|
37763
|
+
children: tab.label
|
|
37764
|
+
}, tab.key);
|
|
37765
|
+
})
|
|
36596
37766
|
})]
|
|
37767
|
+
}), /*#__PURE__*/jsx("div", {
|
|
37768
|
+
className: "flex-1 overflow-y-auto min-h-0",
|
|
37769
|
+
children: /*#__PURE__*/jsxs(Sidebar.Content, {
|
|
37770
|
+
children: [themeEntries.map(function (_ref4) {
|
|
37771
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
37772
|
+
key = _ref5[0],
|
|
37773
|
+
theme = _ref5[1];
|
|
37774
|
+
var isActive = key === currentThemeKey;
|
|
37775
|
+
var isSelected = selectedThemeKey === key && generateMode === GENERATE_MODES.NONE && installMode !== "marketplace";
|
|
37776
|
+
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
37777
|
+
icon: isActive ? /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37778
|
+
icon: "check",
|
|
37779
|
+
className: "h-3 w-3 text-green-500"
|
|
37780
|
+
}) : /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
37781
|
+
icon: "palette",
|
|
37782
|
+
className: "h-3.5 w-3.5"
|
|
37783
|
+
}),
|
|
37784
|
+
active: isSelected,
|
|
37785
|
+
onClick: function onClick() {
|
|
37786
|
+
setSelectedThemeKey(key);
|
|
37787
|
+
setGenerateMode(GENERATE_MODES.NONE);
|
|
37788
|
+
setInstallMode(null);
|
|
37789
|
+
},
|
|
37790
|
+
badge: isActive ? "active" : null,
|
|
37791
|
+
className: isSelected ? "bg-white/10 opacity-100" : "",
|
|
37792
|
+
children: theme.name || key
|
|
37793
|
+
}, key);
|
|
37794
|
+
}), themeEntries.length === 0 && /*#__PURE__*/jsx("span", {
|
|
37795
|
+
className: "text-sm opacity-40 py-8 text-center",
|
|
37796
|
+
children: "No themes available"
|
|
37797
|
+
})]
|
|
37798
|
+
})
|
|
36597
37799
|
})]
|
|
36598
37800
|
});
|
|
36599
37801
|
|
|
36600
37802
|
// Determine detail content based on mode
|
|
36601
37803
|
var detailContent = null;
|
|
36602
|
-
if (
|
|
37804
|
+
if (installMode === "marketplace") {
|
|
37805
|
+
detailContent = /*#__PURE__*/jsx(DiscoverThemesDetail, {
|
|
37806
|
+
onBack: function onBack() {
|
|
37807
|
+
setInstallMode(null);
|
|
37808
|
+
},
|
|
37809
|
+
appId: appId,
|
|
37810
|
+
onInstallComplete: function onInstallComplete() {
|
|
37811
|
+
// Refresh themes after install
|
|
37812
|
+
if (dashApi && appId) {
|
|
37813
|
+
dashApi.listThemes(appId, function (e, message) {
|
|
37814
|
+
if (message && message.themes) {
|
|
37815
|
+
changeThemesForApplication(message.themes);
|
|
37816
|
+
}
|
|
37817
|
+
});
|
|
37818
|
+
}
|
|
37819
|
+
}
|
|
37820
|
+
});
|
|
37821
|
+
} else if (generateMode === GENERATE_MODES.WIZARD) {
|
|
36603
37822
|
detailContent = /*#__PURE__*/jsx(ThemeQuickCreate, {
|
|
36604
37823
|
wizardName: wizardName,
|
|
36605
37824
|
setWizardName: setWizardName,
|
|
@@ -36625,7 +37844,8 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
36625
37844
|
themeVariant: themeVariant,
|
|
36626
37845
|
onActivate: handleActivate,
|
|
36627
37846
|
onOpenThemeEditor: handleEdit,
|
|
36628
|
-
onDelete: handleDeleteTheme
|
|
37847
|
+
onDelete: handleDeleteTheme,
|
|
37848
|
+
appId: appId
|
|
36629
37849
|
});
|
|
36630
37850
|
}
|
|
36631
37851
|
return /*#__PURE__*/jsx(SectionLayout, {
|