osi-cards-lib 1.5.9 → 1.5.10

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.
@@ -5985,8 +5985,8 @@ function getSectionsRequiringExternalLibs() {
5985
5985
  * Manifest metadata
5986
5986
  */
5987
5987
  const MANIFEST_META = {
5988
- generatedAt: '2025-12-05T12:06:21.014Z',
5989
- registryVersion: '1.5.6',
5988
+ generatedAt: '2025-12-05T12:32:26.384Z',
5989
+ registryVersion: '1.5.9',
5990
5990
  totalSections: 22,
5991
5991
  publicSections: 22
5992
5992
  };
@@ -8802,7 +8802,21 @@ class EmailHandlerService {
8802
8802
  params.push(`body=${encodeURIComponent(config.body)}`);
8803
8803
  }
8804
8804
  const queryString = params.length > 0 ? `?${params.join('&')}` : '';
8805
- return `mailto:${encodeURIComponent(config.to)}${queryString}`;
8805
+ const mailtoUrl = `mailto:${encodeURIComponent(config.to)}${queryString}`;
8806
+ // Convert to Outlook URL scheme (works on both Windows and Mac)
8807
+ return this.convertToOutlookUrl(mailtoUrl);
8808
+ }
8809
+ /**
8810
+ * Convert mailto URL to Outlook URL scheme
8811
+ * Uses ms-outlook: scheme which works on both Windows and Mac
8812
+ *
8813
+ * @param mailtoUrl - Standard mailto URL
8814
+ * @returns Outlook URL scheme
8815
+ */
8816
+ convertToOutlookUrl(mailtoUrl) {
8817
+ // ms-outlook: scheme works on both Windows and Mac
8818
+ // Format: ms-outlook:mailto:email@example.com?subject=...&body=...
8819
+ return `ms-outlook:${mailtoUrl}`;
8806
8820
  }
8807
8821
  normalizeMailAction(action) {
8808
8822
  // Check if it's already a proper mail action
@@ -16838,12 +16852,24 @@ class ContactCardSectionComponent extends BaseSectionComponent {
16838
16852
  }
16839
16853
  return name[0]?.toUpperCase() || '?';
16840
16854
  }
16855
+ /**
16856
+ * Convert email address to Outlook URL scheme
16857
+ * Uses ms-outlook: scheme which works on both Windows and Mac
16858
+ *
16859
+ * @param email - Email address
16860
+ * @returns Outlook URL scheme
16861
+ */
16862
+ 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}`;
16866
+ }
16841
16867
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ContactCardSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16842
- 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]=\"'mailto:' + 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"] }] }); }
16868
+ 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"] }] }); }
16843
16869
  }
16844
16870
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ContactCardSectionComponent, decorators: [{
16845
16871
  type: Component,
16846
- args: [{ selector: 'lib-contact-card-section', standalone: true, imports: [CommonModule, SectionHeaderComponent, EmptyStateComponent, BadgeComponent], 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]=\"'mailto:' + 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"] }]
16872
+ args: [{ selector: 'lib-contact-card-section', standalone: true, imports: [CommonModule, SectionHeaderComponent, EmptyStateComponent, BadgeComponent], 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"] }]
16847
16873
  }] });
16848
16874
 
16849
16875
  var contactCardSection_component = /*#__PURE__*/Object.freeze({
@@ -27072,6 +27098,8 @@ class AICardRendererComponent {
27072
27098
  // Construct mailto link
27073
27099
  const queryString = params.length > 0 ? '?' + params.join('&') : '';
27074
27100
  const mailtoLink = `mailto:${recipientEmail}${queryString}`;
27101
+ // Convert to Outlook URL scheme (works on both Windows and Mac)
27102
+ const outlookLink = `ms-outlook:${mailtoLink}`;
27075
27103
  // Detect Edge browser for specific handling
27076
27104
  const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
27077
27105
  const isEdgeChromium = /Edg/i.test(userAgent) && !/OPR/i.test(userAgent);
@@ -27080,12 +27108,12 @@ class AICardRendererComponent {
27080
27108
  // Use window.location.href as primary method for Edge, anchor click for others
27081
27109
  if (isEdgeChromium) {
27082
27110
  // For Edge, use window.location.href directly (most reliable)
27083
- window.location.href = mailtoLink;
27111
+ window.location.href = outlookLink;
27084
27112
  }
27085
27113
  else if (typeof document !== 'undefined' && document.body) {
27086
27114
  // For other browsers, try anchor click method first
27087
27115
  const anchor = document.createElement('a');
27088
- anchor.href = mailtoLink;
27116
+ anchor.href = outlookLink;
27089
27117
  // Edge may require the element to be in the DOM and visible (even briefly)
27090
27118
  // Use a more Edge-compatible approach: minimal visibility
27091
27119
  anchor.style.position = 'absolute';
@@ -27103,7 +27131,7 @@ class AICardRendererComponent {
27103
27131
  catch (clickError) {
27104
27132
  // If click fails, fall back to window.location
27105
27133
  console.warn('Anchor click failed, using window.location fallback:', clickError);
27106
- window.location.href = mailtoLink;
27134
+ window.location.href = outlookLink;
27107
27135
  }
27108
27136
  // Remove anchor after a short delay
27109
27137
  setTimeout(() => {
@@ -27115,20 +27143,20 @@ class AICardRendererComponent {
27115
27143
  }
27116
27144
  else {
27117
27145
  // Fallback: use window.location if document.body is not available
27118
- window.location.href = mailtoLink;
27146
+ window.location.href = outlookLink;
27119
27147
  }
27120
27148
  }
27121
27149
  catch (error) {
27122
27150
  console.error('Failed to open email client:', error);
27123
27151
  // Final fallback: try direct window.location
27124
27152
  try {
27125
- window.location.href = mailtoLink;
27153
+ window.location.href = outlookLink;
27126
27154
  }
27127
27155
  catch (fallbackError) {
27128
27156
  console.error('Failed to open email client with fallback method:', fallbackError);
27129
27157
  // Last resort: try window.open (may be blocked by popup blockers)
27130
27158
  try {
27131
- const mailtoWindow = window.open(mailtoLink, '_blank');
27159
+ const mailtoWindow = window.open(outlookLink, '_blank');
27132
27160
  if (!mailtoWindow) {
27133
27161
  console.warn('Popup blocked. Please allow popups for this site to use email functionality.');
27134
27162
  }