cloud-ide-layout 1.0.53 → 1.0.54

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 (13) hide show
  1. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-pi0j2OhQ.mjs → cloud-ide-layout-cloud-ide-layout-Cnkd-aj7.mjs} +56 -16
  2. package/fesm2022/cloud-ide-layout-cloud-ide-layout-Cnkd-aj7.mjs.map +1 -0
  3. package/fesm2022/{cloud-ide-layout-drawer-theme.component-CfH0gv6b.mjs → cloud-ide-layout-drawer-theme.component-B7IgPn17.mjs} +2 -2
  4. package/fesm2022/{cloud-ide-layout-drawer-theme.component-CfH0gv6b.mjs.map → cloud-ide-layout-drawer-theme.component-B7IgPn17.mjs.map} +1 -1
  5. package/fesm2022/{cloud-ide-layout-floating-entity-selection.component-DmoZauYM.mjs → cloud-ide-layout-floating-entity-selection.component-CVWwg-wM.mjs} +2 -2
  6. package/fesm2022/{cloud-ide-layout-floating-entity-selection.component-DmoZauYM.mjs.map → cloud-ide-layout-floating-entity-selection.component-CVWwg-wM.mjs.map} +1 -1
  7. package/fesm2022/{cloud-ide-layout-home-wrapper.component-DK1ebn4K.mjs → cloud-ide-layout-home-wrapper.component-Bc4aNdVq.mjs} +2 -2
  8. package/fesm2022/{cloud-ide-layout-home-wrapper.component-DK1ebn4K.mjs.map → cloud-ide-layout-home-wrapper.component-Bc4aNdVq.mjs.map} +1 -1
  9. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-Dq97FU7V.mjs → cloud-ide-layout-sidedrawer-notes.component-cCi9qet6.mjs} +2 -2
  10. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-Dq97FU7V.mjs.map → cloud-ide-layout-sidedrawer-notes.component-cCi9qet6.mjs.map} +1 -1
  11. package/fesm2022/cloud-ide-layout.mjs +1 -1
  12. package/package.json +1 -1
  13. package/fesm2022/cloud-ide-layout-cloud-ide-layout-pi0j2OhQ.mjs.map +0 -1
@@ -1266,7 +1266,7 @@ class CideLytFloatingEntitySelectionService {
1266
1266
  }
