@mj-biz-apps/common-ng 5.64.0 → 5.66.0

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.
Files changed (64) hide show
  1. package/dist/lib/components/__tests__/uuid-casing.test.d.ts +7 -0
  2. package/dist/lib/components/__tests__/uuid-casing.test.d.ts.map +1 -0
  3. package/dist/lib/components/__tests__/uuid-casing.test.js +78 -0
  4. package/dist/lib/components/__tests__/uuid-casing.test.js.map +1 -0
  5. package/dist/lib/components/address-editor/address-editor.component.d.ts.map +1 -1
  6. package/dist/lib/components/address-editor/address-editor.component.js +9 -7
  7. package/dist/lib/components/address-editor/address-editor.component.js.map +1 -1
  8. package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts +9 -2
  9. package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts.map +1 -1
  10. package/dist/lib/components/contact-method-list/contact-method-list.component.js +35 -22
  11. package/dist/lib/components/contact-method-list/contact-method-list.component.js.map +1 -1
  12. package/dist/lib/components/identity-header/__tests__/activity-identity-parent.test.d.ts +8 -0
  13. package/dist/lib/components/identity-header/__tests__/activity-identity-parent.test.d.ts.map +1 -0
  14. package/dist/lib/components/identity-header/__tests__/activity-identity-parent.test.js +75 -0
  15. package/dist/lib/components/identity-header/__tests__/activity-identity-parent.test.js.map +1 -0
  16. package/dist/lib/components/identity-header/__tests__/identity-hero-claims.test.d.ts +12 -0
  17. package/dist/lib/components/identity-header/__tests__/identity-hero-claims.test.d.ts.map +1 -0
  18. package/dist/lib/components/identity-header/__tests__/identity-hero-claims.test.js +94 -0
  19. package/dist/lib/components/identity-header/__tests__/identity-hero-claims.test.js.map +1 -0
  20. package/dist/lib/components/identity-header/activity-identity.component.d.ts +9 -0
  21. package/dist/lib/components/identity-header/activity-identity.component.d.ts.map +1 -1
  22. package/dist/lib/components/identity-header/activity-identity.component.js +115 -73
  23. package/dist/lib/components/identity-header/activity-identity.component.js.map +1 -1
  24. package/dist/lib/components/identity-header/organization-identity.component.js +51 -20
  25. package/dist/lib/components/identity-header/organization-identity.component.js.map +1 -1
  26. package/dist/lib/components/identity-header/person-identity.component.js +41 -30
  27. package/dist/lib/components/identity-header/person-identity.component.js.map +1 -1
  28. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.d.ts.map +1 -1
  29. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js +11 -7
  30. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js.map +1 -1
  31. package/dist/lib/components/party-field/party-field.component.js +5 -5
  32. package/dist/lib/components/party-field/party-field.component.js.map +1 -1
  33. package/dist/lib/components/related-chips/related-chips.component.d.ts +1 -1
  34. package/dist/lib/components/related-chips/related-chips.component.d.ts.map +1 -1
  35. package/dist/lib/components/related-chips/related-chips.component.js +34 -23
  36. package/dist/lib/components/related-chips/related-chips.component.js.map +1 -1
  37. package/dist/lib/components/relationship-graph/common-relationship-graph.component.d.ts.map +1 -1
  38. package/dist/lib/components/relationship-graph/common-relationship-graph.component.js +29 -20
  39. package/dist/lib/components/relationship-graph/common-relationship-graph.component.js.map +1 -1
  40. package/dist/lib/components/relationship-list/relationship-list.component.js +13 -11
  41. package/dist/lib/components/relationship-list/relationship-list.component.js.map +1 -1
  42. package/dist/lib/components/selling-company-field/__tests__/selling-company-field.component.test.js +110 -4
  43. package/dist/lib/components/selling-company-field/__tests__/selling-company-field.component.test.js.map +1 -1
  44. package/dist/lib/components/selling-company-field/selling-company-field.component.d.ts +34 -3
  45. package/dist/lib/components/selling-company-field/selling-company-field.component.d.ts.map +1 -1
  46. package/dist/lib/components/selling-company-field/selling-company-field.component.js +153 -6
  47. package/dist/lib/components/selling-company-field/selling-company-field.component.js.map +1 -1
  48. package/dist/lib/custom/panels/activity-content.panel.js +2 -2
  49. package/dist/lib/custom/panels/activity-hierarchy.panel.js +2 -2
  50. package/dist/lib/custom/panels/activity-hierarchy.panel.js.map +1 -1
  51. package/dist/lib/custom/panels/activity-links.panel.d.ts.map +1 -1
  52. package/dist/lib/custom/panels/activity-links.panel.js +12 -5
  53. package/dist/lib/custom/panels/activity-links.panel.js.map +1 -1
  54. package/dist/lib/custom/panels/activity-type-hierarchy.panel.js +2 -2
  55. package/dist/lib/custom/panels/activity-type-hierarchy.panel.js.map +1 -1
  56. package/dist/lib/custom/panels/organization-staff.panel.d.ts.map +1 -1
  57. package/dist/lib/custom/panels/organization-staff.panel.js +15 -7
  58. package/dist/lib/custom/panels/organization-staff.panel.js.map +1 -1
  59. package/dist/lib/pages/activities-dashboard.page.d.ts +2 -0
  60. package/dist/lib/pages/activities-dashboard.page.d.ts.map +1 -1
  61. package/dist/lib/pages/activities-dashboard.page.js +10 -5
  62. package/dist/lib/pages/activities-dashboard.page.js.map +1 -1
  63. package/dist/lib/pages/common-dashboard.page.js +2 -2
  64. package/package.json +2 -2
