osi-cards-lib 1.5.10 → 1.5.12

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.
@@ -2911,12 +2911,19 @@ class EmptyStateComponent {
2911
2911
  onActionClick() {
2912
2912
  this.action.emit();
2913
2913
  }
2914
+ /**
2915
+ * Get array of CSS classes, filtering out undefined values
2916
+ * NgClass requires all values to be strings, not undefined
2917
+ */
2918
+ getClassArray() {
2919
+ return [this.variant, this.size, this.containerClass].filter((cls) => cls !== undefined && cls !== null);
2920
+ }
2914
2921
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2915
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: EmptyStateComponent, isStandalone: true, selector: "lib-empty-state", inputs: { message: "message", icon: "icon", actionLabel: "actionLabel", variant: "variant", size: "size", containerClass: "containerClass" }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"empty-state\" [ngClass]=\"[variant, size, containerClass]\" role=\"status\" aria-live=\"polite\">\n <!-- Icon/Emoji -->\n <div class=\"empty-icon\" *ngIf=\"icon\" aria-hidden=\"true\">\n {{ icon }}\n </div>\n\n <!-- Message -->\n <p class=\"empty-text\">{{ message }}</p>\n\n <!-- Optional Action Button -->\n <button class=\"empty-action\" type=\"button\" *ngIf=\"actionLabel\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n</div>\n", styles: [":root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: var(--spacing-md);--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--section-item-background);--surface-raised: var(--section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.unified-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.unified-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.unified-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.section-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.section-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes section-item-stream{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}:host{display:block;width:100%}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center;background:var(--surface, transparent);border-radius:var(--radius-md, 8px);gap:8px;min-height:140px;border:1px dashed rgba(255,255,255,.08)}.empty-state.minimal{background:transparent;border:none;min-height:100px;padding:12px}.empty-state.centered{min-height:200px}.empty-state.compact{min-height:80px;padding:10px;gap:6px}.empty-state.small{padding:10px;min-height:90px;gap:6px}.empty-state.large{padding:24px;min-height:220px;gap:12px}.empty-icon{font-size:2.5rem;line-height:1;opacity:.5;filter:grayscale(.3)}.compact .empty-icon,.small .empty-icon{font-size:2rem}.large .empty-icon{font-size:4rem}.empty-text{font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--foreground);margin:0;color:var(--muted-foreground, #999);max-width:340px;font-size:.75rem;line-height:1.3}.compact .empty-text{font-size:.7rem}.small .empty-text{font-size:.7rem;max-width:280px}.large .empty-text{font-size:.85rem;max-width:420px}.empty-action{margin-top:6px;padding:6px 12px;background:var(--accent, #ff7900);color:#fff;border:none;border-radius:var(--radius-md, 8px);font-size:.7rem;font-weight:600;cursor:pointer;transition:all .15s ease-out}.empty-action:hover{background:var(--accent-bright, #ffa347);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.empty-action:active{transform:translateY(0);box-shadow:none}.empty-action:focus-visible{outline:2px solid var(--accent, #ff7900);outline-offset:2px}.empty-action:disabled{opacity:.5;cursor:not-allowed;transform:none}@keyframes emptyStateFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.empty-state{animation:emptyStateFadeIn .3s ease-out}@media (max-width: 640px){.empty-state{padding:12px;min-height:120px}.empty-state.large{padding:18px;min-height:180px}.empty-icon{font-size:2.2rem}.large .empty-icon{font-size:3rem}.empty-text{font-size:.7rem}.large .empty-text{font-size:.8rem}.empty-action{padding:5px 10px;font-size:.65rem}}@media (prefers-color-scheme: dark){.empty-state{border-color:#ffffff14}.empty-icon{opacity:.4}}@media (prefers-contrast: high){.empty-state{border:2px solid rgba(255,255,255,.15)}.empty-action{border:2px solid var(--foreground, #fff)}}@media (prefers-reduced-motion: reduce){.empty-state{animation:none}.empty-action{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2922
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: EmptyStateComponent, isStandalone: true, selector: "lib-empty-state", inputs: { message: "message", icon: "icon", actionLabel: "actionLabel", variant: "variant", size: "size", containerClass: "containerClass" }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"empty-state\" [ngClass]=\"getClassArray()\" role=\"status\" aria-live=\"polite\">\n <!-- Icon/Emoji -->\n <div class=\"empty-icon\" *ngIf=\"icon\" aria-hidden=\"true\">\n {{ icon }}\n </div>\n\n <!-- Message -->\n <p class=\"empty-text\">{{ message }}</p>\n\n <!-- Optional Action Button -->\n <button class=\"empty-action\" type=\"button\" *ngIf=\"actionLabel\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n</div>\n", styles: [":root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: var(--spacing-md);--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--section-item-background);--surface-raised: var(--section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.unified-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.unified-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.unified-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.section-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.section-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes section-item-stream{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}:host{display:block;width:100%}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center;background:var(--surface, transparent);border-radius:var(--radius-md, 8px);gap:8px;min-height:140px;border:1px dashed rgba(255,255,255,.08)}.empty-state.minimal{background:transparent;border:none;min-height:100px;padding:12px}.empty-state.centered{min-height:200px}.empty-state.compact{min-height:80px;padding:10px;gap:6px}.empty-state.small{padding:10px;min-height:90px;gap:6px}.empty-state.large{padding:24px;min-height:220px;gap:12px}.empty-icon{font-size:2.5rem;line-height:1;opacity:.5;filter:grayscale(.3)}.compact .empty-icon,.small .empty-icon{font-size:2rem}.large .empty-icon{font-size:4rem}.empty-text{font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--foreground);margin:0;color:var(--muted-foreground, #999);max-width:340px;font-size:.75rem;line-height:1.3}.compact .empty-text{font-size:.7rem}.small .empty-text{font-size:.7rem;max-width:280px}.large .empty-text{font-size:.85rem;max-width:420px}.empty-action{margin-top:6px;padding:6px 12px;background:var(--accent, #ff7900);color:#fff;border:none;border-radius:var(--radius-md, 8px);font-size:.7rem;font-weight:600;cursor:pointer;transition:all .15s ease-out}.empty-action:hover{background:var(--accent-bright, #ffa347);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.empty-action:active{transform:translateY(0);box-shadow:none}.empty-action:focus-visible{outline:2px solid var(--accent, #ff7900);outline-offset:2px}.empty-action:disabled{opacity:.5;cursor:not-allowed;transform:none}@keyframes emptyStateFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.empty-state{animation:emptyStateFadeIn .3s ease-out}@media (max-width: 640px){.empty-state{padding:12px;min-height:120px}.empty-state.large{padding:18px;min-height:180px}.empty-icon{font-size:2.2rem}.large .empty-icon{font-size:3rem}.empty-text{font-size:.7rem}.large .empty-text{font-size:.8rem}.empty-action{padding:5px 10px;font-size:.65rem}}@media (prefers-color-scheme: dark){.empty-state{border-color:#ffffff14}.empty-icon{opacity:.4}}@media (prefers-contrast: high){.empty-state{border:2px solid rgba(255,255,255,.15)}.empty-action{border:2px solid var(--foreground, #fff)}}@media (prefers-reduced-motion: reduce){.empty-state{animation:none}.empty-action{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2916
2923
  }
2917
2924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EmptyStateComponent, decorators: [{
2918
2925
  type: Component,
2919
- args: [{ selector: 'lib-empty-state', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"empty-state\" [ngClass]=\"[variant, size, containerClass]\" role=\"status\" aria-live=\"polite\">\n <!-- Icon/Emoji -->\n <div class=\"empty-icon\" *ngIf=\"icon\" aria-hidden=\"true\">\n {{ icon }}\n </div>\n\n <!-- Message -->\n <p class=\"empty-text\">{{ message }}</p>\n\n <!-- Optional Action Button -->\n <button class=\"empty-action\" type=\"button\" *ngIf=\"actionLabel\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n</div>\n", styles: [":root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: var(--spacing-md);--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--section-item-background);--surface-raised: var(--section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.unified-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.unified-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.unified-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.section-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.section-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes section-item-stream{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}:host{display:block;width:100%}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center;background:var(--surface, transparent);border-radius:var(--radius-md, 8px);gap:8px;min-height:140px;border:1px dashed rgba(255,255,255,.08)}.empty-state.minimal{background:transparent;border:none;min-height:100px;padding:12px}.empty-state.centered{min-height:200px}.empty-state.compact{min-height:80px;padding:10px;gap:6px}.empty-state.small{padding:10px;min-height:90px;gap:6px}.empty-state.large{padding:24px;min-height:220px;gap:12px}.empty-icon{font-size:2.5rem;line-height:1;opacity:.5;filter:grayscale(.3)}.compact .empty-icon,.small .empty-icon{font-size:2rem}.large .empty-icon{font-size:4rem}.empty-text{font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--foreground);margin:0;color:var(--muted-foreground, #999);max-width:340px;font-size:.75rem;line-height:1.3}.compact .empty-text{font-size:.7rem}.small .empty-text{font-size:.7rem;max-width:280px}.large .empty-text{font-size:.85rem;max-width:420px}.empty-action{margin-top:6px;padding:6px 12px;background:var(--accent, #ff7900);color:#fff;border:none;border-radius:var(--radius-md, 8px);font-size:.7rem;font-weight:600;cursor:pointer;transition:all .15s ease-out}.empty-action:hover{background:var(--accent-bright, #ffa347);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.empty-action:active{transform:translateY(0);box-shadow:none}.empty-action:focus-visible{outline:2px solid var(--accent, #ff7900);outline-offset:2px}.empty-action:disabled{opacity:.5;cursor:not-allowed;transform:none}@keyframes emptyStateFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.empty-state{animation:emptyStateFadeIn .3s ease-out}@media (max-width: 640px){.empty-state{padding:12px;min-height:120px}.empty-state.large{padding:18px;min-height:180px}.empty-icon{font-size:2.2rem}.large .empty-icon{font-size:3rem}.empty-text{font-size:.7rem}.large .empty-text{font-size:.8rem}.empty-action{padding:5px 10px;font-size:.65rem}}@media (prefers-color-scheme: dark){.empty-state{border-color:#ffffff14}.empty-icon{opacity:.4}}@media (prefers-contrast: high){.empty-state{border:2px solid rgba(255,255,255,.15)}.empty-action{border:2px solid var(--foreground, #fff)}}@media (prefers-reduced-motion: reduce){.empty-state{animation:none}.empty-action{transition:none}}\n"] }]
2926
+ args: [{ selector: 'lib-empty-state', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"empty-state\" [ngClass]=\"getClassArray()\" role=\"status\" aria-live=\"polite\">\n <!-- Icon/Emoji -->\n <div class=\"empty-icon\" *ngIf=\"icon\" aria-hidden=\"true\">\n {{ icon }}\n </div>\n\n <!-- Message -->\n <p class=\"empty-text\">{{ message }}</p>\n\n <!-- Optional Action Button -->\n <button class=\"empty-action\" type=\"button\" *ngIf=\"actionLabel\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n</div>\n", styles: [":root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: var(--spacing-md);--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--section-item-background);--surface-raised: var(--section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.unified-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.unified-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.unified-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.section-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.section-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes section-item-stream{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}:host{display:block;width:100%}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center;background:var(--surface, transparent);border-radius:var(--radius-md, 8px);gap:8px;min-height:140px;border:1px dashed rgba(255,255,255,.08)}.empty-state.minimal{background:transparent;border:none;min-height:100px;padding:12px}.empty-state.centered{min-height:200px}.empty-state.compact{min-height:80px;padding:10px;gap:6px}.empty-state.small{padding:10px;min-height:90px;gap:6px}.empty-state.large{padding:24px;min-height:220px;gap:12px}.empty-icon{font-size:2.5rem;line-height:1;opacity:.5;filter:grayscale(.3)}.compact .empty-icon,.small .empty-icon{font-size:2rem}.large .empty-icon{font-size:4rem}.empty-text{font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--foreground);margin:0;color:var(--muted-foreground, #999);max-width:340px;font-size:.75rem;line-height:1.3}.compact .empty-text{font-size:.7rem}.small .empty-text{font-size:.7rem;max-width:280px}.large .empty-text{font-size:.85rem;max-width:420px}.empty-action{margin-top:6px;padding:6px 12px;background:var(--accent, #ff7900);color:#fff;border:none;border-radius:var(--radius-md, 8px);font-size:.7rem;font-weight:600;cursor:pointer;transition:all .15s ease-out}.empty-action:hover{background:var(--accent-bright, #ffa347);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.empty-action:active{transform:translateY(0);box-shadow:none}.empty-action:focus-visible{outline:2px solid var(--accent, #ff7900);outline-offset:2px}.empty-action:disabled{opacity:.5;cursor:not-allowed;transform:none}@keyframes emptyStateFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.empty-state{animation:emptyStateFadeIn .3s ease-out}@media (max-width: 640px){.empty-state{padding:12px;min-height:120px}.empty-state.large{padding:18px;min-height:180px}.empty-icon{font-size:2.2rem}.large .empty-icon{font-size:3rem}.empty-text{font-size:.7rem}.large .empty-text{font-size:.8rem}.empty-action{padding:5px 10px;font-size:.65rem}}@media (prefers-color-scheme: dark){.empty-state{border-color:#ffffff14}.empty-icon{opacity:.4}}@media (prefers-contrast: high){.empty-state{border:2px solid rgba(255,255,255,.15)}.empty-action{border:2px solid var(--foreground, #fff)}}@media (prefers-reduced-motion: reduce){.empty-state{animation:none}.empty-action{transition:none}}\n"] }]
2920
2927
  }], propDecorators: { message: [{
2921
2928
  type: Input
2922
2929
  }], icon: [{
@@ -5985,8 +5992,8 @@ function getSectionsRequiringExternalLibs() {
5985
5992
  * Manifest metadata
5986
5993
  */
5987
5994
  const MANIFEST_META = {
5988
- generatedAt: '2025-12-05T12:32:26.384Z',
5989
- registryVersion: '1.5.9',
5995
+ generatedAt: '2025-12-05T12:41:27.239Z',
5996
+ registryVersion: '1.5.11',
5990
5997
  totalSections: 22,
5991
5998
  publicSections: 22
5992
5999
  };
@@ -8807,14 +8814,33 @@ class EmailHandlerService {
8807
8814
  return this.convertToOutlookUrl(mailtoUrl);
8808
8815
  }
8809
8816
  /**
8810
- * Convert mailto URL to Outlook URL scheme
8811
- * Uses ms-outlook: scheme which works on both Windows and Mac
8817
+ * Convert mailto URL to Outlook URL scheme with platform-specific handling
8818
+ *
8819
+ * Strategy:
8820
+ * - Windows: Use mailto: (New Outlook doesn't support custom URL schemes)
8821
+ * - Will open Outlook if it's set as the default email client
8822
+ * - For Classic Outlook, user can set it as default or switch to Classic Outlook
8823
+ * - Mac: Use ms-outlook: (forces Outlook desktop app to open)
8824
+ *
8825
+ * Note: New Outlook for Windows doesn't support custom URL schemes like ms-outlook: or outlookmail:
8826
+ * The only way to open it is via mailto: when it's set as the default email client.
8812
8827
  *
8813
8828
  * @param mailtoUrl - Standard mailto URL
8814
- * @returns Outlook URL scheme
8829
+ * @returns Outlook URL scheme or mailto fallback
8815
8830
  */
8816
8831
  convertToOutlookUrl(mailtoUrl) {
8817
- // ms-outlook: scheme works on both Windows and Mac
8832
+ // Check if we're in a browser environment
8833
+ if (!isPlatformBrowser(this.platformId)) {
8834
+ return mailtoUrl;
8835
+ }
8836
+ const isWindows = /Win/i.test(navigator.platform) || /Windows/i.test(navigator.userAgent);
8837
+ if (isWindows) {
8838
+ // Windows: Use mailto: (New Outlook doesn't support custom schemes)
8839
+ // This will open the default email client (Outlook if configured as default)
8840
+ // For Classic Outlook users: Set Outlook as default email client in Windows Settings
8841
+ return mailtoUrl;
8842
+ }
8843
+ // Mac: Use ms-outlook: scheme (works with Outlook desktop app)
8818
8844
  // Format: ms-outlook:mailto:email@example.com?subject=...&body=...
8819
8845
  return `ms-outlook:${mailtoUrl}`;
8820
8846
  }
@@ -16854,15 +16880,24 @@ class ContactCardSectionComponent extends BaseSectionComponent {
16854
16880
  }
16855
16881
  /**
16856
16882
  * Convert email address to Outlook URL scheme
16857
- * Uses ms-outlook: scheme which works on both Windows and Mac
16883
+ * Platform-specific: Windows uses mailto: (New Outlook compatibility), Mac uses ms-outlook:
16858
16884
  *
16859
16885
  * @param email - Email address
16860
- * @returns Outlook URL scheme
16886
+ * @returns Outlook URL scheme or mailto fallback
16861
16887
  */
16862
16888
  getOutlookEmailUrl(email) {
16863
- // ms-outlook: scheme works on both Windows and Mac
16864
- // Format: ms-outlook:mailto:email@example.com
16865
- return `ms-outlook:mailto:${email}`;
16889
+ const mailtoUrl = `mailto:${email}`;
16890
+ // Check if we're on Windows
16891
+ if (typeof navigator !== 'undefined') {
16892
+ const isWindows = /Win/i.test(navigator.platform) || /Windows/i.test(navigator.userAgent);
16893
+ if (isWindows) {
16894
+ // Windows: Use mailto: (New Outlook doesn't support custom schemes)
16895
+ // Will open Outlook if set as default email client
16896
+ return mailtoUrl;
16897
+ }
16898
+ }
16899
+ // Mac: Use ms-outlook: scheme (works with Outlook desktop app)
16900
+ return `ms-outlook:${mailtoUrl}`;
16866
16901
  }
16867
16902
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ContactCardSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16868
16903
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: ContactCardSectionComponent, isStandalone: true, selector: "lib-contact-card-section", usesInheritance: true, ngImport: i0, template: "<div class=\"contacts\">\n <lib-section-header *ngIf=\"section.title\" [title]=\"section.title\" [description]=\"section.description\">\n </lib-section-header>\n\n <div class=\"grid\" *ngIf=\"section.fields?.length\">\n <div class=\"card\" *ngFor=\"let c of section.fields\">\n <div class=\"avatar\">\n <img [src]=\"getAvatar(c)\" [alt]=\"getContactName(c)\" *ngIf=\"getAvatar(c)\" loading=\"lazy\" />\n <span class=\"initials\" *ngIf=\"!getAvatar(c)\">{{ getInitials(getContactName(c)) }}</span>\n </div>\n <h4 class=\"name\">{{ getContactName(c) }}</h4>\n <p class=\"role\" *ngIf=\"getContactRole(c)\">{{ getContactRole(c) }}</p>\n <lib-badge *ngIf=\"c.department\" class=\"dept\" variant=\"primary\" size=\"sm\">{{ c.department }}</lib-badge>\n <div class=\"actions\">\n <a [href]=\"getOutlookEmailUrl(c.email)\" class=\"action\" *ngIf=\"c.email\" title=\"Email\">\uD83D\uDCE7</a>\n <a [href]=\"'tel:' + c.phone\" class=\"action\" *ngIf=\"c.phone\" title=\"Call\">\uD83D\uDCDE</a>\n <a [href]=\"c.linkedIn\" class=\"action\" target=\"_blank\" rel=\"noopener\" *ngIf=\"c.linkedIn\" title=\"LinkedIn\">\uD83D\uDCBC</a>\n </div>\n </div>\n </div>\n\n <lib-empty-state *ngIf=\"!section.fields?.length\" message=\"No contacts\" icon=\"\uD83D\uDC64\" variant=\"compact\"> </lib-empty-state>\n</div>\n", styles: [":root{--spacing-none: 0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 20px;--spacing-xl: 28px;--spacing-2xl: 40px;--spacing-3xl: 56px;--spacing-compact-xs: 3px;--spacing-compact-sm: 6px;--spacing-compact-md: 9px;--spacing-compact-base: 12px;--spacing-compact-lg: 16px;--section-card-min-height: 110px;--section-card-compact-height: 90px;--section-header-gap: var(--spacing-md);--section-content-gap: var(--spacing-sm);--section-card-gap: var(--spacing-md);--section-card-padding: var(--spacing-md)}:root{--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: .875rem;--text-lg: 1.0625rem;--text-xl: 1.1875rem;--text-2xl: 1.375rem;--text-3xl: 1.625rem;--text-4xl: 2rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.75}:root{--radius-none: 0;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 7px;--radius-xl: 10px;--radius-2xl: 14px;--radius-full: 9999px}:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25)}@media (prefers-color-scheme: dark){:root{--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5)}}:root{--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .6, 1);--transition-base: all var(--duration-base) var(--ease-out);--transition-fast: all var(--duration-fast) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: background-color var(--duration-base) var(--ease-out), border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);--transition-shadow: box-shadow var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out)}:root{--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 9999}:root{--blur-none: 0;--blur-sm: 4px;--blur-md: 8px;--blur-lg: 16px;--blur-xl: 24px;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: var(--blur-md)}@media (prefers-color-scheme: dark){:root{--glass-bg: rgba(0, 0, 0, .4);--glass-border: rgba(255, 255, 255, .1)}}:root{--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1}:root{--surface-base: var(--section-item-background);--surface-raised: var(--section-item-background-hover);--surface-overlay: var(--glass-bg);--border-light: rgba(var(--foreground-rgb), .08);--border-base: var(--border);--border-strong: rgba(var(--foreground-rgb), .2);--state-hover-opacity: .08;--state-active-opacity: .12;--state-focus-opacity: .16;--state-disabled-opacity: .5}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.unified-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.unified-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.unified-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.unified-card{transition:none}}.section-card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);display:flex;flex-direction:column;gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease}.section-card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.section-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.section-card{transition:none}}.status--completed,.status--success{color:#22c55e;background:#22c55e1a}.status--active,.status--in-progress{color:var(--accent);background:#ff79001a}.status--pending,.status--warning{color:#f59e0b;background:#f59e0b1a}.status--blocked,.status--cancelled,.status--delayed,.status--inactive,.status--error{color:#ef4444;background:#ef44441a}.status--default{color:var(--muted-foreground);background:var(--muted)}.priority--high{color:#ef4444;background:#ef44441a}.priority--medium{color:#f59e0b;background:#f59e0b1a}.priority--low{color:#22c55e;background:#22c55e1a}.priority--default{color:var(--muted-foreground);background:var(--muted)}@media (prefers-reduced-motion: reduce){.unified-card,.section-card,[class*=__card],[class*=-card],[class*=__item],[class*=-item]{transition:none;animation:none}}@keyframes section-item-stream{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}:host{display:block;width:100%}.contacts{display:flex;flex-direction:column;gap:var(--osi-spacing-compact-md, 12px)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--osi-spacing-compact-sm, 6px)}@media (max-width: 768px){.grid{gap:var(--osi-spacing-compact-xs, 2px)}}@media (max-width: 640px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 380px){.grid{grid-template-columns:1fr}}.card{background:var(--section-item-background);border:var(--section-item-border);border-radius:var(--section-item-border-radius);box-shadow:var(--section-item-box-shadow);padding:var(--card-padding);gap:var(--card-gap);min-height:var(--card-min-height, auto);cursor:pointer;box-sizing:border-box;text-align:left;transition:background .2s ease,box-shadow .2s ease,border-color .2s ease;transition:var(--transition-shadow),var(--transition-transform);position:relative;overflow:hidden;padding:var(--osi-spacing-compact-md, 12px);text-align:center;min-height:140px;background:var(--surface);display:flex;flex-direction:column;align-items:center;gap:var(--osi-spacing-compact-xs, 2px);transition:all .3s var(--ease-out)}.card:hover{background:var(--section-item-background-hover);border-color:var(--section-item-border-hover);box-shadow:var(--section-item-box-shadow-hover)}.card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.card{transition:none}}.card:active{transform:translateY(0);box-shadow:var(--shadow-md)}@media (prefers-reduced-motion: reduce){.card:hover,.card:active{transform:none}}.card:after{content:\"\";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.1) 50%,transparent 100%);transition:left var(--duration-slower) var(--ease-out);pointer-events:none}.card:hover:after{left:100%}@media (prefers-reduced-motion: reduce){.card:after{display:none}}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card:hover .avatar{transform:scale(1.06);box-shadow:0 6px 12px #00000026}.card:hover .name{color:var(--accent)}.avatar{width:48px;height:48px;border-radius:var(--radius-lg);border:2px solid var(--border);overflow:hidden;transition:all .3s var(--ease-out);box-shadow:var(--shadow-sm);flex-shrink:0;margin-bottom:var(--osi-spacing-compact-xs, 2px)}.avatar img{width:100%;height:100%;object-fit:cover}.initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--surface-hover);font-size:1rem;font-weight:var(--font-semibold);color:var(--foreground)}.name{font-size:var(--text-base);font-weight:var(--font-semibold);line-height:var(--leading-normal);color:var(--foreground);margin:0;transition:color .2s var(--ease-out)}.role{font-size:var(--text-xs);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--muted-foreground)}.actions{display:flex;gap:var(--osi-spacing-compact-xs, 2px);margin-top:auto;padding-top:var(--osi-spacing-compact-sm, 6px);border-top:1px solid var(--border);width:100%;justify-content:center}.action{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);background:var(--surface-hover);text-decoration:none;transition:all .2s var(--ease-out);border:1px solid transparent}.action:hover{background:var(--accent);border-color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-sm)}@media (max-width: 480px){.card{padding:var(--osi-spacing-compact-sm, 6px)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SectionHeaderComponent, selector: "lib-section-header", inputs: ["title", "description", "level", "headerClass", "titleClass", "descriptionClass"] }, { kind: "component", type: EmptyStateComponent, selector: "lib-empty-state", inputs: ["message", "icon", "actionLabel", "variant", "size", "containerClass"], outputs: ["action"] }, { kind: "component", type: BadgeComponent, selector: "lib-badge", inputs: ["variant", "size", "outlined", "pill", "dot", "badgeClass", "icon", "interactive", "ariaLabel"] }] }); }
@@ -27098,8 +27133,12 @@ class AICardRendererComponent {
27098
27133
  // Construct mailto link
27099
27134
  const queryString = params.length > 0 ? '?' + params.join('&') : '';
27100
27135
  const mailtoLink = `mailto:${recipientEmail}${queryString}`;
27101
- // Convert to Outlook URL scheme (works on both Windows and Mac)
27102
- const outlookLink = `ms-outlook:${mailtoLink}`;
27136
+ // Convert to Outlook URL scheme (platform-specific)
27137
+ // Windows: Use mailto: (New Outlook doesn't support custom schemes)
27138
+ // Mac: Use ms-outlook: (forces Outlook desktop app)
27139
+ const isWindows = typeof navigator !== 'undefined' &&
27140
+ (/Win/i.test(navigator.platform) || /Windows/i.test(navigator.userAgent));
27141
+ const outlookLink = isWindows ? mailtoLink : `ms-outlook:${mailtoLink}`;
27103
27142
  // Detect Edge browser for specific handling
27104
27143
  const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
27105
27144
  const isEdgeChromium = /Edg/i.test(userAgent) && !/OPR/i.test(userAgent);