var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Component } from '@angular/core';
import { BaseResourceComponent } from '@memberjunction/ng-shared';
import { RegisterClass } from '@memberjunction/global';
import { UserInfoEngine, InstanceConfigEngine } from '@memberjunction/core-entities';
import { DevToolsPrefs } from './dev-tools-prefs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@memberjunction/ng-ui-components";
function SettingsExplorerComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
    const _r1 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 20);
    i0.ɵɵlistener("click", function SettingsExplorerComponent_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SearchQuery = ""); });
    i0.ɵɵelement(1, "i", 21);
    i0.ɵɵelementEnd();
} }
function SettingsExplorerComponent_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "i", 22);
    i0.ɵɵelementStart(1, "span");
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1("No matches for \"", ctx_r1.SearchQuery, "\"");
} }
function SettingsExplorerComponent_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "i", 23);
    i0.ɵɵelementStart(1, "span");
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1("No ", ctx_r1.Scope === "user" ? "user settings" : "instance configurations", " are defined.");
} }
function SettingsExplorerComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 16);
    i0.ɵɵconditionalCreate(1, SettingsExplorerComponent_Conditional_22_Conditional_1_Template, 3, 1)(2, SettingsExplorerComponent_Conditional_22_Conditional_2_Template, 3, 1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r1.SearchQuery ? 1 : 2);
} }
function SettingsExplorerComponent_Conditional_23_For_11_Conditional_4_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 30);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const row_r4 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(row_r4.meta);
} }
function SettingsExplorerComponent_Conditional_23_For_11_Template(rf, ctx) { if (rf & 1) {
    const _r3 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "tr", 28);
    i0.ɵɵlistener("click", function SettingsExplorerComponent_Conditional_23_For_11_Template_tr_click_0_listener() { const row_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnRowClick(row_r4)); });
    i0.ɵɵelementStart(1, "td", 29)(2, "code");
    i0.ɵɵtext(3);
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(4, SettingsExplorerComponent_Conditional_23_For_11_Conditional_4_Template, 2, 1, "div", 30);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "td", 31)(6, "span", 32);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(8, "td", 33);
    i0.ɵɵtext(9);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const row_r4 = ctx.$implicit;
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵclassProp("se-row--selected", (ctx_r1.Selected == null ? null : ctx_r1.Selected.key) === row_r4.key);
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate(row_r4.key);
    i0.ɵɵadvance();
    i0.ɵɵconditional(row_r4.meta ? 4 : -1);
    i0.ɵɵadvance(2);
    i0.ɵɵclassMap("se-type-pill--" + row_r4.valueType);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" ", row_r4.valueType, " ");
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate(row_r4.preview);
} }
function SettingsExplorerComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "table", 17)(1, "thead")(2, "tr")(3, "th", 24);
    i0.ɵɵtext(4, "Key");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "th", 25);
    i0.ɵɵtext(6, "Type");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(7, "th", 26);
    i0.ɵɵtext(8, "Value");
    i0.ɵɵelementEnd()()();
    i0.ɵɵelementStart(9, "tbody");
    i0.ɵɵrepeaterCreate(10, SettingsExplorerComponent_Conditional_23_For_11_Template, 10, 8, "tr", 27, i0.ɵɵcomponentInstance().TrackByKey, true);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(10);
    i0.ɵɵrepeater(ctx_r1.FilteredRows);
} }
function SettingsExplorerComponent_Conditional_24_Conditional_5_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 36);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.Selected.meta);
} }
function SettingsExplorerComponent_Conditional_24_Conditional_16_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 44);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1("Updated ", ctx_r1.Selected.updated.toLocaleString());
} }
function SettingsExplorerComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
    const _r5 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "aside", 18)(1, "div", 34)(2, "div")(3, "div", 35);
    i0.ɵɵtext(4);
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(5, SettingsExplorerComponent_Conditional_24_Conditional_5_Template, 2, 1, "div", 36);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "div", 37)(7, "button", 38);
    i0.ɵɵlistener("click", function SettingsExplorerComponent_Conditional_24_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCopySelected()); });
    i0.ɵɵelement(8, "i", 39);
    i0.ɵɵtext(9, " Copy ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(10, "button", 40);
    i0.ɵɵlistener("click", function SettingsExplorerComponent_Conditional_24_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Selected = null); });
    i0.ɵɵelement(11, "i", 41);
    i0.ɵɵelementEnd()()();
    i0.ɵɵelementStart(12, "div", 42)(13, "div", 43)(14, "span", 32);
    i0.ɵɵtext(15);
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(16, SettingsExplorerComponent_Conditional_24_Conditional_16_Template, 2, 1, "span", 44);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(17, "pre", 45)(18, "code");
    i0.ɵɵtext(19);
    i0.ɵɵelementEnd()()()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate(ctx_r1.Selected.key);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r1.Selected.meta ? 5 : -1);
    i0.ɵɵadvance(9);
    i0.ɵɵclassMap("se-type-pill--" + ctx_r1.Selected.valueType);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.Selected.valueType);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r1.Selected.updated ? 16 : -1);
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate(ctx_r1.FormattedSelected || "(empty)");
} }
/**
 * Settings Explorer — read-only browser for both `MJ: User Settings` (the
 * current user's per-app key/value bag) and `MJ: Instance Configurations`
 * (instance-level feature flags). Auto-detects JSON values, formats them
 * nicely, supports search + copy.
 */