1267
1267
  try {
1268
1268
  // Use relative import to avoid circular dependency
1269
- const module = await import('./cloud-ide-layout-floating-entity-selection.component-DmoZauYM.mjs');
1269
+ const module = await import('./cloud-ide-layout-floating-entity-selection.component-CVWwg-wM.mjs');
1270
1270
  if (module.CideLytFloatingEntitySelectionComponent) {
1271
1271
  this.containerService.registerComponent('entity-selection-header', module.CideLytFloatingEntitySelectionComponent);
1272
1272
  console.log('✅ Entity selection component registered successfully');
@@ -1362,6 +1362,27 @@ class CideLytHeaderWrapperComponent {
1362
1362
  currentAcademicYear = signal(null, ...(ngDevMode ? [{ debugName: "currentAcademicYear" }] : []));
1363
1363
  currentFinancialYearName = signal('FY', ...(ngDevMode ? [{ debugName: "currentFinancialYearName" }] : []));
1364
1364
  currentAcademicYearName = signal('AY', ...(ngDevMode ? [{ debugName: "currentAcademicYearName" }] : []));
1365
+ // Computed signal for full academic year display name (for pill)
1366
+ currentAcademicYearDisplayName = computed(() => {
1367
+ const year = this.currentAcademicYear();
1368
+ if (!year)
1369
+ return null;
1370
+ // Use correct field names: acayr_name, acayr_from_date, acayr_to_date
1371
+ const name = year.acayr_name;
1372
+ const fromDate = year.acayr_from_date;
1373
+ const toDate = year.acayr_to_date;
1374
+ // Build display name with proper fallback
1375
+ if (name) {
1376
+ return name;
1377
+ }
1378
+ else if (fromDate && toDate) {
1379
+ return `${fromDate} - ${toDate}`;
1380
+ }
1381
+ else if (fromDate || toDate) {
1382
+ return fromDate || toDate || 'Academic Year';
1383
+ }
1384
+ return 'Academic Year';
1385
+ }, ...(ngDevMode ? [{ debugName: "currentAcademicYearDisplayName" }] : []));
1365
1386
  // Financial Year Dropdown Configuration
1366
1387
  financialYearItems = [];
1367
1388
  financialYearConfig = {
@@ -1610,17 +1631,35 @@ class CideLytHeaderWrapperComponent {
1610
1631
  */
1611
1632
  updateAcademicYearDropdown() {
1612
1633
  const years = this.academicYears();
1613
- this.academicYearItems = years.map(year => ({
1614
- id: year._id,
1615
- label: year.academic_year_name || `${year.academic_year_start_date} - ${year.academic_year_end_date}`,
1616
- icon: 'school',
1617
- iconColor: 'tw-text-green-500'
1618
- }));
1634
+ this.academicYearItems = years.map(year => {
1635
+ // Use correct field names: acayr_name, acayr_from_date, acayr_to_date
1636
+ const name = year.acayr_name;
1637
+ const fromDate = year.acayr_from_date;
1638
+ const toDate = year.acayr_to_date;
1639
+ // Build label with proper fallback
1640
+ let label = name;
1641
+ if (!label && fromDate && toDate) {
1642
+ label = `${fromDate} - ${toDate}`;
1643
+ }
1644
+ else if (!label && (fromDate || toDate)) {
1645
+ label = fromDate || toDate || 'Academic Year';
1646
+ }
1647
+ else if (!label) {
1648
+ label = 'Academic Year';
1649
+ }
1650
+ return {
1651
+ id: year._id,
1652
+ label: label,
1653
+ icon: 'school',
1654
+ iconColor: 'tw-text-green-500'
1655
+ };
1656
+ });
1619
1657
  // Set current academic year (first active one or first in list)
1620
- const currentAY = years.find(year => year.is_active) || years[0];
1658
+ // Use correct field name: acayr_isactive
1659
+ const currentAY = years.find(year => year.acayr_isactive) || years[0];
1621
1660
  if (currentAY) {
1622
1661
  this.currentAcademicYear.set(currentAY);
1623
- this.currentAcademicYearName.set(currentAY.academic_year_name || 'AY');
1662
+ this.currentAcademicYearName.set(currentAY.acayr_name || 'AY');
1624
1663
  }
1625
1664
  }
1626
1665
  /**
@@ -1643,7 +1682,8 @@ class CideLytHeaderWrapperComponent {
1643
1682
  const selectedYear = this.academicYears().find(year => year._id === item.id);
1644
1683
  if (selectedYear) {
1645
1684
  this.currentAcademicYear.set(selectedYear);
1646
- this.currentAcademicYearName.set(selectedYear.academic_year_name || 'AY');
1685
+ // Use correct field name: acayr_name
1686
+ this.currentAcademicYearName.set(selectedYear.acayr_name || 'AY');
1647
1687
  // TODO: Update app state or notify other components about the change
1648
1688
  }
1649
1689
  }
@@ -1733,12 +1773,12 @@ class CideLytHeaderWrapperComponent {
1733
1773
  }
1734
1774
  }
1735
1775
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytHeaderWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1736
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytHeaderWrapperComponent, isStandalone: true, selector: "cide-lyt-header-wrapper", viewQueries: [{ propertyName: "triggerTemplate", first: true, predicate: ["triggerTemplate"], descendants: true }], ngImport: i0, template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\r\n <!-- Logo Section -->\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\r\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\r\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\r\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\r\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\r\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\r\n } @else {\r\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\r\n }\r\n\r\n </div>\r\n @if (appStateService.activeEntity()?.syen_name) {\r\n <span\r\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\r\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\r\n {{ appStateService.activeEntity()?.syen_name }}\r\n </span>\r\n }\r\n </div>\r\n <!-- Search Section -->\r\n <div class=\"header-search-container\">\r\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\r\n size=\"md\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Icons Section -->\r\n <div class=\"header-icons-container\">\r\n <!-- Financial Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\r\n (itemClick)=\"onFinancialYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Financial Year</div>\r\n </div>\r\n\r\n <!-- Academic Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\r\n (itemClick)=\"onAcademicYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Academic Year</div>\r\n </div>\r\n\r\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon>notifications</cide-ele-icon>\r\n <div class=\"header-badge\">3</div>\r\n <div class=\"header-tooltip\">Notifications</div>\r\n </div>\r\n\r\n <div class=\"header-divider\"></div>\r\n\r\n <!-- Profile with Dropdown -->\r\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\r\n [triggerTemplate]=\"triggerTemplate\"\r\n (itemClick)=\"onProfileClick($event)\">\r\n <ng-template #triggerTemplate>\r\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\r\n <div class=\"profile-avatar\">\r\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\r\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\r\n </div>\r\n } @else {\r\n <div class=\"profile-avatar\">\r\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\r\n </div>\r\n }\r\n </ng-template>\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">My Account</div>\r\n </div>\r\n </div>\r\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"], dependencies: [{ kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }, { kind: "directive", type: CideEleFileImageDirective, selector: "[cideEleFileImage]", inputs: ["fileId", "altText"] }] });
1776
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytHeaderWrapperComponent, isStandalone: true, selector: "cide-lyt-header-wrapper", viewQueries: [{ propertyName: "triggerTemplate", first: true, predicate: ["triggerTemplate"], descendants: true }], ngImport: i0, template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\r\n <!-- Logo Section -->\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\r\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\r\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\r\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\r\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\r\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\r\n } @else {\r\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\r\n }\r\n\r\n </div>\r\n @if (appStateService.activeEntity()?.syen_name) {\r\n <span\r\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\r\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\r\n {{ appStateService.activeEntity()?.syen_name }}\r\n </span>\r\n }\r\n </div>\r\n <!-- Search Section -->\r\n <div class=\"header-search-container\">\r\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\r\n size=\"md\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Icons Section -->\r\n <div class=\"header-icons-container\">\r\n <!-- Financial Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\r\n (itemClick)=\"onFinancialYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Financial Year</div>\r\n </div>\r\n\r\n <!-- Academic Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\r\n (itemClick)=\"onAcademicYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Academic Year</div>\r\n </div>\r\n \r\n <!-- Academic Year Pill/Badge -->\r\n @if (currentAcademicYearDisplayName()) {\r\n <div class=\"header-year-pill\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon name=\"school\" class=\"tw-w-3 tw-h-3 tw-mr-1.5\"></cide-ele-icon>\r\n <span class=\"header-year-pill-text\">{{ currentAcademicYearDisplayName() }}</span>\r\n <div class=\"header-tooltip\">Current Academic Year</div>\r\n </div>\r\n }\r\n\r\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon>notifications</cide-ele-icon>\r\n <div class=\"header-badge\">3</div>\r\n <div class=\"header-tooltip\">Notifications</div>\r\n </div>\r\n\r\n <div class=\"header-divider\"></div>\r\n\r\n <!-- Profile with Dropdown -->\r\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\r\n [triggerTemplate]=\"triggerTemplate\"\r\n (itemClick)=\"onProfileClick($event)\">\r\n <ng-template #triggerTemplate>\r\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\r\n <div class=\"profile-avatar\">\r\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\r\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\r\n </div>\r\n } @else {\r\n <div class=\"profile-avatar\">\r\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\r\n </div>\r\n }\r\n </ng-template>\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">My Account</div>\r\n </div>\r\n </div>\r\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.header-year-pill{position:relative;display:flex;align-items:center;padding:.375rem .75rem;background:linear-gradient(135deg,#3b82f61a,#2563eb26);border:1px solid rgba(59,130,246,.3);border-radius:9999px;color:#2563eb;font-size:.75rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;white-space:nowrap;box-shadow:0 1px 3px #3b82f61a}.header-year-pill:hover{background:linear-gradient(135deg,#3b82f626,#2563eb33);border-color:#3b82f666;transform:translateY(-1px);box-shadow:0 2px 6px #3b82f626}.header-year-pill-text{max-width:150px;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"], dependencies: [{ kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }, { kind: "directive", type: CideEleFileImageDirective, selector: "[cideEleFileImage]", inputs: ["fileId", "altText"] }] });
1737
1777
  }
1738
1778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytHeaderWrapperComponent, decorators: [{
1739
1779
  type: Component,
1740
1780
  args: [{ selector: 'cide-lyt-header-wrapper', imports: [CideInputComponent, CommonModule, CideIconComponent,
1741
- CideEleDropdownComponent, CideEleFileImageDirective], template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\r\n <!-- Logo Section -->\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\r\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\r\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\r\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\r\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\r\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\r\n } @else {\r\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\r\n }\r\n\r\n </div>\r\n @if (appStateService.activeEntity()?.syen_name) {\r\n <span\r\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\r\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\r\n {{ appStateService.activeEntity()?.syen_name }}\r\n </span>\r\n }\r\n </div>\r\n <!-- Search Section -->\r\n <div class=\"header-search-container\">\r\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\r\n size=\"md\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Icons Section -->\r\n <div class=\"header-icons-container\">\r\n <!-- Financial Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\r\n (itemClick)=\"onFinancialYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Financial Year</div>\r\n </div>\r\n\r\n <!-- Academic Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\r\n (itemClick)=\"onAcademicYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Academic Year</div>\r\n </div>\r\n\r\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon>notifications</cide-ele-icon>\r\n <div class=\"header-badge\">3</div>\r\n <div class=\"header-tooltip\">Notifications</div>\r\n </div>\r\n\r\n <div class=\"header-divider\"></div>\r\n\r\n <!-- Profile with Dropdown -->\r\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\r\n [triggerTemplate]=\"triggerTemplate\"\r\n (itemClick)=\"onProfileClick($event)\">\r\n <ng-template #triggerTemplate>\r\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\r\n <div class=\"profile-avatar\">\r\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\r\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\r\n </div>\r\n } @else {\r\n <div class=\"profile-avatar\">\r\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\r\n </div>\r\n }\r\n </ng-template>\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">My Account</div>\r\n </div>\r\n </div>\r\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"] }]
1781
+ CideEleDropdownComponent, CideEleFileImageDirective], template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\r\n <!-- Logo Section -->\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\r\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\r\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\r\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\r\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\r\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\r\n } @else {\r\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\r\n }\r\n\r\n </div>\r\n @if (appStateService.activeEntity()?.syen_name) {\r\n <span\r\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\r\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\r\n {{ appStateService.activeEntity()?.syen_name }}\r\n </span>\r\n }\r\n </div>\r\n <!-- Search Section -->\r\n <div class=\"header-search-container\">\r\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\r\n size=\"md\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Icons Section -->\r\n <div class=\"header-icons-container\">\r\n <!-- Financial Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\r\n (itemClick)=\"onFinancialYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Financial Year</div>\r\n </div>\r\n\r\n <!-- Academic Year Dropdown -->\r\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\r\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\r\n (itemClick)=\"onAcademicYearClick($event)\">\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">Academic Year</div>\r\n </div>\r\n \r\n <!-- Academic Year Pill/Badge -->\r\n @if (currentAcademicYearDisplayName()) {\r\n <div class=\"header-year-pill\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon name=\"school\" class=\"tw-w-3 tw-h-3 tw-mr-1.5\"></cide-ele-icon>\r\n <span class=\"header-year-pill-text\">{{ currentAcademicYearDisplayName() }}</span>\r\n <div class=\"header-tooltip\">Current Academic Year</div>\r\n </div>\r\n }\r\n\r\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-icon>notifications</cide-ele-icon>\r\n <div class=\"header-badge\">3</div>\r\n <div class=\"header-tooltip\">Notifications</div>\r\n </div>\r\n\r\n <div class=\"header-divider\"></div>\r\n\r\n <!-- Profile with Dropdown -->\r\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\r\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\r\n [triggerTemplate]=\"triggerTemplate\"\r\n (itemClick)=\"onProfileClick($event)\">\r\n <ng-template #triggerTemplate>\r\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\r\n <div class=\"profile-avatar\">\r\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\r\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\r\n </div>\r\n } @else {\r\n <div class=\"profile-avatar\">\r\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\r\n </div>\r\n }\r\n </ng-template>\r\n </cide-ele-dropdown>\r\n <div class=\"header-tooltip\">My Account</div>\r\n </div>\r\n </div>\r\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.header-year-pill{position:relative;display:flex;align-items:center;padding:.375rem .75rem;background:linear-gradient(135deg,#3b82f61a,#2563eb26);border:1px solid rgba(59,130,246,.3);border-radius:9999px;color:#2563eb;font-size:.75rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;white-space:nowrap;box-shadow:0 1px 3px #3b82f61a}.header-year-pill:hover{background:linear-gradient(135deg,#3b82f626,#2563eb33);border-color:#3b82f666;transform:translateY(-1px);box-shadow:0 2px 6px #3b82f626}.header-year-pill-text{max-width:150px;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"] }]
1742
1782
  }], ctorParameters: () => [], propDecorators: { triggerTemplate: [{
1743
1783
  type: ViewChild,
1744
1784
  args: ['triggerTemplate']
@@ -2944,8 +2984,8 @@ class CideLytSidedrawerWrapperComponent {
2944
2984
  }
2945
2985
  ngOnInit() {
2946
2986
  // Initialize the component map (You'd likely populate this from a config or service)
2947
- this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-Dq97FU7V.mjs').then(m => m.CideLytSidedrawerNotesComponent);
2948
- this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-CfH0gv6b.mjs').then(m => m.CideLytDrawerThemeComponent);
2987
+ this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-cCi9qet6.mjs').then(m => m.CideLytSidedrawerNotesComponent);
2988
+ this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-B7IgPn17.mjs').then(m => m.CideLytDrawerThemeComponent);
2949
2989
  }
2950
2990
  async loadComponent(configFor) {
2951
2991
  console.log('🔍 SIDEDRAWER - Loading component:', configFor, 'Current tab:', this.currentTabId);
@@ -3468,7 +3508,7 @@ const layoutControlPannelChildRoutes = [{
3468
3508
  },
3469
3509
  {
3470
3510
  path: "home",
3471
- loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-DK1ebn4K.mjs').then(c => c.CideLytHomeWrapperComponent),
3511
+ loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-Bc4aNdVq.mjs').then(c => c.CideLytHomeWrapperComponent),
3472
3512
  canActivate: [authGuard],
3473
3513
  data: {
3474
3514
  reuseTab: true, // For CustomRouteReuseStrategy
@@ -5036,4 +5076,4 @@ var floatingEntityRightsSharing_component = /*#__PURE__*/Object.freeze({
5036
5076
  */
5037
5077
 
5038
5078
  export { AppStateHelperService as A, CideLytSharedWrapperComponent as C, ENVIRONMENT_CONFIG as E, CideLytSidebarService as a, CideLytRequestService as b, CideLytSidedrawerService as c, CideLytThemeService as d, AppStateService as e, CloudIdeLayoutService as f, CloudIdeLayoutComponent as g, CideLytSharedService as h, layoutControlPannelChildRoutes as i, CustomRouteReuseStrategy as j, CideLytUserStatusService as k, layoutRoutes as l, CacheManagerService as m, CideLytFileManagerService as n, CideLytFloatingEntityRightsSharingComponent as o, processThemeVariable as p, CideLytFloatingEntityRightsSharingService as q, setCSSVariable as s, themeFactory as t };
5039
- //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-pi0j2OhQ.mjs.map
5079
+ //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-Cnkd-aj7.mjs.map