@@ -0,0 +1,94 @@
1
+ /**
2
+ * #343 — the Organization and Person heroes claim the generated identity sections
3
+ * (`replacesSectionKey`), and a claim hides the generated section outright: rail item and Manage
4
+ * Sections entry included. So the hero is the only place those fields can be edited. The heroes
5
+ * rendered a subset of them (Organizations lost Type, Description, Founded date, Tax ID and Status;
6
+ * People lost Middle name and Display name), and put even that subset behind the collapse toggle.
7
+ *
8
+ * Both are structural, so these tests read the structures: the registration's claim, the generated
9
+ * section's field list, and the hero template.
10
+ */
11
+ import '@angular/compiler';
12
+ import { readFileSync } from 'node:fs';
13
+ import { fileURLToPath } from 'node:url';
14
+ import { describe, expect, it } from 'vitest';
15
+ import { MJGlobal } from '@memberjunction/global';
16
+ import { BaseFormPanel } from '@memberjunction/ng-base-forms';
17
+ import { OrganizationHeaderPanel } from '../../../custom/panels/organization-header.panel';
18
+ import { PersonHeaderPanel } from '../../../custom/panels/person-header.panel';
19
+ function ReadRepoFile(relativeToThisFile) {
20
+ return readFileSync(fileURLToPath(new URL(relativeToThisFile, import.meta.url)), 'utf8');
21
+ }
22
+ function FieldNames(markup) {
23
+ return [...markup.matchAll(/FieldName="([^"]+)"/g)].map((m) => m[1]);
24
+ }
25
+ /** Field names declared inside one generated `<mj-collapsible-panel SectionKey="...">` block. */
26
+ function GeneratedSectionFields(generatedHtml, sectionKey) {
27
+ const start = generatedHtml.indexOf(`SectionKey="${sectionKey}"`);
28
+ expect(start, `generated section ${sectionKey} not found`).toBeGreaterThan(-1);
29
+ const end = generatedHtml.indexOf('</mj-collapsible-panel>', start);
30
+ expect(end, `generated section ${sectionKey} is unterminated`).toBeGreaterThan(start);
31
+ return FieldNames(generatedHtml.slice(start, end));
32
+ }
33
+ /** The hero's edit block: from its `@if (EditMode)` to the end of the template. */
34
+ function EditBlock(heroHtml) {
35
+ const start = heroHtml.indexOf('<div class="biz-hero__edit">');
36
+ expect(start, 'hero has no edit block').toBeGreaterThan(-1);
37
+ return heroHtml.slice(start);
38
+ }
39
+ /** True when `index` sits inside the `@if (!Collapsed) { ... }` block. Braces in a template balance. */
40
+ function InsideCollapsedBlock(heroHtml, index) {
41
+ const open = heroHtml.indexOf('@if (!Collapsed) {');
42
+ if (open === -1 || open > index) {
43
+ return false;
44
+ }
45
+ let depth = 0;
46
+ for (let i = open; i < index; i++) {
47
+ if (heroHtml[i] === '{') {
48
+ depth++;
49
+ }
50
+ else if (heroHtml[i] === '}' && --depth === 0) {
51
+ return false; // the collapsed block closed before `index`
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+ function ClaimedSectionKey(panel) {
57
+ const registration = MJGlobal.Instance.ClassFactory.GetAllRegistrations(BaseFormPanel).find((r) => r.SubClass === panel);
58
+ return registration?.Metadata?.['replacesSectionKey'];
59
+ }
60
+ const HEROES = [
61
+ {
62
+ name: 'Organization',
63
+ panel: OrganizationHeaderPanel,
64
+ sectionKey: 'organizationIdentity',
65
+ hero: '../organization-identity.component.html',
66
+ generated: '../../../generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.html',
67
+ },
68
+ {
69
+ name: 'Person',
70
+ panel: PersonHeaderPanel,
71
+ sectionKey: 'personalIdentity',
72
+ hero: '../person-identity.component.html',
73
+ generated: '../../../generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.html',
74
+ },
75
+ ];
76
+ describe.each(HEROES)('the $name hero owns the fields of the section it claims', ({ panel, sectionKey, hero, generated }) => {
77
+ const heroHtml = ReadRepoFile(hero);
78
+ it(`claims the generated ${sectionKey} section`, () => {
79
+ expect(ClaimedSectionKey(panel)).toBe(sectionKey);
80
+ });
81
+ it('renders every field of that section as an input in edit mode', () => {
82
+ const claimed = GeneratedSectionFields(ReadRepoFile(generated), sectionKey);
83
+ expect(claimed.length).toBeGreaterThan(0);
84
+ const rendered = FieldNames(EditBlock(heroHtml));
85
+ const lost = claimed.filter((field) => !rendered.includes(field));
86
+ expect(lost, 'claiming a generated section must not drop its fields').toEqual([]);
87
+ expect(EditBlock(heroHtml)).toContain('[EditMode]="EditMode"');
88
+ });
89
+ it('keeps the inputs when the header is collapsed', () => {
90
+ const editIndex = heroHtml.indexOf('<div class="biz-hero__edit">');
91
+ expect(InsideCollapsedBlock(heroHtml, editIndex)).toBe(false);
92
+ });
93
+ });
94
+ //# sourceMappingURL=identity-hero-claims.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-hero-claims.test.js","sourceRoot":"","sources":["../../../../../src/lib/components/identity-header/__tests__/identity-hero-claims.test.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export declare class ActivityIdentityComponent implements OnInit {
18
18
  FormContext?: FormContext;
19
19
  Navigate: EventEmitter<FormNavigationEvent>;
20
20
  Collapsed: boolean;
21
+ private parentTitle;
22
+ private parentTitleFor;
21
23
  ngOnInit(): void;
22
24
  ToggleCollapsed(): void;
23
25
  get TypeStyle(): ActivityTypeStyle;
@@ -32,6 +34,13 @@ export declare class ActivityIdentityComponent implements OnInit {
32
34
  get MeetingURL(): string | null;
33
35
  get LocationDisplay(): string | null;
34
36
  get SourceDisplay(): string;
37
+ /**
38
+ * The "Thread / Parent" label. Reads `ParentActivityID` and the parent's own Title, never the
39
+ * virtual `ParentActivity` name field: V202609112330 removes that field on hosts whose
40
+ * `vwActivities` lacks the column, where it always reads null and hid the link (#311).
41
+ */
42
+ get ParentActivityLabel(): string;
43
+ private loadParentTitle;
35
44
  OnParentActivityClick(event: MouseEvent): void;
36
45
  static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIdentityComponent, never>;
37
46
  static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIdentityComponent, "bizapps-activity-identity", never, { "Record": { "alias": "Record"; "required": true; }; "EditMode": { "alias": "EditMode"; "required": false; }; "FormContext": { "alias": "FormContext"; "required": false; }; }, { "Navigate": "Navigate"; }, never, never, true, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"activity-identity.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/identity-header/activity-identity.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAI/E,OAAO,EAAmB,WAAW,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAElG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;;AAElF,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB;AA8CD;;;;GAIG;AACH,qBAOa,yBAA0B,YAAW,MAAM;IACzB,MAAM,EAAG,6BAA6B,CAAC;IACzD,QAAQ,UAAS;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IACzB,QAAQ,oCAA2C;IAEtD,SAAS,UAAS;IAElB,QAAQ,IAAI,IAAI;IAWhB,eAAe,IAAI,IAAI;IAQ9B,IAAW,SAAS,IAAI,iBAAiB,CAGxC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED,IAAW,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAc3E;IAED,IAAW,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM3C;IAED,IAAW,aAAa,IAAI,SAAS,GAAG,QAAQ,GAAG,MAAM,CAKxD;IAED,IAAW,aAAa,IAAI,MAAM,CAKjC;IAED,IAAW,YAAY,IAAI,MAAM,GAAG,IAAI,CAYvC;IAED,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAQrC;IAED,IAAW,eAAe,IAAI,MAAM,GAAG,IAAI,CAE1C;IAED,IAAW,aAAa,IAAI,MAAM,CAQjC;IAEM,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAhI5C,yBAAyB;2CAAzB,yBAAyB;CA4IrC"}
1
+ {"version":3,"file":"activity-identity.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/identity-header/activity-identity.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAK/E,OAAO,EAAmB,WAAW,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAElG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;;AAKlF,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB;AA8CD;;;;GAIG;AACH,qBAOa,yBAA0B,YAAW,MAAM;IACzB,MAAM,EAAG,6BAA6B,CAAC;IACzD,QAAQ,UAAS;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IACzB,QAAQ,oCAA2C;IAEtD,SAAS,UAAS;IAEzB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAEtC,QAAQ,IAAI,IAAI;IAYhB,eAAe,IAAI,IAAI;IAQ9B,IAAW,SAAS,IAAI,iBAAiB,CAGxC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED,IAAW,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAc3E;IAED,IAAW,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM3C;IAED,IAAW,aAAa,IAAI,SAAS,GAAG,QAAQ,GAAG,MAAM,CAKxD;IAED,IAAW,aAAa,IAAI,MAAM,CAKjC;IAED,IAAW,YAAY,IAAI,MAAM,GAAG,IAAI,CAYvC;IAED,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAQrC;IAED,IAAW,eAAe,IAAI,MAAM,GAAG,IAAI,CAE1C;IAED,IAAW,aAAa,IAAI,MAAM,CAQjC;IAED;;;;OAIG;IACH,IAAW,mBAAmB,IAAI,MAAM,CAGvC;YAEa,eAAe;IA0BtB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAxK5C,yBAAyB;2CAAzB,yBAAyB;CAoLrC"}
@@ -1,16 +1,18 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { CompositeKey } from '@memberjunction/core';
3
+ import { CompositeKey, LogError, RunView } from '@memberjunction/core';
4
+ import { IsValidUUID, UUIDsEqual } from '@memberjunction/global';
4
5
  import { UserInfoEngine } from '@memberjunction/core-entities';
5
6
  import { BaseFormsModule } from '@memberjunction/ng-base-forms';
6
7
  import { LinkDirectivesModule } from '@memberjunction/ng-link-directives';
7
8
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
+ import * as i1 from "@memberjunction/ng-base-forms";
10
+ import * as i2 from "@angular/common";
9
11
  function ActivityIdentityComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
10
- i0.ɵɵdomElementStart(0, "span", 9);
11
- i0.ɵɵdomElement(1, "i");
12
+ i0.ɵɵelementStart(0, "span", 9);
13
+ i0.ɵɵelement(1, "i");
12
14
  i0.ɵɵtext(2);
13
- i0.ɵɵdomElementEnd();
15
+ i0.ɵɵelementEnd();
14
16
  } if (rf & 2) {
15
17
  const ctx_r0 = i0.ɵɵnextContext();
16
18
  i0.ɵɵadvance();
@@ -19,9 +21,9 @@ function ActivityIdentityComponent_Conditional_12_Template(rf, ctx) { if (rf & 1
19
21
  i0.ɵɵtextInterpolate1(" ", ctx_r0.Record.Direction, " ");
20
22
  } }
21
23
  function ActivityIdentityComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
22
- i0.ɵɵdomElementStart(0, "span", 10);
24
+ i0.ɵɵelementStart(0, "span", 10);
23
25
  i0.ɵɵtext(1);
24
- i0.ɵɵdomElementEnd();
26
+ i0.ɵɵelementEnd();
25
27
  } if (rf & 2) {
26
28
  const ctx_r0 = i0.ɵɵnextContext();
27
29
  i0.ɵɵattribute("data-tone", ctx_r0.StatusTone);
@@ -29,20 +31,20 @@ function ActivityIdentityComponent_Conditional_13_Template(rf, ctx) { if (rf & 1
29
31
  i0.ɵɵtextInterpolate1(" ", ctx_r0.Record.Status, " ");
30
32
  } }
31
33
  function ActivityIdentityComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵdomElementStart(0, "span", 11);
33
- i0.ɵɵdomElement(1, "i", 14);
34
+ i0.ɵɵelementStart(0, "span", 11);
35
+ i0.ɵɵelement(1, "i", 14);
34
36
  i0.ɵɵtext(2);
35
- i0.ɵɵdomElementEnd();
37
+ i0.ɵɵelementEnd();
36
38
  } if (rf & 2) {
37
39
  const ctx_r0 = i0.ɵɵnextContext();
38
40
  i0.ɵɵadvance(2);
39
41
  i0.ɵɵtextInterpolate1(" ", ctx_r0.Record.Outcome, " ");
40
42
  } }
41
43
  function ActivityIdentityComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵdomElementStart(0, "span", 12);
43
- i0.ɵɵdomElement(1, "i");
44
+ i0.ɵɵelementStart(0, "span", 12);
45
+ i0.ɵɵelement(1, "i");
44
46
  i0.ɵɵtext(2);
45
- i0.ɵɵdomElementEnd();
47
+ i0.ɵɵelementEnd();
46
48
  } if (rf & 2) {
47
49
  const ctx_r0 = i0.ɵɵnextContext();
48
50
  i0.ɵɵattribute("data-tone", ctx_r0.SentimentTone);
@@ -52,23 +54,23 @@ function ActivityIdentityComponent_Conditional_15_Template(rf, ctx) { if (rf & 1
52
54
  i0.ɵɵtextInterpolate1(" Sentiment ", ctx_r0.SentimentDisplay, " ");
53
55
  } }
54
56
  function ActivityIdentityComponent_Conditional_18_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵdomElementStart(0, "span", 20);
57
+ i0.ɵɵelementStart(0, "span", 20);
56
58
  i0.ɵɵtext(1);
57
- i0.ɵɵdomElementEnd();
59
+ i0.ɵɵelementEnd();
58
60
  } if (rf & 2) {
59
61
  const ctx_r0 = i0.ɵɵnextContext(3);
60
62
  i0.ɵɵadvance();
61
63
  i0.ɵɵtextInterpolate1("(", ctx_r0.DurationText, ")");
62
64
  } }
