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 { RegisterClass } from '@memberjunction/global';
import { BaseResourceComponent } from '@memberjunction/ng-shared';
import { RunView } from '@memberjunction/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "@memberjunction/ng-ui-components";
function CommunicationRunsResourceComponent_For_27_Conditional_16_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span");
    i0.ɵɵelement(1, "i", 24);
    i0.ɵɵtext(2);
    i0.ɵɵpipe(3, "date");
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, run_r1.EndedAt, "shortTime"));
} }
function CommunicationRunsResourceComponent_For_27_Conditional_17_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 23);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" ", run_r1.Comments, " ");
} }
function CommunicationRunsResourceComponent_For_27_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 13);
    i0.ɵɵelement(1, "div", 15);
    i0.ɵɵelementStart(2, "div", 16)(3, "div", 17)(4, "span", 18);
    i0.ɵɵtext(5);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "span", 19);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(8, "div", 20)(9, "span");
    i0.ɵɵelement(10, "i", 21);
    i0.ɵɵtext(11);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(12, "span");
    i0.ɵɵelement(13, "i", 22);
    i0.ɵɵtext(14);
    i0.ɵɵpipe(15, "date");
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(16, CommunicationRunsResourceComponent_For_27_Conditional_16_Template, 4, 4, "span");
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(17, CommunicationRunsResourceComponent_For_27_Conditional_17_Template, 2, 1, "div", 23);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const run_r1 = ctx.$implicit;
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngClass", ctx_r1.getRunDotClass(run_r1.Status));
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate1("Run #", run_r1.ID.substring(0, 8));
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(run_r1.Status));
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" ", run_r1.Status, " ");
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate1(" ", run_r1.User || "System");
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(15, 8, run_r1.StartedAt, "medium"));
    i0.ɵɵadvance(2);
    i0.ɵɵconditional(run_r1.EndedAt ? 16 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(run_r1.Comments ? 17 : -1);
} }
function CommunicationRunsResourceComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 14);
    i0.ɵɵelement(1, "i", 25);
    i0.ɵɵelementStart(2, "p");
    i0.ɵɵtext(3, "No communication runs found");
    i0.ɵɵelementEnd()();
} }
let CommunicationRunsResourceComponent = class CommunicationRunsResourceComponent extends BaseResourceComponent {
    cdr;
    runs = [];
    isLoading = false;
    summary = {
        active: 0,
        completed: 0,
        successRate: 0
    };
    constructor(cdr) {
        super();
        this.cdr = cdr;
    }
    async ngOnInit() {
        super.ngOnInit();
        await this.loadData();
        this.NotifyLoadComplete();
    }
    ngOnDestroy() {
        super.ngOnDestroy();
    }
    async loadData() {
        try {
            this.isLoading = true;
            this.cdr.detectChanges();
            const rv = RunView.FromMetadataProvider(this.ProviderToUse);
            const yesterday = new Date();
            yesterday.setDate(yesterday.getDate() - 1);
            const yesterdayIso = yesterday.toISOString();
            const [runsResult, activeResult, completedResult, failedResult] = await Promise.all([
                rv.RunView({
                    EntityName: 'MJ: Communication Runs',
                    OrderBy: 'StartedAt DESC',
                    MaxRows: 50,
                    ResultType: 'entity_object'
                }),
                rv.RunView({
                    EntityName: 'MJ: Communication Runs',
                    ExtraFilter: `Status = 'In-Progress'`,
                    ResultType: 'count_only'
                }),
                rv.RunView({
                    EntityName: 'MJ: Communication Runs',
                    ExtraFilter: `EndedAt >= '${yesterdayIso}' AND Status = 'Complete'`,
                    ResultType: 'count_only'
                }),
                rv.RunView({
                    EntityName: 'MJ: Communication Runs',
                    ExtraFilter: `EndedAt >= '${yesterdayIso}' AND Status = 'Failed'`,
                    ResultType: 'count_only'
                })
            ]);
            if (runsResult.Success) {
                this.runs = runsResult.Results;
            }
            if (activeResult.Success)
                this.summary.active = activeResult.TotalRowCount;
            if (completedResult.Success)
                this.summary.completed = completedResult.TotalRowCount;
            const totalCompleted = this.summary.completed + (failedResult.Success ? failedResult.TotalRowCount : 0);
            this.summary.successRate = totalCompleted > 0
                ? Math.round((this.summary.completed / totalCompleted) * 100)
                : 100;
        }
        catch (error) {
            console.error('Error loading runs:', error);
        }
        finally {
            this.isLoading = false;
            this.cdr.detectChanges();
        }
    }
    getRunDotClass(status) {
        const s = (status || '').toLowerCase();
        if (s === 'complete')
            return 'complete';
        if (s === 'failed')
            return 'failed';
        if (s === 'in-progress')
            return 'in-progress';
        return 'pending';
    }
    getStatusClass(status) {
        const s = (status || '').toLowerCase();
        if (s === 'complete')
            return 'complete';
        if (s === 'failed')
            return 'failed';
        if (s === 'in-progress')
            return 'in-progress';
        return 'pending';
    }
    async GetResourceDisplayName(data) {
        return 'Bulk Runs';
    }
    async GetResourceIconClass(data) {
        return 'fa-solid fa-play-circle';
    }
    static ɵfac = function CommunicationRunsResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommunicationRunsResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
    static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommunicationRunsResourceComponent, selectors: [["mj-communication-runs-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 29, vars: 7, consts: [["Title", "Runs", "Icon", "fa-solid fa-play-circle", "Subtitle", "Bulk communication run history"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", "title", "Refresh", 3, "click", "disabled"], [1, "fa-solid", "fa-rotate"], [1, "action-btn-label"], [1, "card"], [1, "runs-summary"], [1, "run-stat-card", "info"], [1, "run-stat-value"], [1, "run-stat-label"], [1, "run-stat-card", "success"], [1, "run-stat-card", "neutral"], [1, "run-timeline"], [1, "run-entry"], [1, "empty-state"], [1, "run-timeline-dot", 3, "ngClass"], [1, "run-entry-content"], [1, "run-entry-header"], [1, "run-entry-title"], [1, "run-status-badge", 3, "ngClass"], [1, "run-entry-meta"], [1, "fa-solid", "fa-user"], [1, "fa-solid", "fa-clock"], [1, "run-entry-comments"], [1, "fa-solid", "fa-flag-checkered"], [1, "fa-solid", "fa-play-circle"]], template: function CommunicationRunsResourceComponent_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1)(3, "button", 2);
            i0.ɵɵlistener("click", function CommunicationRunsResourceComponent_Template_button_click_3_listener() { return ctx.loadData(); });
            i0.ɵɵelement(4, "i", 3);
            i0.ɵɵelementStart(5, "span", 4);
            i0.ɵɵtext(6, "Refresh");
            i0.ɵɵelementEnd()()()();
            i0.ɵɵelementStart(7, "mj-page-body")(8, "div", 5)(9, "div", 6)(10, "div", 7)(11, "div", 8);
            i0.ɵɵtext(12);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(13, "div", 9);
            i0.ɵɵtext(14, "Active Runs");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(15, "div", 10)(16, "div", 8);
            i0.ɵɵtext(17);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(18, "div", 9);
            i0.ɵɵtext(19, "Completed (24h)");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(20, "div", 11)(21, "div", 8);
            i0.ɵɵtext(22);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(23, "div", 9);
            i0.ɵɵtext(24, "Success Rate");
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(25, "div", 12);
            i0.ɵɵrepeaterCreate(26, CommunicationRunsResourceComponent_For_27_Template, 18, 11, "div", 13, i0.ɵɵrepeaterTrackByIdentity);
            i0.ɵɵconditionalCreate(28, CommunicationRunsResourceComponent_Conditional_28_Template, 4, 0, "div", 14);
            i0.ɵɵelementEnd()()()();
        } if (rf & 2) {
            i0.ɵɵadvance(3);
            i0.ɵɵproperty("disabled", ctx.isLoading);
            i0.ɵɵadvance();
            i0.ɵɵclassProp("spinning", ctx.isLoading);
            i0.ɵɵadvance(8);
            i0.ɵɵtextInterpolate(ctx.summary.active);
            i0.ɵɵadvance(5);
            i0.ɵɵtextInterpolate(ctx.summary.completed);
            i0.ɵɵadvance(5);
            i0.ɵɵtextInterpolate1("", ctx.summary.successRate, "%");
            i0.ɵɵadvance(4);
            i0.ɵɵrepeater(ctx.runs);
            i0.ɵɵadvance(2);
            i0.ɵɵconditional(ctx.runs.length === 0 && !ctx.isLoading ? 28 : -1);
        } }, dependencies: [i1.NgClass, i2.MJButtonDirective, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i1.DatePipe], styles: [".card[_ngcontent-%COMP%] {\n        background: var(--mj-bg-surface-card);\n        border: 1px solid var(--mj-border-default);\n        border-radius: 12px;\n        overflow: hidden;\n        padding: 16px 0 0;\n    }\n    @keyframes _ngcontent-%COMP%_spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n    .spinning[_ngcontent-%COMP%] { animation: _ngcontent-%COMP%_spin 1s linear infinite; }\n\n    \n\n    .runs-summary[_ngcontent-%COMP%] {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 16px;\n        padding: 20px;\n    }\n    .run-stat-card[_ngcontent-%COMP%] {\n        border-radius: 12px;\n        padding: 16px 20px;\n        text-align: center;\n    }\n    .run-stat-card.info[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n        border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n    }\n    .run-stat-card.success[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n        border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n    }\n    .run-stat-card.neutral[_ngcontent-%COMP%] {\n        background: var(--mj-bg-surface-sunken);\n        border: 1px solid var(--mj-border-default);\n    }\n\n    .run-stat-value[_ngcontent-%COMP%] {\n        font-size: 24px; font-weight: 800;\n        color: var(--mj-text-primary);\n    }\n    .run-stat-card.info[_ngcontent-%COMP%]   .run-stat-value[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n    .run-stat-card.success[_ngcontent-%COMP%]   .run-stat-value[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n\n    .run-stat-label[_ngcontent-%COMP%] {\n        font-size: 11px; font-weight: 600;\n        text-transform: uppercase; letter-spacing: 0.5px;\n        color: var(--mj-text-muted);\n        margin-top: 2px;\n    }\n\n    \n\n    .run-timeline[_ngcontent-%COMP%] { padding: 8px 20px 20px; }\n    .run-entry[_ngcontent-%COMP%] {\n        display: flex; gap: 16px;\n        padding: 16px 0;\n        border-bottom: 1px solid var(--mj-border-default);\n        align-items: flex-start;\n    }\n    .run-entry[_ngcontent-%COMP%]:last-child { border-bottom: none; }\n\n    .run-timeline-dot[_ngcontent-%COMP%] {\n        width: 12px; height: 12px;\n        border-radius: 50%;\n        margin-top: 4px; flex-shrink: 0;\n    }\n    .run-timeline-dot.complete[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n    .run-timeline-dot.failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n    .run-timeline-dot.in-progress[_ngcontent-%COMP%] {\n        background: var(--mj-brand-primary);\n        animation: _ngcontent-%COMP%_pulse-dot 1.5s ease-in-out infinite;\n    }\n    .run-timeline-dot.pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n\n    @keyframes _ngcontent-%COMP%_pulse-dot {\n        0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-brand-primary) 40%, transparent); }\n        50% { box-shadow: 0 0 0 6px transparent; }\n    }\n\n    .run-entry-content[_ngcontent-%COMP%] { flex: 1; }\n    .run-entry-header[_ngcontent-%COMP%] {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n    }\n    .run-entry-title[_ngcontent-%COMP%] {\n        font-size: 13px; font-weight: 600;\n        color: var(--mj-text-primary);\n    }\n    .run-status-badge[_ngcontent-%COMP%] {\n        font-size: 10px; font-weight: 700;\n        text-transform: uppercase; letter-spacing: 0.3px;\n        padding: 3px 8px;\n        border-radius: 4px;\n    }\n    .run-status-badge.complete[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-success);\n        border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n    }\n    .run-status-badge.failed[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-error);\n        border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n    }\n    .run-status-badge.pending[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-warning);\n        border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n    }\n    .run-status-badge.in-progress[_ngcontent-%COMP%] {\n        background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n        color: var(--mj-brand-primary);\n        border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n    }\n\n    .run-entry-meta[_ngcontent-%COMP%] {\n        font-size: 11px;\n        color: var(--mj-text-muted);\n        margin-top: 4px;\n        display: flex; align-items: center; gap: 12px;\n    }\n    .run-entry-meta[_ngcontent-%COMP%]   span[_ngcontent-%COMP%] {\n        display: flex; align-items: center; gap: 4px;\n    }\n    .run-entry-meta[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] { font-size: 10px; }\n\n    .run-entry-comments[_ngcontent-%COMP%] {\n        font-size: 12px;\n        color: var(--mj-text-muted);\n        margin-top: 6px;\n        font-style: italic;\n    }\n\n    \n\n    .empty-state[_ngcontent-%COMP%] {\n        display: flex; flex-direction: column;\n        align-items: center; justify-content: center;\n        padding: 48px 0; color: var(--mj-text-muted);\n    }\n    .empty-state[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n    .empty-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] { margin: 0; font-size: 13px; }"] });
};
CommunicationRunsResourceComponent = __decorate([
    RegisterClass(BaseResourceComponent, 'CommunicationRunsResource')
], CommunicationRunsResourceComponent);
export { CommunicationRunsResourceComponent };
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommunicationRunsResourceComponent, [{
        type: Component,
        args: [{ standalone: false, selector: 'mj-communication-runs-resource', template: `
    <mj-page-layout>
      <mj-page-header
        Title="Runs"
        Icon="fa-solid fa-play-circle"
        Subtitle="Bulk communication run history">
        <div actions>
          <button mjButton variant="secondary" size="sm" (click)="loadData()" [disabled]="isLoading" title="Refresh">
            <i class="fa-solid fa-rotate" [class.spinning]="isLoading"></i> <span class="action-btn-label">Refresh</span>
          </button>
        </div>
      </mj-page-header>

      <mj-page-body>
        <div class="card">
          <!-- SUMMARY STATS -->
          <div class="runs-summary">
            <div class="run-stat-card info">
              <div class="run-stat-value">{{summary.active}}</div>
              <div class="run-stat-label">Active Runs</div>
            </div>
            <div class="run-stat-card success">
              <div class="run-stat-value">{{summary.completed}}</div>
              <div class="run-stat-label">Completed (24h)</div>
            </div>
            <div class="run-stat-card neutral">
              <div class="run-stat-value">{{summary.successRate}}%</div>
              <div class="run-stat-label">Success Rate</div>
            </div>
          </div>
    
          <!-- TIMELINE -->
          <div class="run-timeline">
            @for (run of runs; track run) {
              <div class="run-entry">
                <div class="run-timeline-dot" [ngClass]="getRunDotClass(run.Status)"></div>
                <div class="run-entry-content">
                  <div class="run-entry-header">
                    <span class="run-entry-title">Run #{{run.ID.substring(0, 8)}}</span>
                    <span class="run-status-badge" [ngClass]="getStatusClass(run.Status)">
                      {{run.Status}}
                    </span>
                  </div>
                  <div class="run-entry-meta">
                    <span><i class="fa-solid fa-user"></i> {{run.User || 'System'}}</span>
                    <span><i class="fa-solid fa-clock"></i> {{run.StartedAt | date:'medium'}}</span>
                    @if (run.EndedAt) {
                      <span><i class="fa-solid fa-flag-checkered"></i> {{run.EndedAt | date:'shortTime'}}</span>
                    }
                  </div>
                  @if (run.Comments) {
                    <div class="run-entry-comments">
                      {{run.Comments}}
                    </div>
                  }
                </div>
              </div>
            }
    
            @if (runs.length === 0 && !isLoading) {
              <div class="empty-state">
                <i class="fa-solid fa-play-circle"></i>
                <p>No communication runs found</p>
              </div>
            }
          </div>
        </div>
      </mj-page-body>
    </mj-page-layout>
    `, styles: ["\n    .card {\n        background: var(--mj-bg-surface-card);\n        border: 1px solid var(--mj-border-default);\n        border-radius: 12px;\n        overflow: hidden;\n        padding: 16px 0 0;\n    }\n    @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n    .spinning { animation: spin 1s linear infinite; }\n\n    /* SUMMARY */\n    .runs-summary {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 16px;\n        padding: 20px;\n    }\n    .run-stat-card {\n        border-radius: 12px;\n        padding: 16px 20px;\n        text-align: center;\n    }\n    .run-stat-card.info {\n        background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n        border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n    }\n    .run-stat-card.success {\n        background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n        border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n    }\n    .run-stat-card.neutral {\n        background: var(--mj-bg-surface-sunken);\n        border: 1px solid var(--mj-border-default);\n    }\n\n    .run-stat-value {\n        font-size: 24px; font-weight: 800;\n        color: var(--mj-text-primary);\n    }\n    .run-stat-card.info .run-stat-value { color: var(--mj-brand-primary); }\n    .run-stat-card.success .run-stat-value { color: var(--mj-status-success); }\n\n    .run-stat-label {\n        font-size: 11px; font-weight: 600;\n        text-transform: uppercase; letter-spacing: 0.5px;\n        color: var(--mj-text-muted);\n        margin-top: 2px;\n    }\n\n    /* TIMELINE */\n    .run-timeline { padding: 8px 20px 20px; }\n    .run-entry {\n        display: flex; gap: 16px;\n        padding: 16px 0;\n        border-bottom: 1px solid var(--mj-border-default);\n        align-items: flex-start;\n    }\n    .run-entry:last-child { border-bottom: none; }\n\n    .run-timeline-dot {\n        width: 12px; height: 12px;\n        border-radius: 50%;\n        margin-top: 4px; flex-shrink: 0;\n    }\n    .run-timeline-dot.complete { background: var(--mj-status-success); }\n    .run-timeline-dot.failed { background: var(--mj-status-error); }\n    .run-timeline-dot.in-progress {\n        background: var(--mj-brand-primary);\n        animation: pulse-dot 1.5s ease-in-out infinite;\n    }\n    .run-timeline-dot.pending { background: var(--mj-status-warning); }\n\n    @keyframes pulse-dot {\n        0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-brand-primary) 40%, transparent); }\n        50% { box-shadow: 0 0 0 6px transparent; }\n    }\n\n    .run-entry-content { flex: 1; }\n    .run-entry-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n    }\n    .run-entry-title {\n        font-size: 13px; font-weight: 600;\n        color: var(--mj-text-primary);\n    }\n    .run-status-badge {\n        font-size: 10px; font-weight: 700;\n        text-transform: uppercase; letter-spacing: 0.3px;\n        padding: 3px 8px;\n        border-radius: 4px;\n    }\n    .run-status-badge.complete {\n        background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-success);\n        border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n    }\n    .run-status-badge.failed {\n        background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-error);\n        border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n    }\n    .run-status-badge.pending {\n        background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n        color: var(--mj-status-warning);\n        border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n    }\n    .run-status-badge.in-progress {\n        background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n        color: var(--mj-brand-primary);\n        border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n    }\n\n    .run-entry-meta {\n        font-size: 11px;\n        color: var(--mj-text-muted);\n        margin-top: 4px;\n        display: flex; align-items: center; gap: 12px;\n    }\n    .run-entry-meta span {\n        display: flex; align-items: center; gap: 4px;\n    }\n    .run-entry-meta i { font-size: 10px; }\n\n    .run-entry-comments {\n        font-size: 12px;\n        color: var(--mj-text-muted);\n        margin-top: 6px;\n        font-style: italic;\n    }\n\n    /* EMPTY STATE */\n    .empty-state {\n        display: flex; flex-direction: column;\n        align-items: center; justify-content: center;\n        padding: 48px 0; color: var(--mj-text-muted);\n    }\n    .empty-state i { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n    .empty-state p { margin: 0; font-size: 13px; }\n  "] }]
    }], () => [{ type: i0.ChangeDetectorRef }], null); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommunicationRunsResourceComponent, { className: "CommunicationRunsResourceComponent", filePath: "src/Communication/communication-runs-resource.component.ts", lineNumber: 223 }); })();
//# sourceMappingURL=communication-runs-resource.component.js.map