let SettingsExplorerComponent = class SettingsExplorerComponent extends BaseResourceComponent {
    cdr;
    Scope = 'user';
    UserRows = [];
    InstanceRows = [];
    SearchQuery = '';
    Selected = null;
    LastRefreshed = new Date();
    Counts = { user: 0, instance: 0 };
    constructor(cdr) {
        super();
        this.cdr = cdr;
    }
    ngOnInit() {
        const p = DevToolsPrefs.Get('settingsExplorer');
        if (p?.scope)
            this.Scope = p.scope;
        if (p?.search)
            this.SearchQuery = p.search;
        this.refresh();
        this.NotifyLoadComplete();
    }
    ngOnDestroy() {
        DevToolsPrefs.Save('settingsExplorer', { scope: this.Scope, search: this.SearchQuery });
        super.ngOnDestroy();
    }
    PersistPrefs() {
        DevToolsPrefs.Save('settingsExplorer', { scope: this.Scope, search: this.SearchQuery });
    }
    async GetResourceDisplayName() { return 'Settings Explorer'; }
    async GetResourceIconClass() { return 'fa-solid fa-sliders'; }
    refresh() {
        const userSettings = UserInfoEngine.Instance.UserSettings ?? [];
        this.UserRows = userSettings.map(s => this.toRow(s.Setting ?? '(no key)', s.Value ?? '', s.User ? `User: ${s.User}` : undefined, s.__mj_UpdatedAt));
        const instanceConfigs = InstanceConfigEngine.Instance.InstanceConfigs ?? [];
        this.InstanceRows = instanceConfigs.map(c => this.toRow(c.FeatureKey ?? '(no key)', c.Value ?? '', this.buildInstanceMeta(c), c.__mj_UpdatedAt));
        this.Counts = { user: this.UserRows.length, instance: this.InstanceRows.length };
        // Sort each list by key
        this.UserRows.sort((a, b) => a.key.localeCompare(b.key));
        this.InstanceRows.sort((a, b) => a.key.localeCompare(b.key));
        // Re-resolve selection if it still exists
        if (this.Selected) {
            const list = this.Scope === 'user' ? this.UserRows : this.InstanceRows;
            this.Selected = list.find(r => r.key === this.Selected.key) ?? null;
        }
        this.LastRefreshed = new Date();
        this.cdr.markForCheck();
    }
    OnScopeChange(scope) {
        this.Scope = scope;
        this.Selected = null;
        this.PersistPrefs();
    }
    get FilteredRows() {
        const list = this.Scope === 'user' ? this.UserRows : this.InstanceRows;
        const q = this.SearchQuery.trim().toLowerCase();
        if (!q)
            return list;
        return list.filter(r => r.key.toLowerCase().includes(q) || r.rawValue.toLowerCase().includes(q));
    }
    OnRowClick(row) {
        this.Selected = this.Selected?.key === row.key ? null : row;
    }
    async OnCopySelected() {
        if (!this.Selected)
            return;
        const text = this.Selected.valueType === 'json'
            ? JSON.stringify(this.Selected.parsedValue, null, 2)
            : this.Selected.rawValue;
        try {
            await navigator.clipboard.writeText(text);
        }
        catch {
            // unavailable
        }
    }
    get LastRefreshedLabel() {
        return this.LastRefreshed.toLocaleTimeString();
    }
    get FormattedSelected() {
        if (!this.Selected)
            return '';
        if (this.Selected.valueType === 'json') {
            return JSON.stringify(this.Selected.parsedValue, null, 2);
        }
        return this.Selected.rawValue;
    }
    TrackByKey = (_i, r) => r.key;
    // ---------- private ----------
    buildInstanceMeta(c) {
        const parts = [];
        if (c.Category)
            parts.push(c.Category);
        if (c.DisplayName && c.DisplayName !== c.FeatureKey)
            parts.push(c.DisplayName);
        return parts.length ? parts.join(' · ') : undefined;
    }
    toRow(key, rawValue, meta, updated) {
        const raw = rawValue ?? '';
        let valueType = 'string';
        let parsedValue = raw;
        let preview = raw;
        if (raw === '') {
            valueType = 'empty';
            preview = '(empty)';
        }
        else if (raw === 'true' || raw === 'false') {
            valueType = 'boolean';
            parsedValue = raw === 'true';
        }
        else if (/^-?\d+(\.\d+)?$/.test(raw) && raw.length < 20) {
            valueType = 'number';
            parsedValue = Number(raw);
        }
        else if ((raw.startsWith('{') && raw.endsWith('}')) || (raw.startsWith('[') && raw.endsWith(']'))) {
            try {
                parsedValue = JSON.parse(raw);
                valueType = 'json';
                preview = this.summarizeJson(parsedValue);
            }
            catch {
                // not actually JSON — leave as string
            }
        }
        if (preview.length > 80)
            preview = preview.slice(0, 77) + '…';
        return {
            key,
            rawValue: raw,
            parsedValue,
            valueType,
            preview,
            meta,
            updated: updated ? (updated instanceof Date ? updated : new Date(updated)) : null
        };
    }
    summarizeJson(value) {
        if (Array.isArray(value))
            return `[ ${value.length} item${value.length === 1 ? '' : 's'} ]`;
        if (value && typeof value === 'object') {
            const keys = Object.keys(value);
            if (keys.length === 0)
                return '{ }';
            return `{ ${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', …' : ''} }`;
        }
        return String(value);
    }
    static ɵfac = function SettingsExplorerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SettingsExplorerComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
    static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SettingsExplorerComponent, selectors: [["mj-settings-explorer"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 12, consts: [[1, "mj-inspector", "mj-inspector--solo"], ["Role", "region", "AriaLabel", "Settings explorer", "Title", "Settings Explorer", "Subtitle", "User settings and instance-level configuration"], ["actions", ""], [3, "Clicked", "Loading"], [1, "se-toolbar"], [1, "se-tabs"], ["type", "button", 1, "se-tab", 3, "click"], [1, "fa-solid", "fa-user"], [1, "se-count"], [1, "fa-solid", "fa-server"], [1, "se-search-wrap"], [1, "fa-solid", "fa-search", "se-search-icon"], ["type", "search", "placeholder", "Search keys or values\u2026", 1, "se-search", 3, "ngModelChange", "ngModel"], ["title", "Clear", 1, "se-search-clear"], [1, "se-body"], [1, "se-list"], [1, "se-empty"], [1, "se-table"], [1, "se-detail"], [1, "mj-inspector__footer-meta"], ["title", "Clear", 1, "se-search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fa-regular", "fa-folder-open"], [1, "se-th-key"], [1, "se-th-type"], [1, "se-th-value"], [3, "se-row--selected"], [3, "click"], [1, "se-td-key"], [1, "se-td-meta"], [1, "se-td-type"], [1, "se-type-pill"], [1, "se-td-value"], [1, "se-detail-head"], [1, "se-detail-key"], [1, "se-detail-meta"], [1, "se-detail-actions"], ["mjButton", "", "variant", "secondary", "size", "sm", "title", "Copy value", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-clipboard"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Close", "aria-label", "Close detail", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-xmark"], [1, "se-detail-body"], [1, "se-detail-meta-row"], [1, "se-detail-updated"], [1, "se-detail-value"]], template: function SettingsExplorerComponent_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵelementStart(0, "div", 0)(1, "mj-page-header-interior", 1)(2, "div", 2)(3, "mj-refresh-button", 3);
            i0.ɵɵlistener("Clicked", function SettingsExplorerComponent_Template_mj_refresh_button_Clicked_3_listener() { return ctx.refresh(); });
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(4, "div", 4)(5, "div", 5)(6, "button", 6);
            i0.ɵɵlistener("click", function SettingsExplorerComponent_Template_button_click_6_listener() { return ctx.OnScopeChange("user"); });
            i0.ɵɵelement(7, "i", 7);
            i0.ɵɵtext(8, " User Settings ");
            i0.ɵɵelementStart(9, "span", 8);
            i0.ɵɵtext(10);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(11, "button", 6);
            i0.ɵɵlistener("click", function SettingsExplorerComponent_Template_button_click_11_listener() { return ctx.OnScopeChange("instance"); });
            i0.ɵɵelement(12, "i", 9);
            i0.ɵɵtext(13, " Instance Configurations ");
            i0.ɵɵelementStart(14, "span", 8);
            i0.ɵɵtext(15);
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(16, "div", 10);
            i0.ɵɵelement(17, "i", 11);
            i0.ɵɵelementStart(18, "input", 12);
            i0.ɵɵtwoWayListener("ngModelChange", function SettingsExplorerComponent_Template_input_ngModelChange_18_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SearchQuery, $event) || (ctx.SearchQuery = $event); return $event; });
            i0.ɵɵlistener("ngModelChange", function SettingsExplorerComponent_Template_input_ngModelChange_18_listener() { return ctx.PersistPrefs(); });
            i0.ɵɵelementEnd();
            i0.ɵɵconditionalCreate(19, SettingsExplorerComponent_Conditional_19_Template, 2, 0, "button", 13);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(20, "div", 14)(21, "div", 15);
            i0.ɵɵconditionalCreate(22, SettingsExplorerComponent_Conditional_22_Template, 3, 1, "div", 16)(23, SettingsExplorerComponent_Conditional_23_Template, 12, 0, "table", 17);
            i0.ɵɵelementEnd();
            i0.ɵɵconditionalCreate(24, SettingsExplorerComponent_Conditional_24_Template, 20, 7, "aside", 18);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(25, "div", 19);
            i0.ɵɵtext(26);
            i0.ɵɵelementEnd()();
        } if (rf & 2) {
            i0.ɵɵadvance(3);
            i0.ɵɵproperty("Loading", false);
            i0.ɵɵadvance(3);
            i0.ɵɵclassProp("se-tab--active", ctx.Scope === "user");
            i0.ɵɵadvance(4);
            i0.ɵɵtextInterpolate(ctx.Counts.user);
            i0.ɵɵadvance();
            i0.ɵɵclassProp("se-tab--active", ctx.Scope === "instance");
            i0.ɵɵadvance(4);
            i0.ɵɵtextInterpolate(ctx.Counts.instance);
            i0.ɵɵadvance(3);
            i0.ɵɵtwoWayProperty("ngModel", ctx.SearchQuery);
            i0.ɵɵadvance();
            i0.ɵɵconditional(ctx.SearchQuery ? 19 : -1);
            i0.ɵɵadvance(3);
            i0.ɵɵconditional(ctx.FilteredRows.length === 0 ? 22 : 23);
            i0.ɵɵadvance(2);
            i0.ɵɵconditional(ctx.Selected ? 24 : -1);
            i0.ɵɵadvance(2);
            i0.ɵɵtextInterpolate1("Refreshed ", ctx.LastRefreshedLabel);
        } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJRefreshButtonComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.mj-inspector[_ngcontent-%COMP%] {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    min-height: 0;\n    background: var(--mj-bg-page);\n    color: var(--mj-text-primary);\n    font-family: inherit;\n}\n\n\n\n.mj-inspector__content[_ngcontent-%COMP%] {\n    flex: 1;\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    background: var(--mj-bg-page);\n}\n.mj-inspector__content-head[_ngcontent-%COMP%] {\n    padding: 12px 20px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title[_ngcontent-%COMP%] {\n    margin: 0;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta[_ngcontent-%COMP%] {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.mj-inspector__editor[_ngcontent-%COMP%] {\n    flex: 1;\n    min-height: 0;\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n}\n.mj-inspector__editor[_ngcontent-%COMP%]   mj-code-editor[_ngcontent-%COMP%] {\n    flex: 1;\n    min-height: 0;\n    display: block;\n}\n\n\n\n.mj-inspector__empty[_ngcontent-%COMP%] {\n    flex: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--mj-text-muted);\n    font-size: 13px;\n}", ".mj-inspector--solo[_ngcontent-%COMP%] { background: var(--mj-bg-page); }\n\n\n\n.se-toolbar[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 16px;\n    padding: 10px 20px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n    background: var(--mj-bg-surface);\n}\n.se-tabs[_ngcontent-%COMP%] {\n    display: flex;\n    gap: 2px;\n    background: var(--mj-bg-surface-sunken);\n    padding: 3px;\n    border-radius: 8px;\n}\n.se-tab[_ngcontent-%COMP%] {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 6px 12px;\n    border-radius: 6px;\n    border: none;\n    background: transparent;\n    color: var(--mj-text-secondary);\n    font-size: 12.5px;\n    font-weight: 500;\n    cursor: pointer;\n    font-family: inherit;\n    transition: all 0.15s;\n}\n.se-tab[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n.se-tab--active[_ngcontent-%COMP%] {\n    background: var(--mj-bg-surface);\n    color: var(--mj-brand-primary);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n}\n.se-count[_ngcontent-%COMP%] {\n    background: var(--mj-bg-surface-sunken);\n    color: var(--mj-text-muted);\n    font-size: 10.5px;\n    padding: 1px 7px;\n    border-radius: 100px;\n    font-weight: 600;\n}\n.se-tab--active[_ngcontent-%COMP%]   .se-count[_ngcontent-%COMP%] {\n    background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n    color: var(--mj-brand-primary);\n}\n\n.se-search-wrap[_ngcontent-%COMP%] {\n    position: relative;\n    flex: 1;\n    max-width: 360px;\n    margin-left: auto;\n}\n.se-search-icon[_ngcontent-%COMP%] {\n    position: absolute;\n    left: 12px;\n    top: 50%;\n    transform: translateY(-50%);\n    color: var(--mj-text-muted);\n    font-size: 12px;\n    pointer-events: none;\n}\n.se-search[_ngcontent-%COMP%] {\n    width: 100%;\n    padding: 7px 32px 7px 32px;\n    border: 1px solid var(--mj-border-default);\n    border-radius: 8px;\n    background: var(--mj-bg-surface);\n    color: var(--mj-text-primary);\n    font-size: 12.5px;\n    font-family: inherit;\n}\n.se-search[_ngcontent-%COMP%]:focus {\n    outline: none;\n    border-color: var(--mj-brand-primary);\n    box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.se-search-clear[_ngcontent-%COMP%] {\n    position: absolute;\n    right: 8px;\n    top: 50%;\n    transform: translateY(-50%);\n    background: transparent;\n    border: none;\n    color: var(--mj-text-muted);\n    cursor: pointer;\n    width: 22px;\n    height: 22px;\n    border-radius: 4px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 11px;\n}\n.se-search-clear[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n\n\n.se-body[_ngcontent-%COMP%] {\n    display: flex;\n    flex: 1;\n    min-height: 0;\n}\n.se-list[_ngcontent-%COMP%] {\n    flex: 1;\n    overflow: auto;\n    background: var(--mj-bg-page);\n}\n\n.se-table[_ngcontent-%COMP%] {\n    width: 100%;\n    border-collapse: collapse;\n    font-size: 12.5px;\n}\n.se-table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%] {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    background: var(--mj-bg-surface);\n    box-shadow: 0 1px 0 var(--mj-border-subtle);\n}\n.se-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%] {\n    text-align: left;\n    padding: 10px 18px;\n    font-size: 10px;\n    font-weight: 700;\n    color: var(--mj-text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n.se-th-type[_ngcontent-%COMP%] { width: 100px; }\n.se-th-value[_ngcontent-%COMP%] { }\n.se-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%] {\n    padding: 8px 18px;\n    border-top: 1px solid var(--mj-border-subtle);\n    color: var(--mj-text-primary);\n    vertical-align: top;\n    cursor: pointer;\n}\n.se-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n.se-row--selected[_ngcontent-%COMP%] {\n    background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent) !important;\n}\n.se-row--selected[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]:first-child {\n    box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n}\n\n.se-td-key[_ngcontent-%COMP%]   code[_ngcontent-%COMP%] {\n    background: var(--mj-bg-surface-sunken);\n    border: 1px solid var(--mj-border-subtle);\n    padding: 2px 7px;\n    border-radius: 5px;\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 11.5px;\n    color: var(--mj-text-primary);\n}\n.se-td-meta[_ngcontent-%COMP%] {\n    margin-top: 3px;\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.se-td-value[_ngcontent-%COMP%] {\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 11.5px;\n    color: var(--mj-text-secondary);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    max-width: 0;\n}\n\n.se-type-pill[_ngcontent-%COMP%] {\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 10px;\n    font-weight: 700;\n    padding: 2px 8px;\n    border-radius: 100px;\n    text-transform: uppercase;\n    letter-spacing: 0.4px;\n}\n.se-type-pill--string[_ngcontent-%COMP%]  { background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent); color: var(--mj-brand-primary); }\n.se-type-pill--number[_ngcontent-%COMP%]  { background: color-mix(in srgb, #7c3aed 14%, transparent); color: #5b21b6; }\n.se-type-pill--boolean[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.se-type-pill--json[_ngcontent-%COMP%]    { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.se-type-pill--empty[_ngcontent-%COMP%]   { background: var(--mj-bg-surface-sunken); color: var(--mj-text-muted); }\n\n\n\n.se-detail[_ngcontent-%COMP%] {\n    width: 420px;\n    flex-shrink: 0;\n    border-left: 1px solid var(--mj-border-default);\n    background: var(--mj-bg-surface);\n    display: flex;\n    flex-direction: column;\n    min-height: 0;\n}\n.se-detail-head[_ngcontent-%COMP%] {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-start;\n    gap: 12px;\n    padding: 14px 16px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n}\n.se-detail-key[_ngcontent-%COMP%] {\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--mj-text-primary);\n    word-break: break-all;\n}\n.se-detail-meta[_ngcontent-%COMP%] {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n    margin-top: 4px;\n}\n.se-detail-actions[_ngcontent-%COMP%] {\n    display: flex;\n    gap: 4px;\n    flex-shrink: 0;\n}\n\n.se-detail-body[_ngcontent-%COMP%] {\n    flex: 1;\n    min-height: 0;\n    overflow-y: auto;\n    padding: 14px 16px;\n}\n.se-detail-meta-row[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 10px;\n}\n.se-detail-updated[_ngcontent-%COMP%] {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.se-detail-value[_ngcontent-%COMP%] {\n    margin: 0;\n    background: var(--mj-bg-surface-sunken);\n    border: 1px solid var(--mj-border-subtle);\n    border-radius: 8px;\n    padding: 12px 14px;\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 12px;\n    color: var(--mj-text-primary);\n    white-space: pre-wrap;\n    word-break: break-word;\n    max-height: 100%;\n    overflow: auto;\n}\n\n.se-empty[_ngcontent-%COMP%] {\n    padding: 60px 40px;\n    text-align: center;\n    color: var(--mj-text-muted);\n    font-size: 13px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 12px;\n}\n.se-empty[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] { font-size: 28px; opacity: 0.7; }\n\n@media (max-width: 900px) {\n    .se-body[_ngcontent-%COMP%] { flex-direction: column; }\n    .se-detail[_ngcontent-%COMP%] { width: 100%; max-height: 50%; border-left: none; border-top: 1px solid var(--mj-border-default); }\n    .se-toolbar[_ngcontent-%COMP%] { flex-direction: column; align-items: stretch; gap: 10px; }\n    .se-search-wrap[_ngcontent-%COMP%] { max-width: 100%; }\n}"] });
};
SettingsExplorerComponent = __decorate([
    RegisterClass(BaseResourceComponent, 'SettingsExplorerInspector')
], SettingsExplorerComponent);
export { SettingsExplorerComponent };
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SettingsExplorerComponent, [{
        type: Component,
        args: [{ standalone: false, selector: 'mj-settings-explorer', template: "<div class=\"mj-inspector mj-inspector--solo\">\n    <mj-page-header-interior\n        Role=\"region\"\n        AriaLabel=\"Settings explorer\"\n        Title=\"Settings Explorer\"\n        Subtitle=\"User settings and instance-level configuration\">\n        <div actions>\n            <mj-refresh-button [Loading]=\"false\" (Clicked)=\"refresh()\"></mj-refresh-button>\n        </div>\n    </mj-page-header-interior>\n\n    <div class=\"se-toolbar\">\n        <div class=\"se-tabs\">\n            <button type=\"button\"\n                    class=\"se-tab\"\n                    [class.se-tab--active]=\"Scope === 'user'\"\n                    (click)=\"OnScopeChange('user')\">\n                <i class=\"fa-solid fa-user\"></i>\n                User Settings\n                <span class=\"se-count\">{{ Counts.user }}</span>\n            </button>\n            <button type=\"button\"\n                    class=\"se-tab\"\n                    [class.se-tab--active]=\"Scope === 'instance'\"\n                    (click)=\"OnScopeChange('instance')\">\n                <i class=\"fa-solid fa-server\"></i>\n                Instance Configurations\n                <span class=\"se-count\">{{ Counts.instance }}</span>\n            </button>\n        </div>\n        <div class=\"se-search-wrap\">\n            <i class=\"fa-solid fa-search se-search-icon\"></i>\n            <input type=\"search\"\n                   class=\"se-search\"\n                   placeholder=\"Search keys or values\u2026\"\n                   [(ngModel)]=\"SearchQuery\"\n                   (ngModelChange)=\"PersistPrefs()\" />\n            @if (SearchQuery) {\n                <button class=\"se-search-clear\" (click)=\"SearchQuery = ''\" title=\"Clear\">\n                    <i class=\"fa-solid fa-xmark\"></i>\n                </button>\n            }\n        </div>\n    </div>\n\n    <div class=\"se-body\">\n        <div class=\"se-list\">\n            @if (FilteredRows.length === 0) {\n                <div class=\"se-empty\">\n                    @if (SearchQuery) {\n                        <i class=\"fa-solid fa-magnifying-glass\"></i>\n                        <span>No matches for \"{{ SearchQuery }}\"</span>\n                    } @else {\n                        <i class=\"fa-regular fa-folder-open\"></i>\n                        <span>No {{ Scope === 'user' ? 'user settings' : 'instance configurations' }} are defined.</span>\n                    }\n                </div>\n            } @else {\n                <table class=\"se-table\">\n                    <thead>\n                        <tr>\n                            <th class=\"se-th-key\">Key</th>\n                            <th class=\"se-th-type\">Type</th>\n                            <th class=\"se-th-value\">Value</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        @for (row of FilteredRows; track TrackByKey($index, row)) {\n                            <tr [class.se-row--selected]=\"Selected?.key === row.key\"\n                                (click)=\"OnRowClick(row)\">\n                                <td class=\"se-td-key\">\n                                    <code>{{ row.key }}</code>\n                                    @if (row.meta) {\n                                        <div class=\"se-td-meta\">{{ row.meta }}</div>\n                                    }\n                                </td>\n                                <td class=\"se-td-type\">\n                                    <span class=\"se-type-pill\" [class]=\"'se-type-pill--' + row.valueType\">\n                                        {{ row.valueType }}\n                                    </span>\n                                </td>\n                                <td class=\"se-td-value\">{{ row.preview }}</td>\n                            </tr>\n                        }\n                    </tbody>\n                </table>\n            }\n        </div>\n\n        @if (Selected) {\n            <aside class=\"se-detail\">\n                <div class=\"se-detail-head\">\n                    <div>\n                        <div class=\"se-detail-key\">{{ Selected.key }}</div>\n                        @if (Selected.meta) {\n                            <div class=\"se-detail-meta\">{{ Selected.meta }}</div>\n                        }\n                    </div>\n                    <div class=\"se-detail-actions\">\n                        <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"OnCopySelected()\" title=\"Copy value\">\n                            <i class=\"fa-solid fa-clipboard\" aria-hidden=\"true\"></i> Copy\n                        </button>\n                        <button mjButton variant=\"flat\" size=\"sm\" (click)=\"Selected = null\" title=\"Close\" aria-label=\"Close detail\">\n                            <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"se-detail-body\">\n                    <div class=\"se-detail-meta-row\">\n                        <span class=\"se-type-pill\" [class]=\"'se-type-pill--' + Selected.valueType\">{{ Selected.valueType }}</span>\n                        @if (Selected.updated) {\n                            <span class=\"se-detail-updated\">Updated {{ Selected.updated.toLocaleString() }}</span>\n                        }\n                    </div>\n                    <pre class=\"se-detail-value\"><code>{{ FormattedSelected || '(empty)' }}</code></pre>\n                </div>\n            </aside>\n        }\n    </div>\n\n    <div class=\"mj-inspector__footer-meta\">Refreshed {{ LastRefreshedLabel }}</div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n/*\n  Inspector shell \u2014 each Dev Tools sub-page wraps its body in .mj-inspector. The\n  chrome (title icon, title, subtitle, action buttons) was previously rendered\n  via .mj-inspector__header*, but that's been replaced by <mj-page-header-interior>\n  in every inspector template. Action buttons now use the mjButton directive\n  (variant=\"secondary\" / \"success\") so they inherit global button styling. App\n  State + Layout inspectors used to carry an inner left rail (.mj-inspector__body\n  + __sidebar + __nav-item) for L2 sections; that rail was retired 2026-05-19 in\n  favor of <mj-tab-nav> projected into the chrome's [toolbar] slot, matching\n  SystemDiagnostics and the API Keys tab strip. All inspectors are now \"solo\"\n  mode (no sidebar).\n*/\n.mj-inspector {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    min-height: 0;\n    background: var(--mj-bg-page);\n    color: var(--mj-text-primary);\n    font-family: inherit;\n}\n\n/* Content area */\n.mj-inspector__content {\n    flex: 1;\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    background: var(--mj-bg-page);\n}\n.mj-inspector__content-head {\n    padding: 12px 20px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title {\n    margin: 0;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.mj-inspector__editor {\n    flex: 1;\n    min-height: 0;\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n}\n.mj-inspector__editor mj-code-editor {\n    flex: 1;\n    min-height: 0;\n    display: block;\n}\n\n/* Empty state */\n.mj-inspector__empty {\n    flex: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--mj-text-muted);\n    font-size: 13px;\n}\n\n", ".mj-inspector--solo { background: var(--mj-bg-page); }\n\n/* Toolbar */\n.se-toolbar {\n    display: flex;\n    align-items: center;\n    gap: 16px;\n    padding: 10px 20px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n    background: var(--mj-bg-surface);\n}\n.se-tabs {\n    display: flex;\n    gap: 2px;\n    background: var(--mj-bg-surface-sunken);\n    padding: 3px;\n    border-radius: 8px;\n}\n.se-tab {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 6px 12px;\n    border-radius: 6px;\n    border: none;\n    background: transparent;\n    color: var(--mj-text-secondary);\n    font-size: 12.5px;\n    font-weight: 500;\n    cursor: pointer;\n    font-family: inherit;\n    transition: all 0.15s;\n}\n.se-tab:hover { color: var(--mj-text-primary); }\n.se-tab--active {\n    background: var(--mj-bg-surface);\n    color: var(--mj-brand-primary);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n}\n.se-count {\n    background: var(--mj-bg-surface-sunken);\n    color: var(--mj-text-muted);\n    font-size: 10.5px;\n    padding: 1px 7px;\n    border-radius: 100px;\n    font-weight: 600;\n}\n.se-tab--active .se-count {\n    background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n    color: var(--mj-brand-primary);\n}\n\n.se-search-wrap {\n    position: relative;\n    flex: 1;\n    max-width: 360px;\n    margin-left: auto;\n}\n.se-search-icon {\n    position: absolute;\n    left: 12px;\n    top: 50%;\n    transform: translateY(-50%);\n    color: var(--mj-text-muted);\n    font-size: 12px;\n    pointer-events: none;\n}\n.se-search {\n    width: 100%;\n    padding: 7px 32px 7px 32px;\n    border: 1px solid var(--mj-border-default);\n    border-radius: 8px;\n    background: var(--mj-bg-surface);\n    color: var(--mj-text-primary);\n    font-size: 12.5px;\n    font-family: inherit;\n}\n.se-search:focus {\n    outline: none;\n    border-color: var(--mj-brand-primary);\n    box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.se-search-clear {\n    position: absolute;\n    right: 8px;\n    top: 50%;\n    transform: translateY(-50%);\n    background: transparent;\n    border: none;\n    color: var(--mj-text-muted);\n    cursor: pointer;\n    width: 22px;\n    height: 22px;\n    border-radius: 4px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 11px;\n}\n.se-search-clear:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n/* Body */\n.se-body {\n    display: flex;\n    flex: 1;\n    min-height: 0;\n}\n.se-list {\n    flex: 1;\n    overflow: auto;\n    background: var(--mj-bg-page);\n}\n\n.se-table {\n    width: 100%;\n    border-collapse: collapse;\n    font-size: 12.5px;\n}\n.se-table thead {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    background: var(--mj-bg-surface);\n    box-shadow: 0 1px 0 var(--mj-border-subtle);\n}\n.se-table th {\n    text-align: left;\n    padding: 10px 18px;\n    font-size: 10px;\n    font-weight: 700;\n    color: var(--mj-text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n.se-th-type { width: 100px; }\n.se-th-value { }\n.se-table td {\n    padding: 8px 18px;\n    border-top: 1px solid var(--mj-border-subtle);\n    color: var(--mj-text-primary);\n    vertical-align: top;\n    cursor: pointer;\n}\n.se-table tbody tr:hover { background: var(--mj-bg-surface-hover); }\n.se-row--selected {\n    background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent) !important;\n}\n.se-row--selected td:first-child {\n    box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n}\n\n.se-td-key code {\n    background: var(--mj-bg-surface-sunken);\n    border: 1px solid var(--mj-border-subtle);\n    padding: 2px 7px;\n    border-radius: 5px;\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 11.5px;\n    color: var(--mj-text-primary);\n}\n.se-td-meta {\n    margin-top: 3px;\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.se-td-value {\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 11.5px;\n    color: var(--mj-text-secondary);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    max-width: 0;\n}\n\n.se-type-pill {\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 10px;\n    font-weight: 700;\n    padding: 2px 8px;\n    border-radius: 100px;\n    text-transform: uppercase;\n    letter-spacing: 0.4px;\n}\n.se-type-pill--string  { background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent); color: var(--mj-brand-primary); }\n.se-type-pill--number  { background: color-mix(in srgb, #7c3aed 14%, transparent); color: #5b21b6; }\n.se-type-pill--boolean { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.se-type-pill--json    { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.se-type-pill--empty   { background: var(--mj-bg-surface-sunken); color: var(--mj-text-muted); }\n\n/* Detail panel */\n.se-detail {\n    width: 420px;\n    flex-shrink: 0;\n    border-left: 1px solid var(--mj-border-default);\n    background: var(--mj-bg-surface);\n    display: flex;\n    flex-direction: column;\n    min-height: 0;\n}\n.se-detail-head {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-start;\n    gap: 12px;\n    padding: 14px 16px;\n    border-bottom: 1px solid var(--mj-border-subtle);\n}\n.se-detail-key {\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--mj-text-primary);\n    word-break: break-all;\n}\n.se-detail-meta {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n    margin-top: 4px;\n}\n.se-detail-actions {\n    display: flex;\n    gap: 4px;\n    flex-shrink: 0;\n}\n\n.se-detail-body {\n    flex: 1;\n    min-height: 0;\n    overflow-y: auto;\n    padding: 14px 16px;\n}\n.se-detail-meta-row {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 10px;\n}\n.se-detail-updated {\n    font-size: 11px;\n    color: var(--mj-text-muted);\n}\n.se-detail-value {\n    margin: 0;\n    background: var(--mj-bg-surface-sunken);\n    border: 1px solid var(--mj-border-subtle);\n    border-radius: 8px;\n    padding: 12px 14px;\n    font-family: 'SF Mono', Menlo, Consolas, monospace;\n    font-size: 12px;\n    color: var(--mj-text-primary);\n    white-space: pre-wrap;\n    word-break: break-word;\n    max-height: 100%;\n    overflow: auto;\n}\n\n.se-empty {\n    padding: 60px 40px;\n    text-align: center;\n    color: var(--mj-text-muted);\n    font-size: 13px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 12px;\n}\n.se-empty i { font-size: 28px; opacity: 0.7; }\n\n@media (max-width: 900px) {\n    .se-body { flex-direction: column; }\n    .se-detail { width: 100%; max-height: 50%; border-left: none; border-top: 1px solid var(--mj-border-default); }\n    .se-toolbar { flex-direction: column; align-items: stretch; gap: 10px; }\n    .se-search-wrap { max-width: 100%; }\n}\n"] }]
    }], () => [{ type: i0.ChangeDetectorRef }], null); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SettingsExplorerComponent, { className: "SettingsExplorerComponent", filePath: "src/DevTools/settings-explorer.component.ts", lineNumber: 39 }); })();
//# sourceMappingURL=settings-explorer.component.js.map