63
65
  function ActivityIdentityComponent_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
66
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
65
67
  i0.ɵɵtext(2, "When");
66
- i0.ɵɵdomElementEnd();
67
- i0.ɵɵdomElementStart(3, "span", 19);
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(3, "span", 19);
68
70
  i0.ɵɵtext(4);
69
71
  i0.ɵɵpipe(5, "date");
70
72
  i0.ɵɵconditionalCreate(6, ActivityIdentityComponent_Conditional_18_Conditional_1_Conditional_6_Template, 2, 1, "span", 20);
71
- i0.ɵɵdomElementEnd()();
73
+ i0.ɵɵelementEnd()();
72
74
  } if (rf & 2) {
73
75
  const ctx_r0 = i0.ɵɵnextContext(2);
74
76
  i0.ɵɵadvance(4);
@@ -77,51 +79,51 @@ function ActivityIdentityComponent_Conditional_18_Conditional_1_Template(rf, ctx
77
79
  i0.ɵɵconditional(ctx_r0.DurationText ? 6 : -1);
78
80
  } }
79
81
  function ActivityIdentityComponent_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
82
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
81
83
  i0.ɵɵtext(2, "Logged By");
82
- i0.ɵɵdomElementEnd();
83
- i0.ɵɵdomElementStart(3, "span", 19);
84
+ i0.ɵɵelementEnd();
85
+ i0.ɵɵelementStart(3, "span", 19);
84
86
  i0.ɵɵtext(4);
85
- i0.ɵɵdomElementEnd()();
87
+ i0.ɵɵelementEnd()();
86
88
  } if (rf & 2) {
87
89
  const ctx_r0 = i0.ɵɵnextContext(2);
88
90
  i0.ɵɵadvance(4);
89
91
  i0.ɵɵtextInterpolate(ctx_r0.Record.LoggedByUser);
90
92
  } }
91
93
  function ActivityIdentityComponent_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
94
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
93
95
  i0.ɵɵtext(2, "Location");
94
- i0.ɵɵdomElementEnd();
95
- i0.ɵɵdomElementStart(3, "span", 19);
96
- i0.ɵɵdomElement(4, "i", 21);
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵelementStart(3, "span", 19);
98
+ i0.ɵɵelement(4, "i", 21);
97
99
  i0.ɵɵtext(5);
98
- i0.ɵɵdomElementEnd()();
100
+ i0.ɵɵelementEnd()();
99
101
  } if (rf & 2) {
100
102
  const ctx_r0 = i0.ɵɵnextContext(2);
101
103
  i0.ɵɵadvance(5);
102
104
  i0.ɵɵtextInterpolate1(" ", ctx_r0.LocationDisplay, " ");
103
105
  } }
104
106
  function ActivityIdentityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
107
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
106
108
  i0.ɵɵtext(2, "Video Meeting");
107
- i0.ɵɵdomElementEnd();
108
- i0.ɵɵdomElementStart(3, "a", 22);
109
- i0.ɵɵdomElement(4, "i", 23);
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(3, "a", 22);
111
+ i0.ɵɵelement(4, "i", 23);
110
112
  i0.ɵɵtext(5, " Join Meeting ");
111
- i0.ɵɵdomElementEnd()();
113
+ i0.ɵɵelementEnd()();
112
114
  } if (rf & 2) {
113
115
  const ctx_r0 = i0.ɵɵnextContext(2);
114
116
  i0.ɵɵadvance(3);
115
- i0.ɵɵdomProperty("href", ctx_r0.MeetingURL, i0.ɵɵsanitizeUrl);
117
+ i0.ɵɵproperty("href", ctx_r0.MeetingURL, i0.ɵɵsanitizeUrl);
116
118
  } }
117
119
  function ActivityIdentityComponent_Conditional_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
118
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
120
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
119
121
  i0.ɵɵtext(2, "Source");
120
- i0.ɵɵdomElementEnd();
121
- i0.ɵɵdomElementStart(3, "span", 19);
122
- i0.ɵɵdomElement(4, "i", 24);
122
+ i0.ɵɵelementEnd();
123
+ i0.ɵɵelementStart(3, "span", 19);
124
+ i0.ɵɵelement(4, "i", 24);
123
125
  i0.ɵɵtext(5);
124
- i0.ɵɵdomElementEnd()();
126
+ i0.ɵɵelementEnd()();
125
127
  } if (rf & 2) {
126
128
  const ctx_r0 = i0.ɵɵnextContext(2);
127
129
  i0.ɵɵadvance(5);
@@ -129,37 +131,39 @@ function ActivityIdentityComponent_Conditional_18_Conditional_5_Template(rf, ctx
129
131
  } }
130
132
  function ActivityIdentityComponent_Conditional_18_Conditional_6_Template(rf, ctx) { if (rf & 1) {
131
133
  const _r2 = i0.ɵɵgetCurrentView();
132
- i0.ɵɵdomElementStart(0, "div", 16)(1, "span", 18);
134
+ i0.ɵɵelementStart(0, "div", 16)(1, "span", 18);
133
135
  i0.ɵɵtext(2, "Thread / Parent");
134
- i0.ɵɵdomElementEnd();
135
- i0.ɵɵdomElementStart(3, "button", 25);
136
- i0.ɵɵdomListener("click", function ActivityIdentityComponent_Conditional_18_Conditional_6_Template_button_click_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnParentActivityClick($event)); });
137
- i0.ɵɵdomElement(4, "i", 26);
136
+ i0.ɵɵelementEnd();
137
+ i0.ɵɵelementStart(3, "button", 25);
138
+ i0.ɵɵlistener("Navigate", function ActivityIdentityComponent_Conditional_18_Conditional_6_Template_button_Navigate_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.Navigate.emit($event)); })("click", function ActivityIdentityComponent_Conditional_18_Conditional_6_Template_button_click_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnParentActivityClick($event)); });
139
+ i0.ɵɵelement(4, "i", 26);
138
140
  i0.ɵɵtext(5);
139
- i0.ɵɵdomElementEnd()();
141
+ i0.ɵɵelementEnd()();
140
142
  } if (rf & 2) {
141
143
  const ctx_r0 = i0.ɵɵnextContext(2);
142
- i0.ɵɵadvance(5);
143
- i0.ɵɵtextInterpolate1(" ", ctx_r0.Record.ParentActivity, " ");
144
+ i0.ɵɵadvance(3);
145
+ i0.ɵɵproperty("mjRecordLink", ctx_r0.Record)("HandleClick", false);
146
+ i0.ɵɵadvance(2);
147
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.ParentActivityLabel, " ");
144
148
  } }
