var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
import * as plugins from '../../plugins.js';
import { DeesElement, property, html, customElement, css, cssManager, unsafeCSS, state, } from '@design.estate/dees-element';
import * as sharedStyles from '../../styles/shared.styles.js';
import { demoFunc } from './upladmin-statuspage-config.demo.js';
let UpladminStatuspageConfig = (() => {
let _classDecorators = [customElement('upladmin-statuspage-config')];
let _classDescriptor;
let _classExtraInitializers = [];
let _classThis;
let _classSuper = DeesElement;
let _config_decorators;
let _config_initializers = [];
let _config_extraInitializers = [];
let _loading_decorators;
let _loading_initializers = [];
let _loading_extraInitializers = [];
let _formData_decorators;
let _formData_initializers = [];
let _formData_extraInitializers = [];
let _activeSection_decorators;
let _activeSection_initializers = [];
let _activeSection_extraInitializers = [];
let _hasChanges_decorators;
let _hasChanges_initializers = [];
let _hasChanges_extraInitializers = [];
var UpladminStatuspageConfig = class extends _classSuper {
static { _classThis = this; }
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
_config_decorators = [property({ type: Object })];
_loading_decorators = [property({ type: Boolean })];
_formData_decorators = [state()];
_activeSection_decorators = [state()];
_hasChanges_decorators = [state()];
__esDecorate(this, null, _config_decorators, { kind: "accessor", name: "config", static: false, private: false, access: { has: obj => "config" in obj, get: obj => obj.config, set: (obj, value) => { obj.config = value; } }, metadata: _metadata }, _config_initializers, _config_extraInitializers);
__esDecorate(this, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading, set: (obj, value) => { obj.loading = value; } }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
__esDecorate(this, null, _formData_decorators, { kind: "accessor", name: "formData", static: false, private: false, access: { has: obj => "formData" in obj, get: obj => obj.formData, set: (obj, value) => { obj.formData = value; } }, metadata: _metadata }, _formData_initializers, _formData_extraInitializers);
__esDecorate(this, null, _activeSection_decorators, { kind: "accessor", name: "activeSection", static: false, private: false, access: { has: obj => "activeSection" in obj, get: obj => obj.activeSection, set: (obj, value) => { obj.activeSection = value; } }, metadata: _metadata }, _activeSection_initializers, _activeSection_extraInitializers);
__esDecorate(this, null, _hasChanges_decorators, { kind: "accessor", name: "hasChanges", static: false, private: false, access: { has: obj => "hasChanges" in obj, get: obj => obj.hasChanges, set: (obj, value) => { obj.hasChanges = value; } }, metadata: _metadata }, _hasChanges_initializers, _hasChanges_extraInitializers);
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
UpladminStatuspageConfig = _classThis = _classDescriptor.value;
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static demo = demoFunc;
#config_accessor_storage = __runInitializers(this, _config_initializers, {});
get config() { return this.#config_accessor_storage; }
set config(value) { this.#config_accessor_storage = value; }
#loading_accessor_storage = (__runInitializers(this, _config_extraInitializers), __runInitializers(this, _loading_initializers, false));
get loading() { return this.#loading_accessor_storage; }
set loading(value) { this.#loading_accessor_storage = value; }
#formData_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _formData_initializers, {}));
get formData() { return this.#formData_accessor_storage; }
set formData(value) { this.#formData_accessor_storage = value; }
#activeSection_accessor_storage = (__runInitializers(this, _formData_extraInitializers), __runInitializers(this, _activeSection_initializers, 'branding'));
get activeSection() { return this.#activeSection_accessor_storage; }
set activeSection(value) { this.#activeSection_accessor_storage = value; }
#hasChanges_accessor_storage = (__runInitializers(this, _activeSection_extraInitializers), __runInitializers(this, _hasChanges_initializers, false));
get hasChanges() { return this.#hasChanges_accessor_storage; }
set hasChanges(value) { this.#hasChanges_accessor_storage = value; }
static styles = [
plugins.domtools.elementBasic.staticStyles,
sharedStyles.commonStyles,
css `
:host {
display: block;
font-family: ${unsafeCSS(sharedStyles.fonts.base)};
}
.config-container {
display: grid;
grid-template-columns: 220px 1fr;
gap: ${unsafeCSS(sharedStyles.spacing.lg)};
min-height: 500px;
}
@media (max-width: 768px) {
.config-container {
grid-template-columns: 1fr;
}
}
.config-nav {
background: ${sharedStyles.colors.background.secondary};
border: 1px solid ${sharedStyles.colors.border.default};
border-radius: ${unsafeCSS(sharedStyles.borderRadius.lg)};
padding: ${unsafeCSS(sharedStyles.spacing.sm)};
height: fit-content;
}
.nav-item {
display: flex;
align-items: center;
gap: 12px;
width: 100%;
padding: 14px 16px;
font-size: 14px;
font-weight: 500;
font-family: ${unsafeCSS(sharedStyles.fonts.base)};
color: ${sharedStyles.colors.text.secondary};
background: transparent;
border: none;
border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
cursor: pointer;
text-align: left;
transition: all ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
}
.nav-item:hover {
background: ${sharedStyles.colors.background.muted};
color: ${sharedStyles.colors.text.primary};
}
.nav-item.active {
background: ${sharedStyles.colors.accent.primary};
color: white;
}
.nav-item.active dees-icon {
--icon-color: white;
}
.nav-item dees-icon {
--icon-color: ${sharedStyles.colors.text.muted};
transition: color ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
}
.nav-item:hover dees-icon {
--icon-color: ${sharedStyles.colors.text.primary};
}
.config-content {
background: ${sharedStyles.colors.background.secondary};
border: 1px solid ${sharedStyles.colors.border.default};
border-radius: ${unsafeCSS(sharedStyles.borderRadius.lg)};
overflow: hidden;
}
.content-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.lg)};
border-bottom: 1px solid ${sharedStyles.colors.border.default};
background: ${sharedStyles.colors.background.muted};
}
.content-title {
font-size: 16px;
font-weight: 600;
color: ${sharedStyles.colors.text.primary};
}
.content-subtitle {
font-size: 13px;
color: ${sharedStyles.colors.text.muted};
margin-top: 2px;
}
.save-indicator {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
font-size: 12px;
font-weight: 500;
color: ${sharedStyles.colors.accent.warning};
background: ${cssManager.bdTheme('rgba(234, 179, 8, 0.1)', 'rgba(234, 179, 8, 0.15)')};
border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
}
.save-indicator dees-icon {
--icon-color: ${sharedStyles.colors.accent.warning};
}
.content-body {
padding: ${unsafeCSS(sharedStyles.spacing.lg)};
}
dees-form {
display: contents;
}
.form-section {
margin-bottom: ${unsafeCSS(sharedStyles.spacing.xl)};
}
.form-section:last-child {
margin-bottom: 0;
}
.section-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 14px;
font-weight: 600;
color: ${sharedStyles.colors.text.primary};
margin-bottom: ${unsafeCSS(sharedStyles.spacing.md)};
padding-bottom: ${unsafeCSS(sharedStyles.spacing.xs)};
border-bottom: 1px solid ${sharedStyles.colors.border.light};
}
.section-title dees-icon {
--icon-color: ${sharedStyles.colors.text.muted};
}
.form-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: ${unsafeCSS(sharedStyles.spacing.md)};
}
.content-actions {
display: flex;
justify-content: flex-end;
gap: ${unsafeCSS(sharedStyles.spacing.sm)};
padding: ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.lg)};
border-top: 1px solid ${sharedStyles.colors.border.default};
background: ${sharedStyles.colors.background.muted};
}
.theme-options {
display: flex;
gap: ${unsafeCSS(sharedStyles.spacing.sm)};
}
.theme-option {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
padding: 18px;
background: ${sharedStyles.colors.background.primary};
border: 2px solid ${sharedStyles.colors.border.default};
border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
cursor: pointer;
transition: all ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
}
.theme-option:hover {
border-color: ${sharedStyles.colors.border.strong};
}
.theme-option.selected {
border-color: ${sharedStyles.colors.accent.primary};
background: ${cssManager.bdTheme('rgba(59, 130, 246, 0.05)', 'rgba(96, 165, 250, 0.1)')};
}
.theme-option input {
display: none;
}
.theme-preview {
width: 56px;
height: 36px;
border-radius: 6px;
border: 1px solid ${sharedStyles.colors.border.default};
overflow: hidden;
}
.theme-preview.light {
background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
}
.theme-preview.dark {
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
}
.theme-preview.auto {
background: linear-gradient(135deg, #f8fafc 0%, #f8fafc 50%, #1e293b 50%, #1e293b 100%);
}
.theme-label {
font-size: 13px;
font-weight: 500;
color: ${sharedStyles.colors.text.primary};
}
.logo-preview {
display: flex;
align-items: center;
gap: ${unsafeCSS(sharedStyles.spacing.md)};
padding: ${unsafeCSS(sharedStyles.spacing.md)};
background: ${sharedStyles.colors.background.primary};
border: 1px solid ${sharedStyles.colors.border.default};
border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
margin-top: ${unsafeCSS(sharedStyles.spacing.sm)};
}
.logo-preview img {
max-width: 140px;
max-height: 48px;
object-fit: contain;
}
.logo-placeholder {
display: flex;
align-items: center;
gap: 8px;
color: ${sharedStyles.colors.text.muted};
font-size: 13px;
}
.logo-placeholder dees-icon {
--icon-color: ${sharedStyles.colors.text.muted};
opacity: 0.5;
}
.toggle-row {
display: flex;
align-items: center;
gap: ${unsafeCSS(sharedStyles.spacing.md)};
padding: ${unsafeCSS(sharedStyles.spacing.sm)} 0;
}
.toggle-label {
flex: 1;
}
.toggle-label-text {
font-size: 14px;
font-weight: 500;
color: ${sharedStyles.colors.text.primary};
}
.toggle-label-hint {
font-size: 12px;
color: ${sharedStyles.colors.text.muted};
margin-top: 2px;
}
/* Style dees-input components */
dees-input-text,
dees-input-dropdown {
--dees-input-background: ${sharedStyles.colors.background.primary};
--dees-input-border-color: ${sharedStyles.colors.border.default};
}
`
];
async connectedCallback() {
await super.connectedCallback();
this.formData = { ...this.config };
}
updated(changedProperties) {
if (changedProperties.has('config')) {
this.formData = { ...this.config };
this.hasChanges = false;
}
}
render() {
const sections = [
{ id: 'branding', icon: 'lucide:Palette', label: 'Branding', subtitle: 'Logo, company name, colors' },
{ id: 'urls', icon: 'lucide:Link', label: 'URLs', subtitle: 'Links and endpoints' },
{ id: 'behavior', icon: 'lucide:Settings', label: 'Behavior', subtitle: 'Refresh, notifications, history' },
{ id: 'advanced', icon: 'lucide:Wrench', label: 'Advanced', subtitle: 'API, timezone, language' },
];
return html `
${this.renderSection()}
Reset
${this.loading ? html `` : html ``}
Save Changes
`;
}
renderSection() {
switch (this.activeSection) {
case 'branding':
return this.renderBrandingSection();
case 'urls':
return this.renderUrlsSection();
case 'behavior':
return this.renderBehaviorSection();
case 'advanced':
return this.renderAdvancedSection();
default:
return html ``;
}
}
renderBrandingSection() {
const themeOptions = [
{ value: 'light', label: 'Light', icon: 'lucide:Sun' },
{ value: 'dark', label: 'Dark', icon: 'lucide:Moon' },
{ value: 'auto', label: 'Auto', icon: 'lucide:Monitor' },
];
return html `
`;
}
renderUrlsSection() {
return html `
`;
}
renderBehaviorSection() {
return html `
`;
}
renderAdvancedSection() {
const timezoneOptions = [
{ key: 'UTC', option: 'UTC', payload: null },
{ key: 'America/New_York', option: 'Eastern Time (US)', payload: null },
{ key: 'America/Los_Angeles', option: 'Pacific Time (US)', payload: null },
{ key: 'Europe/London', option: 'London', payload: null },
{ key: 'Europe/Berlin', option: 'Berlin', payload: null },
{ key: 'Asia/Tokyo', option: 'Tokyo', payload: null },
{ key: 'Asia/Shanghai', option: 'Shanghai', payload: null },
];
const dateFormatOptions = [
{ key: 'relative', option: 'Relative (2 hours ago)', payload: null },
{ key: 'absolute', option: 'Absolute (Dec 23, 2024 14:30)', payload: null },
{ key: 'iso', option: 'ISO (2024-12-23T14:30:00)', payload: null },
];
const languageOptions = [
{ key: 'en', option: 'English', payload: null },
{ key: 'de', option: 'German', payload: null },
{ key: 'fr', option: 'French', payload: null },
{ key: 'es', option: 'Spanish', payload: null },
{ key: 'ja', option: 'Japanese', payload: null },
{ key: 'zh', option: 'Chinese', payload: null },
];
return html `
`;
}
handleTextChange(name, value) {
this.formData = { ...this.formData, [name]: value };
this.hasChanges = true;
}
handleNumberChange(name, value) {
this.formData = { ...this.formData, [name]: parseInt(value, 10) || 0 };
this.hasChanges = true;
}
handleBooleanChange(name, value) {
this.formData = { ...this.formData, [name]: value };
this.hasChanges = true;
}
handleDropdownChange(name, value) {
this.formData = { ...this.formData, [name]: value };
this.hasChanges = true;
}
handleThemeChange(theme) {
this.formData = { ...this.formData, theme };
this.hasChanges = true;
}
handleLogoError(e) {
const img = e.target;
img.style.display = 'none';
}
handleSave() {
this.dispatchEvent(new CustomEvent('configSave', {
detail: { config: { ...this.formData } },
bubbles: true,
composed: true
}));
}
handleReset() {
this.formData = { ...this.config };
this.hasChanges = false;
}
setConfig(config) {
this.formData = { ...config };
this.hasChanges = false;
}
constructor() {
super(...arguments);
__runInitializers(this, _hasChanges_extraInitializers);
}
static {
__runInitializers(_classThis, _classExtraInitializers);
}
};
return UpladminStatuspageConfig = _classThis;
})();
export { UpladminStatuspageConfig };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsYWRtaW4tc3RhdHVzcGFnZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvdXBsYWRtaW4tc3RhdHVzcGFnZS1jb25maWcvdXBsYWRtaW4tc3RhdHVzcGFnZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGFBQWEsRUFFYixHQUFHLEVBQ0gsVUFBVSxFQUNWLFNBQVMsRUFDVCxLQUFLLEdBQ04sTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssWUFBWSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztJQVNuRCx3QkFBd0I7NEJBRHBDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O3dDQUFuQixTQUFRLFdBQVc7Ozs7a0NBR3RELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO29DQUczQixLQUFLLEVBQUU7eUNBR1AsS0FBSyxFQUFFO3NDQUdQLEtBQUssRUFBRTtZQVhSLHVLQUFTLE1BQU0sNkJBQU4sTUFBTSx1RkFBeUI7WUFHeEMsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQUdsQyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQXlCO1lBRzFDLDRMQUFTLGFBQWEsNkJBQWIsYUFBYSxxR0FBc0I7WUFHNUMsbUxBQVMsVUFBVSw2QkFBVixVQUFVLCtGQUFrQjtZQWhCdkMsNktBcXJCQzs7OztRQXByQlEsTUFBTSxDQUFDLElBQUks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