145
149
  function ActivityIdentityComponent_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵdomElementStart(0, "div", 17);
150
+ i0.ɵɵelementStart(0, "div", 17);
147
151
  i0.ɵɵtext(1);
148
- i0.ɵɵdomElementEnd();
152
+ i0.ɵɵelementEnd();
149
153
  } if (rf & 2) {
150
154
  const ctx_r0 = i0.ɵɵnextContext(2);
151
155
  i0.ɵɵadvance();
152
156
  i0.ɵɵtextInterpolate1(" ", ctx_r0.Record.Description, " ");
153
157
  } }
154
158
  function ActivityIdentityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
155
- i0.ɵɵdomElementStart(0, "div", 15);
159
+ i0.ɵɵelementStart(0, "div", 15);
156
160
  i0.ɵɵconditionalCreate(1, ActivityIdentityComponent_Conditional_18_Conditional_1_Template, 7, 5, "div", 16);
157
161
  i0.ɵɵconditionalCreate(2, ActivityIdentityComponent_Conditional_18_Conditional_2_Template, 5, 1, "div", 16);
158
162
  i0.ɵɵconditionalCreate(3, ActivityIdentityComponent_Conditional_18_Conditional_3_Template, 6, 1, "div", 16);
159
163
  i0.ɵɵconditionalCreate(4, ActivityIdentityComponent_Conditional_18_Conditional_4_Template, 6, 1, "div", 16);
160
164
  i0.ɵɵconditionalCreate(5, ActivityIdentityComponent_Conditional_18_Conditional_5_Template, 6, 1, "div", 16);
161
- i0.ɵɵconditionalCreate(6, ActivityIdentityComponent_Conditional_18_Conditional_6_Template, 6, 1, "div", 16);
162
- i0.ɵɵdomElementEnd();
165
+ i0.ɵɵconditionalCreate(6, ActivityIdentityComponent_Conditional_18_Conditional_6_Template, 6, 3, "div", 16);
166
+ i0.ɵɵelementEnd();
163
167
  i0.ɵɵconditionalCreate(7, ActivityIdentityComponent_Conditional_18_Conditional_7_Template, 2, 1, "div", 17);
164
168
  } if (rf & 2) {
165
169
  const ctx_r0 = i0.ɵɵnextContext();
@@ -174,10 +178,11 @@ function ActivityIdentityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1
174
178
  i0.ɵɵadvance();
175
179
  i0.ɵɵconditional(ctx_r0.Record.Source ? 5 : -1);
176
180
  i0.ɵɵadvance();
177
- i0.ɵɵconditional(ctx_r0.Record.ParentActivity ? 6 : -1);
181
+ i0.ɵɵconditional(ctx_r0.Record.ParentActivityID ? 6 : -1);
178
182
  i0.ɵɵadvance();
179
183
  i0.ɵɵconditional(ctx_r0.Record.Description ? 7 : -1);
180
184
  } }
185
+ const ACTIVITIES_ENTITY = 'MJ_BizApps_Common: Activities';
181
186
  const ACTIVITY_TYPE_STYLES = {
182
187
  email: {
183
188
  icon: 'fa-solid fa-envelope',
@@ -231,7 +236,10 @@ export class ActivityIdentityComponent {
231
236
  FormContext;
232
237
  Navigate = new EventEmitter();
233
238
  Collapsed = false;
239
+ parentTitle = null;
240
+ parentTitleFor = null;
234
241
  ngOnInit() {
242
+ void this.loadParentTitle();
235
243
  const raw = UserInfoEngine.Instance.GetSetting('mj.identityHeader.collapsed.activity');
236
244
  if (raw) {
237
245
  try {
@@ -346,6 +354,40 @@ export class ActivityIdentityComponent {
346
354
  }
347
355
  return 'Manual';
348
356
  }
357
+ /**
358
+ * The "Thread / Parent" label. Reads `ParentActivityID` and the parent's own Title, never the
359
+ * virtual `ParentActivity` name field: V202609112330 removes that field on hosts whose
360
+ * `vwActivities` lacks the column, where it always reads null and hid the link (#311).
361
+ */
362
+ get ParentActivityLabel() {
363
+ const loaded = this.parentTitle && UUIDsEqual(this.parentTitleFor, this.Record.ParentActivityID);
364
+ return loaded ? this.parentTitle : 'Parent activity';
365
+ }
366
+ async loadParentTitle() {
367
+ const parentID = this.Record.ParentActivityID;
368
+ if (!parentID) {
369
+ return;
370
+ }
371
+ if (!IsValidUUID(parentID)) {
372
+ // Checked before it goes into the filter; the link still renders with a generic label.
373
+ LogError(`ActivityIdentity: ParentActivityID '${parentID}' is not a UUID; not loading its title`);
374
+ return;
375
+ }
376
+ const result = await new RunView(this.Record.RunViewProviderToUse).RunView({
377
+ EntityName: ACTIVITIES_ENTITY,
378
+ Fields: ['Title'],
379
+ ExtraFilter: `ID = '${parentID.trim()}'`,
380
+ ResultType: 'simple',
381
+ MaxRows: 1,
382
+ });
383
+ if (!result.Success) {
384
+ // The link still renders, with a generic label; only the parent's name is missing.
385
+ LogError(`ActivityIdentity: failed to load parent activity '${parentID}': ${result.ErrorMessage ?? 'unknown error'}`);
386
+ return;
387
+ }
388
+ this.parentTitle = result.Results[0]?.Title || null;
389
+ this.parentTitleFor = parentID;
390
+ }
349
391
  OnParentActivityClick(event) {
350
392
  const id = this.Record.ParentActivityID;
351
393
  if (!id)
@@ -354,34 +396,34 @@ export class ActivityIdentityComponent {
354
396
  event.stopPropagation();
355
397
  this.Navigate.emit({
356
398
  Kind: 'record',
357
- EntityName: 'MJ_BizApps_Common: Activities',
399
+ EntityName: ACTIVITIES_ENTITY,
358
400
  PrimaryKey: CompositeKey.FromKeyValuePair('ID', id),
359
401
  OpenInNewTab: event.ctrlKey || event.metaKey,
360
402
  });
361
403
  }
362
404
  static ɵfac = function ActivityIdentityComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActivityIdentityComponent)(); };
363
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityIdentityComponent, selectors: [["bizapps-activity-identity"]], inputs: { Record: "Record", EditMode: "EditMode", FormContext: "FormContext" }, outputs: { Navigate: "Navigate" }, decls: 19, vars: 19, consts: [[1, "biz-hero"], [1, "biz-hero__identity"], ["aria-hidden", "true", 1, "biz-hero__avatar"], [2, "font-size", "1.5rem", "color", "#ffffff"], [1, "biz-hero__copy"], [1, "biz-hero__title-row"], [1, "biz-hero__name"], [1, "biz-hero__badges"], [1, "biz-hero__entity-chip"], ["data-tone", "info", 1, "biz-hero__chip"], [1, "biz-hero__chip"], ["data-tone", "purple", 1, "biz-hero__chip"], ["title", "Derived Sentiment Score", 1, "biz-hero__chip"], ["type", "button", 1, "biz-hero__toggle", 3, "click", "title"], [1, "fa-solid", "fa-flag"], [1, "biz-hero__summary"], [1, "biz-hero__stat"], [2, "padding-top", "var(--mj-space-2, 8px)", "border-top", "1px solid var(--mj-border-subtle, #f1f5f9)", "font-size", "var(--mj-text-sm, 13px)", "line-height", "1.5", "color", "var(--mj-text-secondary, #334155)", "white-space", "pre-wrap"], [1, "biz-hero__stat-label"], [1, "biz-hero__stat-val"], [2, "opacity", "0.75", "font-size", "0.88em", "font-weight", "500"], [1, "fa-solid", "fa-location-dot", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"], ["target", "_blank", "rel", "noopener noreferrer", 1, "biz-hero__stat-val", 2, "color", "var(--mj-brand-primary)", "text-decoration", "underline", "display", "inline-flex", "align-items", "center", "gap", "4px", 3, "href"], [1, "fa-solid", "fa-video"], [1, "fa-solid", "fa-cloud", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"], ["type", "button", 1, "biz-hero__stat-val", 3, "click"], [1, "fa-solid", "fa-reply", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"]], template: function ActivityIdentityComponent_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵdomElementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
365
- i0.ɵɵdomElement(3, "i", 3);
366
- i0.ɵɵdomElementEnd();
367
- i0.ɵɵdomElementStart(4, "div", 4)(5, "div", 5)(6, "h1", 6);
405
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityIdentityComponent, selectors: [["bizapps-activity-identity"]], inputs: { Record: "Record", EditMode: "EditMode", FormContext: "FormContext" }, outputs: { Navigate: "Navigate" }, decls: 19, vars: 19, consts: [[1, "biz-hero"], [1, "biz-hero__identity"], ["aria-hidden", "true", 1, "biz-hero__avatar"], [2, "font-size", "1.5rem", "color", "#ffffff"], [1, "biz-hero__copy"], [1, "biz-hero__title-row"], [1, "biz-hero__name"], [1, "biz-hero__badges"], [1, "biz-hero__entity-chip"], ["data-tone", "info", 1, "biz-hero__chip"], [1, "biz-hero__chip"], ["data-tone", "purple", 1, "biz-hero__chip"], ["title", "Derived Sentiment Score", 1, "biz-hero__chip"], ["type", "button", 1, "biz-hero__toggle", 3, "click", "title"], [1, "fa-solid", "fa-flag"], [1, "biz-hero__summary"], [1, "biz-hero__stat"], [2, "padding-top", "var(--mj-space-2, 8px)", "border-top", "1px solid var(--mj-border-subtle, #f1f5f9)", "font-size", "var(--mj-text-sm, 13px)", "line-height", "1.5", "color", "var(--mj-text-secondary, #334155)", "white-space", "pre-wrap"], [1, "biz-hero__stat-label"], [1, "biz-hero__stat-val"], [2, "opacity", "0.75", "font-size", "0.88em", "font-weight", "500"], [1, "fa-solid", "fa-location-dot", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"], ["target", "_blank", "rel", "noopener noreferrer", 1, "biz-hero__stat-val", 2, "color", "var(--mj-brand-primary)", "text-decoration", "underline", "display", "inline-flex", "align-items", "center", "gap", "4px", 3, "href"], [1, "fa-solid", "fa-video"], [1, "fa-solid", "fa-cloud", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"], ["type", "button", "FieldName", "ParentActivityID", "EntityName", "MJ_BizApps_Common: Activities", 1, "biz-hero__stat-val", 3, "Navigate", "click", "mjRecordLink", "HandleClick"], [1, "fa-solid", "fa-reply", 2, "font-size", "0.85em", "opacity", "0.7", "margin-right", "4px"]], template: function ActivityIdentityComponent_Template(rf, ctx) { if (rf & 1) {
406
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
407
+ i0.ɵɵelement(3, "i", 3);
408
+ i0.ɵɵelementEnd();
409
+ i0.ɵɵelementStart(4, "div", 4)(5, "div", 5)(6, "h1", 6);
368
410
  i0.ɵɵtext(7);
369
- i0.ɵɵdomElementEnd()();
370
- i0.ɵɵdomElementStart(8, "div", 7)(9, "span", 8);
371
- i0.ɵɵdomElement(10, "i");
411
+ i0.ɵɵelementEnd()();
412
+ i0.ɵɵelementStart(8, "div", 7)(9, "span", 8);
413
+ i0.ɵɵelement(10, "i");
372
414
  i0.ɵɵtext(11);
373
- i0.ɵɵdomElementEnd();
415
+ i0.ɵɵelementEnd();
374
416
  i0.ɵɵconditionalCreate(12, ActivityIdentityComponent_Conditional_12_Template, 3, 3, "span", 9);
375
417
  i0.ɵɵconditionalCreate(13, ActivityIdentityComponent_Conditional_13_Template, 2, 2, "span", 10);
376
418
  i0.ɵɵconditionalCreate(14, ActivityIdentityComponent_Conditional_14_Template, 3, 1, "span", 11);
377
419
  i0.ɵɵconditionalCreate(15, ActivityIdentityComponent_Conditional_15_Template, 3, 4, "span", 12);
378
- i0.ɵɵdomElementEnd()();
379
- i0.ɵɵdomElementStart(16, "button", 13);
380
- i0.ɵɵdomListener("click", function ActivityIdentityComponent_Template_button_click_16_listener() { return ctx.ToggleCollapsed(); });
381
- i0.ɵɵdomElement(17, "i");
382
- i0.ɵɵdomElementEnd()();
420
+ i0.ɵɵelementEnd()();
421
+ i0.ɵɵelementStart(16, "button", 13);
422
+ i0.ɵɵlistener("click", function ActivityIdentityComponent_Template_button_click_16_listener() { return ctx.ToggleCollapsed(); });
423
+ i0.ɵɵelement(17, "i");
424
+ i0.ɵɵelementEnd()();
383
425
  i0.ɵɵconditionalCreate(18, ActivityIdentityComponent_Conditional_18_Template, 8, 7);
384
- i0.ɵɵdomElementEnd();
426
+ i0.ɵɵelementEnd();
385
427
  } if (rf & 2) {
386
428
  i0.ɵɵclassProp("biz-hero--collapsed", ctx.Collapsed);
387
429
  i0.ɵɵadvance(2);
@@ -403,17 +445,17 @@ export class ActivityIdentityComponent {
403
445
  i0.ɵɵadvance();
404
446
  i0.ɵɵconditional(ctx.SentimentDisplay ? 15 : -1);
405
447
  i0.ɵɵadvance();
406
- i0.ɵɵdomProperty("title", ctx.Collapsed ? "Expand header" : "Collapse header");
448
+ i0.ɵɵproperty("title", ctx.Collapsed ? "Expand header" : "Collapse header");
407
449
  i0.ɵɵattribute("aria-label", ctx.Collapsed ? "Expand header" : "Collapse header");
408
450
  i0.ɵɵadvance();
409
451
  i0.ɵɵclassMap(ctx.Collapsed ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-up");
410
452
  i0.ɵɵadvance();
411
453
  i0.ɵɵconditional(!ctx.Collapsed ? 18 : -1);
412
- } }, dependencies: [CommonModule, BaseFormsModule, LinkDirectivesModule, i1.DatePipe], styles: [".biz-hero[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: 20px 24px;\n margin-bottom: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl, 16px);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.08));\n position: relative;\n overflow: hidden;\n container-type: inline-size;\n container-name: biz-hero;\n}\n\n.biz-hero[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 3.5px;\n background: linear-gradient(90deg, #38bdf8 0%, #6366f1 50%, #10b981 100%);\n}\n\n.biz-hero__identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.biz-hero__avatar[_ngcontent-%COMP%] {\n flex: none;\n width: 60px;\n height: 60px;\n border-radius: var(--mj-radius-lg, 14px);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface)) 0%, color-mix(in srgb, var(--mj-brand-accent, #6366f1) 25%, var(--mj-bg-surface)) 100%);\n color: var(--mj-text-inverse, #ffffff);\n box-shadow: 0 4px 14px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.biz-hero__avatar[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n object-fit: cover;\n}\n\n.biz-hero__presence[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -2px;\n right: -2px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: var(--mj-status-success, #10b981);\n border: 2.5px solid var(--mj-bg-surface-card);\n}\n\n.biz-hero__initials[_ngcontent-%COMP%] {\n font-size: 1.15rem;\n font-weight: 800;\n letter-spacing: 0.02em;\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__copy[_ngcontent-%COMP%] {\n min-width: 0;\n flex: 1;\n}\n\n.biz-hero__title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2) var(--mj-space-3);\n}\n\n.biz-hero__name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n line-height: 1.25;\n letter-spacing: -0.01em;\n color: var(--mj-text-primary);\n}\n\n.biz-hero__badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n}\n\n.biz-hero__entity-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.biz-hero__chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.02em;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__chip--interactive[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.biz-hero__chip--interactive[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__chip-count[_ngcontent-%COMP%] {\n font-size: 10px;\n padding: 0 4px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__secondary-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n}\n\n.biz-hero__secondary-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n font-weight: var(--mj-font-medium);\n}\n\n.biz-hero__sub-chip[_ngcontent-%COMP%] {\n padding: 1px 7px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n color: var(--mj-text-secondary);\n font-size: 11px;\n}\n\n.biz-hero__chip[data-tone='success'][_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border-color: var(--mj-status-success-border);\n}\n\n.biz-hero__chip[data-tone='success'][_ngcontent-%COMP%]::before {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--mj-status-success);\n}\n\n.biz-hero__chip[data-tone='warning'][_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border-color: var(--mj-status-warning-border);\n}\n\n.biz-hero__aka[_ngcontent-%COMP%] {\n margin-top: 2px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.biz-hero__summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: var(--mj-space-3);\n margin-top: var(--mj-space-4);\n padding-top: var(--mj-space-4);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n\n.biz-hero__stat-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.biz-hero__stat-val[_ngcontent-%COMP%] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 15px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__stat-val.is-link[_ngcontent-%COMP%], \nbutton.biz-hero__stat-val[_ngcontent-%COMP%] {\n border: 0;\n padding: 0;\n background: transparent;\n color: var(--mj-text-link);\n cursor: pointer;\n font: inherit;\n font-weight: var(--mj-font-semibold);\n text-align: left;\n}\n\n.biz-hero__stat-val.is-link[_ngcontent-%COMP%]:hover, \nbutton.biz-hero__stat-val[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n\n\n\n.biz-hero__edit[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding-top: var(--mj-space-3);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.biz-hero__field[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n\n\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n padding: 0;\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-bold);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field--editing:hover {\n margin: 0;\n padding: 0;\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field-control {\n width: 100%;\n}\n\n@container biz-hero (min-width: 52rem) {\n .biz-hero__edit[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: var(--mj-space-3) var(--mj-space-4);\n }\n\n .biz-hero__field--span[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n }\n}\n\n@media (max-width: 720px) {\n .biz-hero__identity[_ngcontent-%COMP%] {\n align-items: flex-start;\n }\n\n .biz-hero__summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n\n\n.biz-hero__toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 0;\n font-size: 12px;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.biz-hero__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-hover, rgba(255, 255, 255, 0.08));\n border-color: var(--mj-brand-primary);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] {\n padding: 12px 20px;\n gap: 0;\n margin-bottom: var(--mj-space-3);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__avatar[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: var(--mj-radius-md, 10px);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__initials[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__name[_ngcontent-%COMP%] {\n font-size: 1.15rem;\n}"] });
454
+ } }, dependencies: [CommonModule, BaseFormsModule, i1.MjRecordLinkDirective, LinkDirectivesModule, i2.DatePipe], styles: [".biz-hero[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: 20px 24px;\n margin-bottom: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl, 16px);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.08));\n position: relative;\n overflow: hidden;\n container-type: inline-size;\n container-name: biz-hero;\n}\n\n.biz-hero[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 3.5px;\n background: linear-gradient(90deg, #38bdf8 0%, #6366f1 50%, #10b981 100%);\n}\n\n.biz-hero__identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.biz-hero__avatar[_ngcontent-%COMP%] {\n flex: none;\n width: 60px;\n height: 60px;\n border-radius: var(--mj-radius-lg, 14px);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface)) 0%, color-mix(in srgb, var(--mj-brand-accent, #6366f1) 25%, var(--mj-bg-surface)) 100%);\n color: var(--mj-text-inverse, #ffffff);\n box-shadow: 0 4px 14px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.biz-hero__avatar[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n object-fit: cover;\n}\n\n.biz-hero__presence[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -2px;\n right: -2px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: var(--mj-status-success, #10b981);\n border: 2.5px solid var(--mj-bg-surface-card);\n}\n\n.biz-hero__initials[_ngcontent-%COMP%] {\n font-size: 1.15rem;\n font-weight: 800;\n letter-spacing: 0.02em;\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__copy[_ngcontent-%COMP%] {\n min-width: 0;\n flex: 1;\n}\n\n.biz-hero__title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2) var(--mj-space-3);\n}\n\n.biz-hero__name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n line-height: 1.25;\n letter-spacing: -0.01em;\n color: var(--mj-text-primary);\n}\n\n.biz-hero__badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n}\n\n.biz-hero__entity-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.biz-hero__chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.02em;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__chip--interactive[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.biz-hero__chip--interactive[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__chip-count[_ngcontent-%COMP%] {\n font-size: 10px;\n padding: 0 4px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__secondary-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n}\n\n.biz-hero__secondary-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n font-weight: var(--mj-font-medium);\n}\n\n.biz-hero__sub-chip[_ngcontent-%COMP%] {\n padding: 1px 7px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n color: var(--mj-text-secondary);\n font-size: 11px;\n}\n\n.biz-hero__chip[data-tone='success'][_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border-color: var(--mj-status-success-border);\n}\n\n.biz-hero__chip[data-tone='success'][_ngcontent-%COMP%]::before {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--mj-status-success);\n}\n\n.biz-hero__chip[data-tone='warning'][_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border-color: var(--mj-status-warning-border);\n}\n\n.biz-hero__aka[_ngcontent-%COMP%] {\n margin-top: 2px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.biz-hero__summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: var(--mj-space-3);\n margin-top: var(--mj-space-4);\n padding-top: var(--mj-space-4);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n\n.biz-hero__stat-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.biz-hero__stat-val[_ngcontent-%COMP%] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 15px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__stat-val.is-link[_ngcontent-%COMP%], \nbutton.biz-hero__stat-val[_ngcontent-%COMP%] {\n border: 0;\n padding: 0;\n background: transparent;\n color: var(--mj-text-link);\n cursor: pointer;\n font: inherit;\n font-weight: var(--mj-font-semibold);\n text-align: left;\n}\n\n.biz-hero__stat-val.is-link[_ngcontent-%COMP%]:hover, \nbutton.biz-hero__stat-val[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n\n\n\n.biz-hero__edit[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding-top: var(--mj-space-3);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.biz-hero__field[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n\n\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n padding: 0;\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-bold);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field--editing:hover {\n margin: 0;\n padding: 0;\n}\n\n.biz-hero__field[_ngcontent-%COMP%] .mj-forms-field-control {\n width: 100%;\n}\n\n@container biz-hero (min-width: 52rem) {\n .biz-hero__edit[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: var(--mj-space-3) var(--mj-space-4);\n }\n\n .biz-hero__field--span[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n }\n}\n\n@media (max-width: 720px) {\n .biz-hero__identity[_ngcontent-%COMP%] {\n align-items: flex-start;\n }\n\n .biz-hero__summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n\n\n.biz-hero__toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 0;\n font-size: 12px;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.biz-hero__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] {\n padding: 12px 20px;\n gap: 0;\n margin-bottom: var(--mj-space-3);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__avatar[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: var(--mj-radius-md, 10px);\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__initials[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__name[_ngcontent-%COMP%] {\n font-size: 1.15rem;\n}\n\n.biz-hero--collapsed[_ngcontent-%COMP%] .biz-hero__edit[_ngcontent-%COMP%] {\n margin-top: var(--mj-space-3);\n}"] });
413
455
  }
414
456
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityIdentityComponent, [{
415
457
  type: Component,
416
- args: [{ standalone: true, selector: 'bizapps-activity-identity', imports: [CommonModule, BaseFormsModule, LinkDirectivesModule], template: "<div class=\"biz-hero\" [class.biz-hero--collapsed]=\"Collapsed\">\n <div class=\"biz-hero__identity\">\n <div class=\"biz-hero__avatar\" [style.background]=\"TypeBackground\" aria-hidden=\"true\">\n <i [class]=\"TypeIcon\" style=\"font-size: 1.5rem; color: #ffffff;\"></i>\n </div>\n\n <div class=\"biz-hero__copy\">\n <div class=\"biz-hero__title-row\">\n <h1 class=\"biz-hero__name\">{{ Record.Title || 'New Activity' }}</h1>\n </div>\n <div class=\"biz-hero__badges\">\n <span class=\"biz-hero__entity-chip\">\n <i [class]=\"TypeIcon\"></i>\n {{ Record.ActivityType || 'Activity' }}\n </span>\n @if (Record.Direction) {\n <span class=\"biz-hero__chip\" data-tone=\"info\">\n <i [class]=\"DirectionIcon\"></i>\n {{ Record.Direction }}\n </span>\n }\n @if (Record.Status) {\n <span class=\"biz-hero__chip\" [attr.data-tone]=\"StatusTone\">\n {{ Record.Status }}\n </span>\n }\n @if (Record.Outcome) {\n <span class=\"biz-hero__chip\" data-tone=\"purple\">\n <i class=\"fa-solid fa-flag\"></i>\n {{ Record.Outcome }}\n </span>\n }\n @if (SentimentDisplay) {\n <span class=\"biz-hero__chip\" [attr.data-tone]=\"SentimentTone\" title=\"Derived Sentiment Score\">\n <i [class]=\"SentimentIcon\"></i>\n Sentiment {{ SentimentDisplay }}\n </span>\n }\n </div>\n </div>\n\n <button type=\"button\"\n class=\"biz-hero__toggle\"\n [title]=\"Collapsed ? 'Expand header' : 'Collapse header'\"\n [attr.aria-label]=\"Collapsed ? 'Expand header' : 'Collapse header'\"\n (click)=\"ToggleCollapsed()\">\n <i [class]=\"Collapsed ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-up'\"></i>\n </button>\n </div>\n\n @if (!Collapsed) {\n <div class=\"biz-hero__summary\">\n @if (Record.StartedAt) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">When</span>\n <span class=\"biz-hero__stat-val\">\n {{ Record.StartedAt | date:'MMM d, y, h:mm a' }}\n @if (DurationText) {\n <span style=\"opacity: 0.75; font-size: 0.88em; font-weight: 500;\">({{ DurationText }})</span>\n }\n </span>\n </div>\n }\n @if (Record.LoggedByUser) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Logged By</span>\n <span class=\"biz-hero__stat-val\">{{ Record.LoggedByUser }}</span>\n </div>\n }\n @if (LocationDisplay) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Location</span>\n <span class=\"biz-hero__stat-val\">\n <i class=\"fa-solid fa-location-dot\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ LocationDisplay }}\n </span>\n </div>\n }\n @if (MeetingURL) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Video Meeting</span>\n <a [href]=\"MeetingURL\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"biz-hero__stat-val\" style=\"color: var(--mj-brand-primary); text-decoration: underline; display: inline-flex; align-items: center; gap: 4px;\">\n <i class=\"fa-solid fa-video\"></i>\n Join Meeting\n </a>\n </div>\n }\n @if (Record.Source) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Source</span>\n <span class=\"biz-hero__stat-val\">\n <i class=\"fa-solid fa-cloud\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ SourceDisplay }}\n </span>\n </div>\n }\n @if (Record.ParentActivity) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Thread / Parent</span>\n <button type=\"button\" class=\"biz-hero__stat-val\" (click)=\"OnParentActivityClick($event)\">\n <i class=\"fa-solid fa-reply\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ Record.ParentActivity }}\n </button>\n </div>\n }\n </div>\n\n @if (Record.Description) {\n <div style=\"padding-top: var(--mj-space-2, 8px); border-top: 1px solid var(--mj-border-subtle, #f1f5f9); font-size: var(--mj-text-sm, 13px); line-height: 1.5; color: var(--mj-text-secondary, #334155); white-space: pre-wrap;\">\n {{ Record.Description }}\n </div>\n }\n }\n</div>\n", styles: [".biz-hero {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: 20px 24px;\n margin-bottom: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl, 16px);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.08));\n position: relative;\n overflow: hidden;\n container-type: inline-size;\n container-name: biz-hero;\n}\n\n.biz-hero::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 3.5px;\n background: linear-gradient(90deg, #38bdf8 0%, #6366f1 50%, #10b981 100%);\n}\n\n.biz-hero__identity {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.biz-hero__avatar {\n flex: none;\n width: 60px;\n height: 60px;\n border-radius: var(--mj-radius-lg, 14px);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface)) 0%, color-mix(in srgb, var(--mj-brand-accent, #6366f1) 25%, var(--mj-bg-surface)) 100%);\n color: var(--mj-text-inverse, #ffffff);\n box-shadow: 0 4px 14px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.biz-hero__avatar img {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n object-fit: cover;\n}\n\n.biz-hero__presence {\n position: absolute;\n bottom: -2px;\n right: -2px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: var(--mj-status-success, #10b981);\n border: 2.5px solid var(--mj-bg-surface-card);\n}\n\n.biz-hero__initials {\n font-size: 1.15rem;\n font-weight: 800;\n letter-spacing: 0.02em;\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__copy {\n min-width: 0;\n flex: 1;\n}\n\n.biz-hero__title-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2) var(--mj-space-3);\n}\n\n.biz-hero__name {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n line-height: 1.25;\n letter-spacing: -0.01em;\n color: var(--mj-text-primary);\n}\n\n.biz-hero__badges {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n}\n\n.biz-hero__entity-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.biz-hero__chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.02em;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__chip--interactive {\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.biz-hero__chip--interactive:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__chip-count {\n font-size: 10px;\n padding: 0 4px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__secondary-chips {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n}\n\n.biz-hero__secondary-label {\n color: var(--mj-text-muted);\n font-size: 11px;\n font-weight: var(--mj-font-medium);\n}\n\n.biz-hero__sub-chip {\n padding: 1px 7px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n color: var(--mj-text-secondary);\n font-size: 11px;\n}\n\n.biz-hero__chip[data-tone='success'] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border-color: var(--mj-status-success-border);\n}\n\n.biz-hero__chip[data-tone='success']::before {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--mj-status-success);\n}\n\n.biz-hero__chip[data-tone='warning'] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border-color: var(--mj-status-warning-border);\n}\n\n.biz-hero__aka {\n margin-top: 2px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.biz-hero__summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: var(--mj-space-3);\n margin-top: var(--mj-space-4);\n padding-top: var(--mj-space-4);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__stat {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n\n.biz-hero__stat-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.biz-hero__stat-val {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 15px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__stat-val.is-link,\nbutton.biz-hero__stat-val {\n border: 0;\n padding: 0;\n background: transparent;\n color: var(--mj-text-link);\n cursor: pointer;\n font: inherit;\n font-weight: var(--mj-font-semibold);\n text-align: left;\n}\n\n.biz-hero__stat-val.is-link:hover,\nbutton.biz-hero__stat-val:hover {\n text-decoration: underline;\n}\n\n/* mj-form-field is display:contents \u2014 never let its label/control become\n siblings of a parent grid. Each field sits in a wrapping cell. */\n.biz-hero__edit {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding-top: var(--mj-space-3);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.biz-hero__field {\n min-width: 0;\n}\n\n/* Label above the control. The shared field is a 200px|1fr row \u2014 that\n needs ~28rem per field and is why this card looked broken. */\n.biz-hero__field ::ng-deep .mj-forms-field {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n padding: 0;\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-bold);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field--editing:hover {\n margin: 0;\n padding: 0;\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field-control {\n width: 100%;\n}\n\n@container biz-hero (min-width: 52rem) {\n .biz-hero__edit {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: var(--mj-space-3) var(--mj-space-4);\n }\n\n .biz-hero__field--span {\n grid-column: 1 / -1;\n }\n}\n\n@media (max-width: 720px) {\n .biz-hero__identity {\n align-items: flex-start;\n }\n\n .biz-hero__summary {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n/* \u2500\u2500 Collapsed State & Toggle Button \u2500\u2500 */\n.biz-hero__toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 0;\n font-size: 12px;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.biz-hero__toggle:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-hover, rgba(255, 255, 255, 0.08));\n border-color: var(--mj-brand-primary);\n}\n\n.biz-hero--collapsed {\n padding: 12px 20px;\n gap: 0;\n margin-bottom: var(--mj-space-3);\n}\n\n.biz-hero--collapsed .biz-hero__avatar {\n width: 42px;\n height: 42px;\n border-radius: var(--mj-radius-md, 10px);\n}\n\n.biz-hero--collapsed .biz-hero__initials {\n font-size: 0.95rem;\n}\n\n.biz-hero--collapsed .biz-hero__name {\n font-size: 1.15rem;\n}\n"] }]
458
+ args: [{ standalone: true, selector: 'bizapps-activity-identity', imports: [CommonModule, BaseFormsModule, LinkDirectivesModule], template: "<div class=\"biz-hero\" [class.biz-hero--collapsed]=\"Collapsed\">\n <div class=\"biz-hero__identity\">\n <div class=\"biz-hero__avatar\" [style.background]=\"TypeBackground\" aria-hidden=\"true\">\n <i [class]=\"TypeIcon\" style=\"font-size: 1.5rem; color: #ffffff;\"></i>\n </div>\n\n <div class=\"biz-hero__copy\">\n <div class=\"biz-hero__title-row\">\n <h1 class=\"biz-hero__name\">{{ Record.Title || 'New Activity' }}</h1>\n </div>\n <div class=\"biz-hero__badges\">\n <span class=\"biz-hero__entity-chip\">\n <i [class]=\"TypeIcon\"></i>\n {{ Record.ActivityType || 'Activity' }}\n </span>\n @if (Record.Direction) {\n <span class=\"biz-hero__chip\" data-tone=\"info\">\n <i [class]=\"DirectionIcon\"></i>\n {{ Record.Direction }}\n </span>\n }\n @if (Record.Status) {\n <span class=\"biz-hero__chip\" [attr.data-tone]=\"StatusTone\">\n {{ Record.Status }}\n </span>\n }\n @if (Record.Outcome) {\n <span class=\"biz-hero__chip\" data-tone=\"purple\">\n <i class=\"fa-solid fa-flag\"></i>\n {{ Record.Outcome }}\n </span>\n }\n @if (SentimentDisplay) {\n <span class=\"biz-hero__chip\" [attr.data-tone]=\"SentimentTone\" title=\"Derived Sentiment Score\">\n <i [class]=\"SentimentIcon\"></i>\n Sentiment {{ SentimentDisplay }}\n </span>\n }\n </div>\n </div>\n\n <button type=\"button\"\n class=\"biz-hero__toggle\"\n [title]=\"Collapsed ? 'Expand header' : 'Collapse header'\"\n [attr.aria-label]=\"Collapsed ? 'Expand header' : 'Collapse header'\"\n (click)=\"ToggleCollapsed()\">\n <i [class]=\"Collapsed ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-up'\"></i>\n </button>\n </div>\n\n @if (!Collapsed) {\n <div class=\"biz-hero__summary\">\n @if (Record.StartedAt) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">When</span>\n <span class=\"biz-hero__stat-val\">\n {{ Record.StartedAt | date:'MMM d, y, h:mm a' }}\n @if (DurationText) {\n <span style=\"opacity: 0.75; font-size: 0.88em; font-weight: 500;\">({{ DurationText }})</span>\n }\n </span>\n </div>\n }\n @if (Record.LoggedByUser) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Logged By</span>\n <span class=\"biz-hero__stat-val\">{{ Record.LoggedByUser }}</span>\n </div>\n }\n @if (LocationDisplay) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Location</span>\n <span class=\"biz-hero__stat-val\">\n <i class=\"fa-solid fa-location-dot\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ LocationDisplay }}\n </span>\n </div>\n }\n @if (MeetingURL) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Video Meeting</span>\n <a [href]=\"MeetingURL\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"biz-hero__stat-val\" style=\"color: var(--mj-brand-primary); text-decoration: underline; display: inline-flex; align-items: center; gap: 4px;\">\n <i class=\"fa-solid fa-video\"></i>\n Join Meeting\n </a>\n </div>\n }\n @if (Record.Source) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Source</span>\n <span class=\"biz-hero__stat-val\">\n <i class=\"fa-solid fa-cloud\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ SourceDisplay }}\n </span>\n </div>\n }\n @if (Record.ParentActivityID) {\n <div class=\"biz-hero__stat\">\n <span class=\"biz-hero__stat-label\">Thread / Parent</span>\n <button type=\"button\" class=\"biz-hero__stat-val\"\n [mjRecordLink]=\"Record\"\n FieldName=\"ParentActivityID\"\n EntityName=\"MJ_BizApps_Common: Activities\"\n [HandleClick]=\"false\"\n (Navigate)=\"Navigate.emit($event)\"\n (click)=\"OnParentActivityClick($event)\">\n <i class=\"fa-solid fa-reply\" style=\"font-size: 0.85em; opacity: 0.7; margin-right: 4px;\"></i>\n {{ ParentActivityLabel }}\n </button>\n </div>\n }\n </div>\n\n @if (Record.Description) {\n <div style=\"padding-top: var(--mj-space-2, 8px); border-top: 1px solid var(--mj-border-subtle, #f1f5f9); font-size: var(--mj-text-sm, 13px); line-height: 1.5; color: var(--mj-text-secondary, #334155); white-space: pre-wrap;\">\n {{ Record.Description }}\n </div>\n }\n }\n</div>\n", styles: [".biz-hero {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: 20px 24px;\n margin-bottom: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl, 16px);\n box-shadow: var(--mj-shadow-md, 0 4px 16px rgba(0, 0, 0, 0.08));\n position: relative;\n overflow: hidden;\n container-type: inline-size;\n container-name: biz-hero;\n}\n\n.biz-hero::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 3.5px;\n background: linear-gradient(90deg, #38bdf8 0%, #6366f1 50%, #10b981 100%);\n}\n\n.biz-hero__identity {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.biz-hero__avatar {\n flex: none;\n width: 60px;\n height: 60px;\n border-radius: var(--mj-radius-lg, 14px);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface)) 0%, color-mix(in srgb, var(--mj-brand-accent, #6366f1) 25%, var(--mj-bg-surface)) 100%);\n color: var(--mj-text-inverse, #ffffff);\n box-shadow: 0 4px 14px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.biz-hero__avatar img {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n object-fit: cover;\n}\n\n.biz-hero__presence {\n position: absolute;\n bottom: -2px;\n right: -2px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: var(--mj-status-success, #10b981);\n border: 2.5px solid var(--mj-bg-surface-card);\n}\n\n.biz-hero__initials {\n font-size: 1.15rem;\n font-weight: 800;\n letter-spacing: 0.02em;\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__copy {\n min-width: 0;\n flex: 1;\n}\n\n.biz-hero__title-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2) var(--mj-space-3);\n}\n\n.biz-hero__name {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n line-height: 1.25;\n letter-spacing: -0.01em;\n color: var(--mj-text-primary);\n}\n\n.biz-hero__badges {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n}\n\n.biz-hero__entity-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.biz-hero__chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.02em;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__chip--interactive {\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.biz-hero__chip--interactive:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__chip-count {\n font-size: 10px;\n padding: 0 4px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.biz-hero__secondary-chips {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n}\n\n.biz-hero__secondary-label {\n color: var(--mj-text-muted);\n font-size: 11px;\n font-weight: var(--mj-font-medium);\n}\n\n.biz-hero__sub-chip {\n padding: 1px 7px;\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle, var(--mj-border-default));\n color: var(--mj-text-secondary);\n font-size: 11px;\n}\n\n.biz-hero__chip[data-tone='success'] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border-color: var(--mj-status-success-border);\n}\n\n.biz-hero__chip[data-tone='success']::before {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--mj-status-success);\n}\n\n.biz-hero__chip[data-tone='warning'] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border-color: var(--mj-status-warning-border);\n}\n\n.biz-hero__aka {\n margin-top: 2px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.biz-hero__summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: var(--mj-space-3);\n margin-top: var(--mj-space-4);\n padding-top: var(--mj-space-4);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.biz-hero__stat {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n\n.biz-hero__stat-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.biz-hero__stat-val {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 15px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.biz-hero__stat-val.is-link,\nbutton.biz-hero__stat-val {\n border: 0;\n padding: 0;\n background: transparent;\n color: var(--mj-text-link);\n cursor: pointer;\n font: inherit;\n font-weight: var(--mj-font-semibold);\n text-align: left;\n}\n\n.biz-hero__stat-val.is-link:hover,\nbutton.biz-hero__stat-val:hover {\n text-decoration: underline;\n}\n\n/* mj-form-field is display:contents \u2014 never let its label/control become\n siblings of a parent grid. Each field sits in a wrapping cell. */\n.biz-hero__edit {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding-top: var(--mj-space-3);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.biz-hero__field {\n min-width: 0;\n}\n\n/* Label above the control. The shared field is a 200px|1fr row \u2014 that\n needs ~28rem per field and is why this card looked broken. */\n.biz-hero__field ::ng-deep .mj-forms-field {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n padding: 0;\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field-label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-bold);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field--editing:hover {\n margin: 0;\n padding: 0;\n}\n\n.biz-hero__field ::ng-deep .mj-forms-field-control {\n width: 100%;\n}\n\n@container biz-hero (min-width: 52rem) {\n .biz-hero__edit {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: var(--mj-space-3) var(--mj-space-4);\n }\n\n .biz-hero__field--span {\n grid-column: 1 / -1;\n }\n}\n\n@media (max-width: 720px) {\n .biz-hero__identity {\n align-items: flex-start;\n }\n\n .biz-hero__summary {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n/* \u2500\u2500 Collapsed State & Toggle Button \u2500\u2500 */\n.biz-hero__toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 0;\n font-size: 12px;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.biz-hero__toggle:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.biz-hero--collapsed {\n padding: 12px 20px;\n gap: 0;\n margin-bottom: var(--mj-space-3);\n}\n\n.biz-hero--collapsed .biz-hero__avatar {\n width: 42px;\n height: 42px;\n border-radius: var(--mj-radius-md, 10px);\n}\n\n.biz-hero--collapsed .biz-hero__initials {\n font-size: 0.95rem;\n}\n\n.biz-hero--collapsed .biz-hero__name {\n font-size: 1.15rem;\n}\n\n.biz-hero--collapsed .biz-hero__edit {\n margin-top: var(--mj-space-3);\n}\n"] }]
417
459
  }], null, { Record: [{
418
460
  type: Input,
419
461
  args: [{ required: true }]
@@ -424,5 +466,5 @@ export class ActivityIdentityComponent {
424
466
  }], Navigate: [{
425
467
  type: Output
426
468
  }] }); })();
427
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityIdentityComponent, { className: "ActivityIdentityComponent", filePath: "lib/components/identity-header/activity-identity.component.ts", lineNumber: 71 }); })();
469
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityIdentityComponent, { className: "ActivityIdentityComponent", filePath: "lib/components/identity-header/activity-identity.component.ts", lineNumber: 75 }); })();
428
470
  //# sourceMappingURL=activity-identity.component.js.map