{"version":3,"file":"fullstack-devops-ngx-mat-components.mjs","sources":["../../../projects/ngx-mat-components/src/fs-calendar/services/fs-calendar.service.ts","../../../projects/ngx-mat-components/src/fs-calendar/calendar-panels/calendar-panels.component.ts","../../../projects/ngx-mat-components/src/fs-calendar/calendar-panels/calendar-panels.component.html","../../../projects/ngx-mat-components/src/fs-calendar/calendar-table/fs-calendar-table.component.ts","../../../projects/ngx-mat-components/src/fs-calendar/calendar-table/fs-calendar-table.component.html","../../../projects/ngx-mat-components/src/fs-calendar/directives/fs-calendar-table-name.directive.ts","../../../projects/ngx-mat-components/src/fs-calendar/fs-calendar.module.ts","../../../projects/ngx-mat-components/src/fs-calendar/public-api.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/directives/fs-nav-frame-content.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/services/fs-nav-frame.service.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/components/fs-nav-frame-sidebar.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/components/fs-nav-frame-sidebar-item/fs-nav-frame-sidebar-item.component.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/components/fs-nav-frame-sidebar-item/fs-nav-frame-sidebar-item.component.html","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-frame.component.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-frame.component.html","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-user-profile/directives/fs-nav-user-profile-actions.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-user-profile/directives/fs-nav-user-profile-name.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-user-profile/directives/fs-nav-user-profile-subname.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-user-profile/fs-nav-user-profile.component.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-user-profile/fs-nav-user-profile.component.html","../../../projects/ngx-mat-components/src/fs-nav-frame/nav-frame-toolbar/directives/fs-nav-frame-toolbar-center.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/nav-frame-toolbar/directives/fs-nav-frame-toolbar-end.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/nav-frame-toolbar/directives/fs-nav-frame-toolbar-start.directive.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/nav-frame-toolbar/fs-nav-frame-toolbar.component.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/nav-frame-toolbar/fs-nav-frame-toolbar.component.html","../../../projects/ngx-mat-components/src/fs-nav-frame/fs-nav-frame.module.ts","../../../projects/ngx-mat-components/src/fs-nav-frame/public-api.ts","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-check-svg.ts","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-theme-icon/fs-theme-icon.ts","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-theme-icon/fs-theme-icon.html","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-theme-menu.ts","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-theme-menu.html","../../../projects/ngx-mat-components/src/fs-theme-menu/fs-theme-menu.module.ts","../../../projects/ngx-mat-components/src/fs-theme-menu/public-api.ts","../../../projects/ngx-mat-components/src/public-api.ts","../../../projects/ngx-mat-components/src/fullstack-devops-ngx-mat-components.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport * as dateFns from 'date-fns';\nimport { CalendarExtendedDay, CalendarExtendedDayMeta, CalendarExtendedDayMetaType, CalendarMonth, CalendarPanel, CalendarPanelSum } from '../calendar.models';\n\ntype StartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FsCalendarService {\n  dayNames: string[] = this.getWeekDayNames();\n  oneYearOfMonths: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n  weekStartsOn: StartsOn = 1;\n  kwStartsOn: StartsOn = 4;\n\n  constructor(@Inject('FS_DATE_LOCALE') private readonly appLocale: dateFns.Locale) {}\n\n  generateMatrix(\n    mode: 'monthly' | 'annual',\n    calendarWeek: boolean,\n    customDays: CalendarExtendedDay<any>[],\n    year: number,\n    currMonth: number,\n    monthsBefore: number,\n    monthsAfter: number\n  ): CalendarPanelSum {\n    let cal: CalendarPanelSum;\n    let daysAbsolute: CalendarExtendedDay<any>[] = [];\n\n    monthsAfter = monthsAfter ? parseInt(monthsAfter.toString(), 10) : monthsAfter;\n    monthsBefore = monthsBefore ? parseInt(monthsBefore.toString(), 10) : monthsBefore;\n    currMonth = currMonth ? parseInt(currMonth.toString(), 10) : currMonth;\n\n    // Standard calendar\n    if (mode === 'monthly') {\n      let calendarPanels: CalendarPanel[] = [];\n      for (let index = 0; index < monthsBefore; index++) {\n        const calculatedMonth = currMonth - monthsBefore + index;\n        const actualYear = calculatedMonth + 1 < 1 ? year - 1 : year;\n        const actualMonth = calculatedMonth + 1 < 1 ? 12 + calculatedMonth : calculatedMonth;\n        calendarPanels.push(this.generatePanel(actualYear, actualMonth, calendarWeek, customDays));\n      }\n      calendarPanels.push(this.generatePanel(year, currMonth, calendarWeek, customDays));\n      for (let index = 0; index < monthsAfter; index++) {\n        const calculatedMonth = currMonth + index + 1;\n        const actualYear = calculatedMonth > 11 ? year + 1 : year;\n        const actualMonth = calculatedMonth > 11 ? calculatedMonth - 12 : calculatedMonth;\n        calendarPanels.push(this.generatePanel(actualYear, actualMonth, calendarWeek, customDays));\n      }\n\n      calendarPanels.forEach(panel => {\n        panel.days.forEach(day => {\n          daysAbsolute.push(day);\n        });\n      });\n      cal = {\n        year: year,\n        dayNames: this.dayNames,\n        daysAbsolute: daysAbsolute,\n        calendarPanels: calendarPanels,\n      };\n    } else {\n      // Calendar is a full year\n      let calendarPanels = this.generatePanels(year, this.oneYearOfMonths, calendarWeek, customDays);\n      calendarPanels.forEach(panel => {\n        panel.days.forEach(day => {\n          daysAbsolute.push(day);\n        });\n      });\n      cal = {\n        year: year,\n        dayNames: this.dayNames,\n        daysAbsolute: daysAbsolute,\n        calendarPanels: calendarPanels,\n      };\n    }\n    return cal;\n  }\n\n  generatePanels(year: number, months: number[], calendarWeek: boolean, customDays: CalendarExtendedDay<any>[]): CalendarPanel[] {\n    let tmpPanels: CalendarPanel[] = [];\n    months.forEach(month => {\n      tmpPanels.push(this.generatePanel(year, month, calendarWeek, customDays));\n    });\n    return tmpPanels;\n  }\n\n  generatePanel(year: number, month: number, calendarWeek: boolean, customDays: CalendarExtendedDay<any>[]): CalendarPanel {\n    const filtedCustomDays = customDays.filter(day => {\n      return dateFns.isSameMonth(new Date(year, month, 1), day.date);\n    });\n    let tmpMonth = this.generateMonth(year, month, filtedCustomDays);\n    let tmpMonthRenderer: CalendarPanel = {\n      year: year,\n      month: month,\n      monthName: tmpMonth.name,\n      days: tmpMonth.days,\n      render: [[]],\n    };\n    let tmpPreRender: CalendarExtendedDay<any>[] = tmpMonth.days;\n    let firstDayOfMonth = tmpMonth.days[0].date;\n    let dayOfWeek = dateFns.getISODay(firstDayOfMonth);\n    let nextMonth = dateFns.addMonths(firstDayOfMonth, 1);\n    // previous month\n    for (let i = 0; i < dayOfWeek - 1; i++) {\n      tmpPreRender.splice(0, 0, this.generatePlaceholder(dateFns.subDays(firstDayOfMonth, i + 1)));\n    }\n    // post month\n    for (let i = 0; tmpPreRender.length < 42; i++) {\n      tmpPreRender.splice(tmpPreRender.length, 0, this.generatePlaceholder(dateFns.addDays(nextMonth, i)));\n    }\n    // CalendarWeekDays && tr rows\n    if (calendarWeek) {\n      tmpPreRender.splice(0, 0, this.generateWeekNumber(tmpPreRender[0].date));\n      tmpPreRender.splice(8, 0, this.generateWeekNumber(tmpPreRender[8].date));\n      tmpPreRender.splice(16, 0, this.generateWeekNumber(tmpPreRender[16].date));\n      tmpPreRender.splice(24, 0, this.generateWeekNumber(tmpPreRender[24].date));\n      tmpPreRender.splice(32, 0, this.generateWeekNumber(tmpPreRender[32].date));\n      tmpPreRender.splice(40, 0, this.generateWeekNumber(tmpPreRender[40].date));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(0, 8));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(8, 16));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(16, 24));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(24, 32));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(32, 40));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(40, 48));\n    } else {\n      tmpMonthRenderer.render.push(tmpPreRender.slice(0, 7));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(7, 14));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(14, 21));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(21, 28));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(28, 35));\n      tmpMonthRenderer.render.push(tmpPreRender.slice(35, 42));\n    }\n    return tmpMonthRenderer;\n  }\n\n  generatePlaceholder(date: Date): CalendarExtendedDay<any> {\n    return {\n      date: date,\n      _meta: this.generateMetaForCalExtDay(date, 'plHolder'),\n    };\n  }\n\n  generateWeekNumber(date: Date): CalendarExtendedDay<any> {\n    return {\n      date: date,\n      _meta: this.generateMetaForCalExtDay(date, 'cw'),\n    };\n  }\n\n  generateMonth(year: number, month: number, customDays: CalendarExtendedDay<any>[]): CalendarMonth {\n    const firstDayInMonth = new Date(year, month, 1);\n    const daysInMonth = dateFns.getDaysInMonth(firstDayInMonth);\n    const days: CalendarExtendedDay<any>[] = [];\n\n    for (let index = 0; index < daysInMonth; index++) {\n      const date = new Date(year, month, index + 1);\n      const filtedCustomDays = customDays.filter(day => {\n        return dateFns.isSameDay(date, day.date);\n      });\n      days.push(this.generateDay(date, filtedCustomDays));\n    }\n\n    return {\n      name: dateFns.format(days[0].date, 'MMMM', { locale: this.appLocale }),\n      year: year,\n      days: days,\n      dayNames: this.dayNames,\n    };\n  }\n\n  generateDay(dateToGenerate: Date, customDays: CalendarExtendedDay<any>[]): CalendarExtendedDay<any> {\n    if (customDays.length == 0) {\n      return {\n        date: dateToGenerate,\n        _meta: this.generateMetaForCalExtDay(dateToGenerate, 'day'),\n      };\n    } else {\n      let backgroundColor = '';\n      let toolTip = '';\n      switch (customDays.length) {\n        case 2:\n          backgroundColor = `linear-gradient(110deg, ${customDays[0].colors?.backgroundColor} 49%, ${customDays[1].colors?.backgroundColor} 51%)`;\n          toolTip = `<li>${customDays[0].toolTip}</li><li>${customDays[1].toolTip}</li>`;\n          break;\n        case 3:\n          backgroundColor = `linear-gradient(110deg,\n                ${customDays[0].colors?.backgroundColor}, ${customDays[0].colors?.backgroundColor} 31%,\n                ${customDays[1].colors?.backgroundColor} 32%, ${customDays[1].colors?.backgroundColor} 65%,\n                ${customDays[2].colors?.backgroundColor} 66%)`;\n          toolTip = `${customDays[0].toolTip} <br> ${customDays[1].toolTip} <br> ${customDays[2].toolTip}`;\n          break;\n        case 4:\n          backgroundColor = `linear-gradient(110deg,\n              ${customDays[0].colors?.backgroundColor}, ${customDays[0].colors?.backgroundColor} 24%,\n              ${customDays[1].colors?.backgroundColor} 26%, ${customDays[1].colors?.backgroundColor} 49%,\n              ${customDays[2].colors?.backgroundColor} 51%, ${customDays[2].colors?.backgroundColor} 74%,\n              ${customDays[3].colors?.backgroundColor} 76%)`;\n          toolTip = `${customDays[0].toolTip} <br> ${customDays[1].toolTip} <br> ${customDays[2].toolTip} <br> ${customDays[3].toolTip}`;\n          break;\n        default:\n          if (customDays[0].colors?.backgroundColor) {\n            backgroundColor = customDays[0].colors?.backgroundColor;\n          }\n          if (customDays[0].toolTip) {\n            toolTip = customDays[0].toolTip;\n          }\n          break;\n      }\n      return {\n        date: dateToGenerate,\n        badge: customDays[0].badge,\n        char: customDays[0].char,\n        colors: {\n          backgroundColor: backgroundColor,\n          color: customDays[0].colors?.color,\n        },\n        toolTip: toolTip,\n        customData: customDays[0].customData,\n        _meta: this.generateMetaForCalExtDay(dateToGenerate, 'day'),\n      };\n    }\n  }\n\n  addDays(orig: CalendarExtendedDay<any>, ammount: number): CalendarExtendedDay<any> {\n    let newDate = dateFns.addDays(orig.date, ammount);\n    return {\n      date: newDate,\n      badge: orig.badge,\n      char: orig.char,\n      colors: orig.colors,\n      customData: orig.customData,\n      toolTip: orig.toolTip,\n      _meta: this.generateMetaForCalExtDay(newDate, 'day'),\n    };\n  }\n\n  generateMetaForCalExtDay(date: Date, type: CalendarExtendedDayMetaType): CalendarExtendedDayMeta {\n    return {\n      kw: dateFns.getWeek(date, { weekStartsOn: this.kwStartsOn }),\n      type: type,\n      dayNumber: dateFns.format(date, 'd', {\n        locale: this.appLocale,\n      }),\n      dayOfWeek: dateFns.getISODay(date),\n      isWeekendDay: dateFns.isWeekend(date),\n    };\n  }\n\n  getWeekDayNames(): string[] {\n    let now = new Date();\n    let arr = dateFns.eachDayOfInterval({\n      start: dateFns.startOfWeek(now, { locale: this.appLocale, weekStartsOn: this.weekStartsOn }),\n      end: dateFns.endOfWeek(now, { locale: this.appLocale, weekStartsOn: this.weekStartsOn }),\n    });\n    return arr.map(a => dateFns.format(a, 'EEEEEE', { locale: this.appLocale }));\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, input, OnInit, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as dateFns from 'date-fns';\nimport { CalendarEvent, CalendarExtendedDay, CalendarPanels, CalendarPanelSum } from '../calendar.models';\nimport { FsCalendarService } from '../services/fs-calendar.service';\n\n@Component({\n  selector: 'fs-calendar-panels',\n  templateUrl: './calendar-panels.component.html',\n  styleUrls: ['./calendar-panels.component.scss'],\n  imports: [CommonModule, MatButtonModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-calendar-panels',\n    'data-component-id': 'fs-calendar-panels-unique',\n  },\n})\nexport class FsCalendarPanelsComponent implements OnInit {\n  private readonly calendarService = inject(FsCalendarService);\n\n  dataSource = input<CalendarPanels<any>>({\n    config: {\n      renderMode: 'monthly',\n      selectMode: 'click',\n      displayYear: true,\n      firstDayOfWeekMonday: true,\n      calendarWeek: false,\n      switches: true,\n      bluredDays: false,\n      markWeekend: true,\n      panelWidth: '350px',\n    },\n    data: [],\n  });\n\n  month = input<number>(new Date().getUTCMonth());\n  year = input<number>(new Date().getFullYear());\n  monthsBefore = input<number>(0);\n  monthsAfter = input<number>(0);\n  placeholderDay = input<boolean>(false);\n\n  selection = output<CalendarEvent<any>>();\n\n  private readonly internalMonth = signal<number>(new Date().getUTCMonth());\n  private readonly internalYear = signal<number>(new Date().getFullYear());\n\n  protected readonly calendar = computed<CalendarPanelSum | undefined>(() => {\n    const ds = this.dataSource();\n    const usedYear = this.monthOverrride() ? this.internalYear() : this.year();\n    const usedMonth = this.monthOverrride() ? this.internalMonth() : this.month();\n\n    return this.calendarService.generateMatrix(\n      ds.config.renderMode,\n      ds.config.calendarWeek,\n      ds.data,\n      usedYear,\n      usedMonth,\n      this.monthsBefore(),\n      this.monthsAfter()\n    );\n  });\n\n  protected readonly today = new Date();\n  protected readonly selectedDayStart = signal<CalendarExtendedDay<any> | undefined>(undefined);\n  protected readonly selectedDayBetween = signal<CalendarExtendedDay<any>[]>([]);\n  protected readonly selectedDayEnd = signal<CalendarExtendedDay<any> | undefined>(undefined);\n  protected readonly monthOverrride = signal<boolean>(false);\n  protected readonly isLoading = signal<boolean>(true);\n\n  protected readonly markWeekend = computed(() => this.dataSource().config.markWeekend);\n  protected readonly bluredDays = computed(() => this.dataSource().config.bluredDays);\n  protected readonly weekendColor = 'rgba(0, 0, 0, .25)';\n\n  constructor() {\n    // Sync input signals to internal signals on changes\n    effect(() => {\n      this.internalMonth.set(this.month());\n      this.internalYear.set(this.year());\n    });\n  }\n\n  @HostListener('window:keyup', ['$event'])\n  keyEvent(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\n      this.selectedDayBetween.set([]);\n      this.selectedDayStart.set(undefined);\n      this.selectedDayEnd.set(undefined);\n    }\n  }\n\n  ngOnInit() {\n    this.isLoading.set(false);\n  }\n\n  onClick(day: CalendarExtendedDay<any>, type: string) {\n    const config = this.dataSource().config;\n\n    if (type === 'date' && config.selectMode === 'range') {\n      const start = this.selectedDayStart();\n      const end = this.selectedDayEnd();\n\n      if (start != undefined && end != undefined) {\n        this.selectedDayBetween.set([]);\n        this.selectedDayStart.set(undefined);\n        this.selectedDayEnd.set(undefined);\n      }\n\n      if (dateFns.isBefore(day.date, start?.date as Date) || start === undefined) {\n        this.selectedDayStart.set(day);\n      } else {\n        this.selectedDayEnd.set(day);\n\n        let daysBetween: number = dateFns.differenceInDays(start.date, day.date);\n        let daysAffected: CalendarExtendedDay<any>[] = [];\n\n        daysAffected.push(start);\n        if (daysBetween < 0) {\n          for (let index = 1; index < daysBetween * -1 + 1; index++) {\n            let newGeneratedDay = this.calendarService.generateDay(dateFns.addDays(start.date, index), []);\n            let i = this.dataSource().data.findIndex(sd => dateFns.isSameDay(sd.date, newGeneratedDay.date));\n            if (i != -1) {\n              daysAffected.push(this.dataSource().data[i]);\n            } else {\n              daysAffected.push(newGeneratedDay);\n            }\n          }\n        }\n\n        this.selection.emit({\n          type: 'range',\n          start: start,\n          end: day,\n          affectedDays: daysAffected,\n        });\n      }\n    } else {\n      this.selection.emit({\n        type: 'click',\n        date: day,\n      });\n    }\n  }\n\n  onMouseOver(dateComp: Date) {\n    const cal = this.calendar();\n    const start = this.selectedDayStart();\n    const end = this.selectedDayEnd();\n\n    if (cal != undefined) {\n      if (start != undefined && end == undefined) {\n        this.selectedDayBetween.set(\n          cal.daysAbsolute.filter(date => {\n            return dateFns.isAfter(date.date, start.date) && dateFns.isBefore(date.date, dateComp);\n          })\n        );\n      }\n    }\n  }\n\n  getAmIBetween(date: Date): boolean {\n    const between = this.selectedDayBetween();\n    const fIndex = between.findIndex(selDate => {\n      return dateFns.isSameDay(selDate.date, date);\n    });\n    return fIndex != -1;\n  }\n\n  isSelectedDayStart(date: Date): boolean {\n    const start = this.selectedDayStart();\n    if (start) {\n      return dateFns.isSameDay(start.date, date);\n    }\n    return false;\n  }\n\n  isSelectedDayEnd(date: Date): boolean {\n    const end = this.selectedDayEnd();\n    const between = this.selectedDayBetween();\n\n    if (end) {\n      return dateFns.isSameDay(end.date, date);\n    } else {\n      if (between.length > 0) {\n        if (dateFns.isSameDay(this.calendarService.addDays(between[between.length - 1], 1).date, date)) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }\n\n  isToday(date: Date): boolean {\n    return dateFns.isSameDay(new Date(), date);\n  }\n\n  getCanIBeHighlighted(date: Date) {\n    const start = this.selectedDayStart();\n    const end = this.selectedDayEnd();\n\n    if (end) {\n      if (\n        (!dateFns.isSameDay(start?.date as Date, date) && !dateFns.isSameDay(end.date, date) && this.getAmIBetween(date)) ||\n        (dateFns.isSameDay(end.date, date) && end != undefined) ||\n        (dateFns.isSameDay(start?.date as Date, date) && start != undefined)\n      ) {\n        return true;\n      }\n      return false;\n    }\n    return false;\n  }\n\n  onMonthForward() {\n    this.monthOverrride.set(true);\n    const currentMonth = this.internalMonth();\n    const currentYear = this.internalYear();\n\n    if (currentMonth >= 11) {\n      this.internalYear.set(currentYear + 1);\n      this.internalMonth.set(0);\n    } else {\n      this.internalMonth.set(currentMonth + 1);\n    }\n  }\n\n  onMonthBackward() {\n    this.monthOverrride.set(true);\n    const currentMonth = this.internalMonth();\n    const currentYear = this.internalYear();\n\n    if (currentMonth <= 0) {\n      this.internalYear.set(currentYear - 1);\n      this.internalMonth.set(11);\n    } else {\n      this.internalMonth.set(currentMonth - 1);\n    }\n  }\n}\n","@if (calendar() !== undefined) {\n  <div class=\"fs-calendar-helper\">\n    @for (month of calendar()?.calendarPanels; track month.monthName + '-' + month.year; let iMonth = $index) {\n      <div class=\"fs-calendar-month\">\n        <div class=\"month-header\">\n          @if (dataSource().config.switches && dataSource().config.renderMode != 'annual' && iMonth == 0) {\n            <button mat-icon-button (click)=\"onMonthBackward()\" class=\"fs-calendar-switches\" aria-label=\"Previous month\" title=\"Previous month\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"48\"\n                height=\"48\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"1\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                class=\"lucide lucide-chevron-left-icon lucide-chevron-left\">\n                <path d=\"m15 18-6-6 6-6\" />\n              </svg>\n            </button>\n          } @else {\n            <div style=\"width: 40px\"></div>\n          }\n          <div>\n            {{ month.monthName }}\n            {{ dataSource().config.displayYear ? month.year : '' }}\n          </div>\n          @if (dataSource().config.switches && dataSource().config.renderMode != 'annual' && (calendar()?.calendarPanels?.length ?? 0) == iMonth + 1) {\n            <button mat-icon-button (click)=\"onMonthForward()\" class=\"fs-calendar-switches\" aria-label=\"Next month\" title=\"Next month\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"48\"\n                height=\"48\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"1\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                class=\"lucide lucide-chevron-right-icon lucide-chevron-right\">\n                <path d=\"m9 18 6-6-6-6\" />\n              </svg>\n            </button>\n          } @else {\n            <div style=\"width: 40px\"></div>\n          }\n        </div>\n        <table class=\"fs-calendar-panels-table\" [style.width]=\"dataSource().config.panelWidth\">\n          <thead class=\"fs-calendar-panels-table-header\">\n            <tr>\n              @if (dataSource().config.calendarWeek) {\n                <th scope=\"col\"></th>\n              }\n              @for (dayname of calendar()?.dayNames; track dayname) {\n                <th scope=\"col\">{{ dayname }}</th>\n              }\n            </tr>\n            <tr>\n              @if (dataSource().config.calendarWeek) {\n                <th scope=\"col\" class=\"kw\"></th>\n              }\n              <th scope=\"col\" style=\"height: 10px\"></th>\n            </tr>\n          </thead>\n          <tbody role=\"grid\" class=\"fs-calendar-body\">\n            @for (row of month.render; track $index; let iRender = $index) {\n              <tr role=\"row\">\n                @for (day of row; track day.date.getTime() + '-' + $index; let iDay = $index) {\n                  @if (day._meta?.type == 'day') {\n                    <td\n                      role=\"gridcell\"\n                      class=\"fs-calendar-body-cell clickable tooltip\"\n                      tabindex=\"-1\"\n                      [ngClass]=\"dataSource().config.calendarWeek ? 'eight' : 'seven'\"\n                      (click)=\"onClick(day, 'date')\"\n                      (mouseenter)=\"onMouseOver(day.date)\">\n                      @if (day.toolTip) {\n                        <ul class=\"tooltiptext\" [innerHTML]=\"day.toolTip\"></ul>\n                      }\n                      <div\n                        class=\"fs-calendar-body-cell-content\"\n                        [class.fs-calendar-body-today]=\"isToday(day.date)\"\n                        [class.selected-set]=\"getCanIBeHighlighted(day.date)\"\n                        [class.selected-start]=\"isSelectedDayStart(day.date)\"\n                        [class.selected-end]=\"isSelectedDayEnd(day.date)\"\n                        [class.date-between]=\"getAmIBetween(day.date)\">\n                        {{ day._meta?.dayNumber }}\n                      </div>\n                      <div\n                        class=\"fs-calendar-body-cell-content\"\n                        style=\"z-index: -3; border-radius: 4px\"\n                        [class.weekend]=\"day._meta?.isWeekendDay && day.colors?.backgroundColor != '' && markWeekend()\"\n                        [class.blured-days]=\"bluredDays() && day.colors?.backgroundColor\"\n                        [ngStyle]=\"{ background: day.colors?.backgroundColor }\"></div>\n                    </td>\n                  }\n                  @if (day._meta?.type == 'cw') {\n                    <td role=\"gridcell\" class=\"fs-calendar-body-cell kw\" tabindex=\"-1\" [ngClass]=\"dataSource().config.calendarWeek ? 'eight' : 'seven'\">\n                      @if (row[iDay + 1]._meta?.type == 'plHolder' && iRender != 0) {\n                        <div>{{ placeholderDay() ? day._meta?.kw : '' }}</div>\n                      } @else {\n                        <div>{{ day._meta?.kw }}</div>\n                      }\n                    </td>\n                  }\n                  @if (day._meta?.type == 'plHolder' && placeholderDay()) {\n                    <td\n                      role=\"gridcell\"\n                      class=\"fs-calendar-body-cell clickable placeholder-day\"\n                      tabindex=\"-1\"\n                      (click)=\"onClick(day, 'placeholderDay')\"\n                      [ngClass]=\"dataSource().config.calendarWeek ? 'eight' : 'seven'\">\n                      <div class=\"fs-calendar-body-cell-content\">\n                        {{ day._meta?.dayNumber }}\n                      </div>\n                    </td>\n                  }\n                  @if (day._meta?.type == 'plHolder' && !placeholderDay()) {\n                    <td role=\"gridcell\" class=\"fs-calendar-body-cell\" tabindex=\"-1\" [ngClass]=\"dataSource().config.calendarWeek ? 'eight' : 'seven'\">\n                      <div></div>\n                    </td>\n                  }\n                }\n              </tr>\n              <tr>\n                @if (dataSource().config.calendarWeek) {\n                  <th scope=\"col\" class=\"kw\"></th>\n                }\n                <th scope=\"col\" style=\"height: 5px\"></th>\n              </tr>\n            }\n          </tbody>\n        </table>\n      </div>\n    }\n  </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, OnInit, output, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as dateFns from 'date-fns';\nimport { CalendarMonth, CalendarTableEntry } from '../calendar.models';\nimport { FsCalendarService } from '../services/fs-calendar.service';\n\n@Component({\n  selector: 'fs-calendar-table',\n  imports: [MatButtonModule],\n  templateUrl: './fs-calendar-table.component.html',\n  styleUrls: ['./fs-calendar-table.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-calendar-table mat-mdc-card mdc-card mat-mdc-card-outlined mdc-card--outlined',\n    'data-component-id': 'fs-calendar-table-unique',\n  },\n})\nexport class FsCalendarTableComponent implements OnInit {\n  private readonly calendarService = inject(FsCalendarService);\n\n  dataSource = input<CalendarTableEntry[]>([]);\n  month = input<number>(dateFns.getMonth(new Date()));\n  year = input<number>(dateFns.getYear(new Date()));\n\n  monthChange = output<number>();\n  yearChange = output<number>();\n\n  private readonly internalMonth = signal<number>(dateFns.getMonth(new Date()));\n  private readonly internalYear = signal<number>(dateFns.getYear(new Date()));\n\n  isLoading = signal<boolean>(true);\n  markWeekend = true;\n\n  protected readonly currentMonth = computed<CalendarMonth>(() => {\n    return this.calendarService.generateMonth(this.internalYear(), this.internalMonth(), []);\n  });\n\n  protected readonly tableData = computed<CalendarTableEntry[]>(() => {\n    const data = this.dataSource();\n    return data.map((item: CalendarTableEntry) => ({\n      name: item.name,\n      data: this.calendarService.generateMonth(this.internalYear(), this.internalMonth(), item.data).days,\n    }));\n  });\n\n  constructor() {\n    // Sync input signals to internal signals\n    effect(() => {\n      this.internalMonth.set(this.month());\n      this.monthChange.emit(this.month());\n    });\n\n    effect(() => {\n      this.internalYear.set(this.year());\n      this.yearChange.emit(this.year());\n    });\n  }\n\n  ngOnInit() {\n    this.isLoading.set(false);\n  }\n\n  onMonthForward() {\n    const currentMonth = this.internalMonth();\n    const currentYear = this.internalYear();\n\n    if (currentMonth >= 11) {\n      this.internalYear.set(currentYear + 1);\n      this.internalMonth.set(0);\n    } else {\n      this.internalMonth.set(currentMonth + 1);\n    }\n\n    this.monthChange.emit(this.internalMonth());\n    this.yearChange.emit(this.internalYear());\n  }\n\n  onMonthBackward() {\n    const currentMonth = this.internalMonth();\n    const currentYear = this.internalYear();\n\n    if (currentMonth <= 0) {\n      this.internalYear.set(currentYear - 1);\n      this.internalMonth.set(11);\n    } else {\n      this.internalMonth.set(currentMonth - 1);\n    }\n\n    this.monthChange.emit(this.internalMonth());\n    this.yearChange.emit(this.internalYear());\n  }\n\n  isToday(date: Date): boolean {\n    return dateFns.isSameDay(new Date(), date);\n  }\n}\n","<div class=\"fs-calendar-table-helper\">\n  @if (!isLoading()) {\n    <table>\n      <thead role=\"rowgroup\">\n        <tr>\n          <th>\n            <ng-content select=\"fs-calendar-table-name\"></ng-content>\n          </th>\n          <th>\n            <button mat-icon-button class=\"fs-calendar-switches\" (click)=\"onMonthBackward()\" aria-label=\"Previous month\" title=\"Previous month\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"48\"\n                height=\"48\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"1\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                class=\"lucide lucide-chevron-left-icon lucide-chevron-left\">\n                <path d=\"m15 18-6-6 6-6\" />\n              </svg>\n            </button>\n          </th>\n          @for (day of currentMonth().days; track day.date) {\n            <th [class.date-today]=\"isToday(day.date)\" [class.weekend]=\"day._meta?.isWeekendDay && !isToday(day.date) && markWeekend\">\n              {{ day._meta?.dayNumber }}\n              <br />\n              {{ currentMonth().dayNames[day._meta!.dayOfWeek - 1] }}\n            </th>\n          }\n          <th>\n            <button mat-icon-button class=\"fs-calendar-switches\" (click)=\"onMonthForward()\" aria-label=\"Next month\" title=\"Next month\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"48\"\n                height=\"48\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"1\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                class=\"lucide lucide-chevron-right-icon lucide-chevron-right\">\n                <path d=\"m9 18 6-6-6-6\" />\n              </svg>\n            </button>\n          </th>\n        </tr>\n      </thead>\n\n      <tbody role=\"rowgroup\">\n        @for (entry of tableData(); track entry.name) {\n          <tr>\n            <td colspan=\"2\">{{ entry.name }}</td>\n            @for (day of entry.data; track day.date) {\n              <td [class.tooltip]=\"day.toolTip\" [class.weekend]=\"day._meta?.isWeekendDay && markWeekend\">\n                @if (day.toolTip) {\n                  <span class=\"tooltiptext\">{{ day.toolTip }}</span>\n                }\n                <div class=\"box box-base\" [style.backgroundColor]=\"day.colors?.backgroundColor\" [style.color]=\"day.colors?.color\">\n                  {{ day.char }}\n                </div>\n              </td>\n            }\n            <td></td>\n          </tr>\n        }\n      </tbody>\n    </table>\n  }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-calendar-table-name\", [fsCalendarTableName\"]',\n  host: { class: 'fs-calendar-table-name\"' },\n})\nexport class FsCalendarTableNameDirective {\n  constructor() {}\n}\n","/**\n * FsCalendarModule - Barrel Module for Calendar Components\n *\n * Import this single module to get all Calendar components and directives.\n * Follows Angular Material's module pattern for better DX.\n *\n * @example\n * ```typescript\n * import { FsCalendarModule } from '@fullstack-devops/ngx-mat-components';\n *\n * @Component({\n *   imports: [FsCalendarModule]\n * })\n * export class AppComponent {}\n * ```\n */\n\nimport { FsCalendarPanelsComponent } from './calendar-panels/calendar-panels.component';\nimport { FsCalendarTableComponent } from './calendar-table/fs-calendar-table.component';\nimport { FsCalendarTableNameDirective } from './directives/fs-calendar-table-name.directive';\n\n/**\n * All Calendar related components and directives\n */\nexport const FS_CALENDAR_COMPONENTS = [\n  FsCalendarPanelsComponent,\n  FsCalendarTableComponent,\n  FsCalendarTableNameDirective,\n] as const;\n\n/**\n * Convenience array for importing all Calendar components\n *\n * Use this in your component's imports array:\n *\n * @example\n * ```typescript\n * @Component({\n *   imports: [FsCalendarModule]\n * })\n * export class AppComponent {}\n * ```\n */\nexport const FsCalendarModule = FS_CALENDAR_COMPONENTS;\n","/*\n * Public API Surface of ngx-mat-components\n */\n\nexport { FsCalendarPanelsComponent } from './calendar-panels/calendar-panels.component';\nexport { FsCalendarTableComponent } from './calendar-table/fs-calendar-table.component';\nexport * from './calendar.models';\nexport { FsCalendarTableNameDirective } from './directives/fs-calendar-table-name.directive';\n// Removed: export { FsCalendarModule } - Using standalone components now\nexport { FsCalendarService } from './services/fs-calendar.service';\n\n// Barrel Module - Import ALL components at once (like Angular Material)\nexport { FsCalendarModule, FS_CALENDAR_COMPONENTS } from './fs-calendar.module';\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-frame-content, [fsNavFrameContent]',\n  host: { class: 'fs-nav-frame-content' },\n})\nexport class FsNavFrameContentDirective {\n  constructor() {}\n}\n","import { Injectable, signal, computed } from '@angular/core';\nimport { NavFrameSizing } from '../fs-nav-frame.modules';\n\nexport enum MenuState {\n  CLOSED = 'closed',\n  OPENED = 'opened',\n}\n\n@Injectable()\nexport class FsNavFrameService {\n  // Private writable signals\n  private readonly _menuState = signal<MenuState>(MenuState.CLOSED);\n  private readonly _sizing = signal<NavFrameSizing>({\n    toolbarHeight: 3,\n    sidebarWidthClosed: 4,\n    sidebarWidthOpened: 18,\n  });\n\n  // Public readonly signals\n  readonly menuState = this._menuState.asReadonly();\n  readonly sizing = this._sizing.asReadonly();\n\n  // Computed signals\n  readonly isMenuClosed = computed(() => this._menuState() === MenuState.CLOSED);\n  readonly isMenuOpened = computed(() => this._menuState() === MenuState.OPENED);\n\n  // Actions\n  switchMenuState(): void {\n    this._menuState.update(state => (state === MenuState.OPENED ? MenuState.CLOSED : MenuState.OPENED));\n  }\n\n  changeMenuStateToClosed(): void {\n    this._menuState.set(MenuState.CLOSED);\n  }\n\n  openMenu(): void {\n    this._menuState.set(MenuState.OPENED);\n  }\n\n  setSizing(sizing: NavFrameSizing): void {\n    this._sizing.set(sizing);\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { FsNavFrameService } from '../services/fs-nav-frame.service';\n\n@Component({\n  selector: 'fs-nav-frame-sidebar',\n  exportAs: 'fsNavFrameSidebar',\n  template: '<ng-content></ng-content>',\n  host: {\n    class: 'fs-nav-frame-sidebar',\n    'data-component-id': 'fs-nav-frame-sidebar-unique',\n    role: 'navigation',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [FsNavFrameService],\n  standalone: true,\n})\nexport class FsNavFrameSidebar {}\n","import { ChangeDetectionStrategy, Component, input, computed, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { FsNavFrameService, MenuState } from '../../services/fs-nav-frame.service';\n\n@Component({\n  selector: 'fs-nav-frame-sidebar-item',\n  templateUrl: './fs-nav-frame-sidebar-item.component.html',\n  styleUrls: ['./fs-nav-frame-sidebar-item.component.scss'],\n  imports: [RouterLink, RouterLinkActive],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-nav-frame-sidebar-item',\n    'data-component-id': 'fs-nav-frame-sidebar-item-unique',\n  },\n})\nexport class FsNavFrameSidebarItemComponent {\n  // Input signals\n  readonly routerLink = input<string | undefined>();\n  readonly label = input<string>('');\n\n  @ViewChild(TemplateRef) template: TemplateRef<any> | undefined;\n\n  // Computed signal from service\n  protected readonly closed = computed(() => this.frameService.isMenuClosed());\n\n  constructor(protected frameService: FsNavFrameService) {}\n\n  closeSidemenu(): void {\n    if (this.frameService.menuState() === MenuState.OPENED) {\n      this.frameService.switchMenuState();\n    }\n  }\n}\n","<button [routerLink]=\"routerLink()\" routerLinkActive=\"active-link\" [attr.aria-label]=\"label()\" [attr.title]=\"label()\">\n  <ng-content select=\"i, span-lucide\"></ng-content>\n  <ng-content select=\"span\" class=\"nav-label\"></ng-content>\n</button>\n","import { Component, ContentChild, ElementRef, input, effect, computed, AfterViewInit, OnDestroy, TemplateRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavFrameConfig, NavFrameSizing } from './fs-nav-frame.modules';\nimport { FsNavFrameService, MenuState } from './services/fs-nav-frame.service';\n\n@Component({\n  selector: 'fs-nav-frame',\n  imports: [MatButtonModule],\n  templateUrl: './fs-nav-frame.component.html',\n  styleUrls: ['./fs-nav-frame.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [FsNavFrameService],\n  host: {\n    class: 'fs-nav-frame',\n    'data-component-id': 'fs-nav-frame-unique',\n  },\n})\nexport class FsNavFrameComponent implements AfterViewInit, OnDestroy {\n  // Inputs as signals\n  readonly navFrameConfig = input<NavFrameConfig>({ appName: '' });\n  readonly sizing = input<NavFrameSizing>({\n    toolbarHeight: 3,\n    sidebarWidthClosed: 4,\n    sidebarWidthOpened: 18,\n  });\n\n  @ContentChild('navLinks') navLinks: TemplateRef<any> | undefined;\n\n  private readonly body = document.querySelector('body');\n  private profileContentElement: HTMLElement | null = null;\n\n  // Computed from service\n  protected readonly isClosed = computed(() => this.frameService.isMenuClosed());\n\n  constructor(\n    private elementRef: ElementRef,\n    protected frameService: FsNavFrameService,\n    private titleService: Title\n  ) {\n    // Effect for sizing changes\n    effect(() => {\n      const size = this.sizing();\n      this.body?.style.setProperty('--toolbar-height', `${size.toolbarHeight}rem`);\n      this.body?.style.setProperty('--sidebar-width-closed', `${size.sidebarWidthClosed}rem`);\n      this.body?.style.setProperty('--sidebar-width-opened', `${size.sidebarWidthOpened}rem`);\n\n      // Update service sizing\n      this.frameService.setSizing(size);\n    });\n\n    // Effect for menu state changes\n    effect(() => {\n      const state = this.frameService.menuState();\n      if (this.profileContentElement) {\n        if (state === MenuState.OPENED) {\n          this.profileContentElement.classList.add('opened');\n        } else {\n          this.profileContentElement.classList.remove('opened');\n        }\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.profileContentElement = this.elementRef.nativeElement.querySelector('.fs-nav-user-profile .profile-content-wrapper');\n  }\n\n  ngOnDestroy(): void {\n    // Cleanup if needed\n  }\n\n  toggleSidemenu(): void {\n    this.frameService.switchMenuState();\n  }\n\n  closeSidebar(): void {\n    if (this.frameService.menuState() === MenuState.OPENED) {\n      this.frameService.switchMenuState();\n    }\n  }\n}\n","<div class=\"fs-nav-frame-logo\" [class.opened]=\"!isClosed()\">\n  <div class=\"logo-wrapper\">\n    <button mat-icon-button (click)=\"toggleSidemenu()\" aria-label=\"Toggle navigation menu\" title=\"Toggle menu\">\n      @if (navFrameConfig().logoSrc !== '' && navFrameConfig().logoSrc !== undefined) {\n        <div class=\"logo-picture\" [style.background-image]=\"'url(' + navFrameConfig().logoSrc + ')'\"></div>\n      }\n      @if (navFrameConfig().logoSrc === '' || navFrameConfig().logoSrc === undefined) {\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\">\n          <path d=\"M4 12h16\" />\n          <path d=\"M4 18h16\" />\n          <path d=\"M4 6h16\" />\n        </svg>\n      }\n    </button>\n  </div>\n  <div class=\"app-info-wrapper\" [class.opened]=\"!isClosed()\">\n    @if (!isClosed()) {\n      <span class=\"app-name\">{{ navFrameConfig().appName }}</span>\n      @if (navFrameConfig().appVersion) {\n        <span class=\"app-version\">{{ navFrameConfig().appVersion }}</span>\n      }\n    }\n  </div>\n</div>\n\n<ng-content select=\"fs-nav-frame-toolbar\"></ng-content>\n\n<div class=\"sidebar\" [class.opened]=\"!isClosed()\" (click)=\"closeSidebar()\">\n  <!-- Navigation -->\n  <ng-content select=\"fs-nav-frame-sidebar\" [class.opened]=\"!isClosed()\"></ng-content>\n\n  <!-- User Profile -->\n  <ng-content select=\"fs-nav-user-profile\" [class.opened]=\"!isClosed()\"></ng-content>\n</div>\n\n<div class=\"glassplane\" [class.opened]=\"!isClosed()\" (click)=\"closeSidebar()\"></div>\n<ng-content select=\"fs-nav-frame-content\" [class.opened]=\"!isClosed()\"></ng-content>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-user-profile-actions, [fsNavUserProfileActions]',\n  host: { class: 'fs-nav-user-profile-actions' },\n})\nexport class FsNavUserProfileActionsDirective {\n  constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-user-profile-name, [fsNavUserProfileName]',\n  host: { class: 'fs-nav-user-profile-name' },\n})\nexport class FsNavUserProfileNameDirective {\n  constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-user-profile-subname, [fsNavUserProfileSubName]',\n  host: { class: 'fs-nav-user-profile-subname' },\n})\nexport class FsNavUserProfileSubNameDirective {\n  constructor() {}\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { FsNavFrameService } from '../services/fs-nav-frame.service';\n\n@Component({\n  selector: 'fs-nav-user-profile',\n  templateUrl: './fs-nav-user-profile.component.html',\n  styleUrls: ['./fs-nav-user-profile.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-nav-user-profile',\n    'data-component-id': 'fs-nav-user-profile-unique',\n  },\n})\nexport class FsNavUserProfileComponent {\n  // Output signal\n  readonly onClickProfile = output<any>();\n\n  // Input signals\n  readonly profilePicture = input<string>('');\n  readonly opened = input<boolean>(false);\n\n  constructor(private frameService: FsNavFrameService) {}\n\n  toggleSidemenu(): void {\n    this.frameService.switchMenuState();\n  }\n}\n","<div class=\"profile-pic-button-wrapper\">\n  <button (click)=\"toggleSidemenu()\" aria-label=\"User profile menu\" title=\"User profile\">\n    @if (profilePicture() === '') {\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"48\"\n        height=\"48\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"1\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\">\n        <path d=\"M18 20a6 6 0 0 0-12 0\" />\n        <circle cx=\"12\" cy=\"10\" r=\"4\" />\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      </svg>\n    }\n    @if (profilePicture() !== '') {\n      <div class=\"default-profile-pic\" [style.background-image]=\"'url(' + profilePicture() + ')'\"></div>\n    }\n  </button>\n</div>\n\n<div class=\"profile-content-wrapper\" [class.opened]=\"opened()\">\n  <div class=\"user-infos\">\n    <ng-content select=\"fs-nav-user-profile-name\"></ng-content>\n    <ng-content select=\"fs-nav-user-profile-subname\"></ng-content>\n  </div>\n  <ng-content select=\"fs-nav-user-profile-actions\"></ng-content>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-frame-toolbar-center, [fsNavFrameToolbarCenter]',\n  host: { class: 'fs-nav-frame-toolbar-center' },\n})\nexport class FsNavFrameToolbarCenterDirective {\n  constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-frame-toolbar-end, [fsNavFrameToolbarEnd]',\n  host: { class: 'fs-nav-frame-toolbar-end' },\n})\nexport class FsNavFrameToolbarEndDirective {\n  constructor() {}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'fs-nav-frame-toolbar-start, [fsNavFrameToolbarStart]',\n  host: { class: 'fs-nav-frame-toolbar-start' },\n})\nexport class FsNavFrameToolbarStartDirective {\n  constructor() {}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ContentChild, inject, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { FsNavFrameService, MenuState } from '../services/fs-nav-frame.service';\n\n@Component({\n  selector: 'fs-nav-frame-toolbar',\n  imports: [NgTemplateOutlet],\n  templateUrl: './fs-nav-frame-toolbar.component.html',\n  styleUrls: ['./fs-nav-frame-toolbar.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-nav-frame-toolbar',\n    'data-component-id': 'fs-nav-frame-toolbar-unique',\n    '[class.opened]': 'isOpened()',\n  },\n})\nexport class FsNavFrameToolbarComponent {\n  private readonly frameService = inject(FsNavFrameService);\n\n  @ContentChild('tbcontent') tbcontent: TemplateRef<any> | undefined;\n\n  protected readonly isOpened = computed(() => this.frameService.menuState() === MenuState.OPENED);\n}\n","<div class=\"fs-nav-frame-toolbar-wrapper\">\n  <ng-container *ngTemplateOutlet=\"tbcontent || defaultToolbarTemplate\"></ng-container>\n</div>\n\n<ng-template #defaultToolbarTemplate>\n  <div>\n    <ng-content select=\"fs-nav-frame-toolbar-start\"></ng-content>\n  </div>\n  <div>\n    <ng-content select=\"fs-nav-frame-toolbar-center\"></ng-content>\n  </div>\n  <div>\n    <ng-content select=\"fs-nav-frame-toolbar-end\"></ng-content>\n  </div>\n</ng-template>\n","/**\n * FsNavFrameModule - Barrel Module for Nav Frame Components\n *\n * Import this single module to get all Nav Frame components and directives.\n * Follows Angular Material's module pattern for better DX.\n *\n * @example\n * ```typescript\n * import { FsNavFrameModule } from '@fullstack-devops/ngx-mat-components';\n *\n * @Component({\n *   imports: [FsNavFrameModule]\n * })\n * export class AppComponent {}\n * ```\n */\n\nimport { FsNavFrameComponent } from './fs-nav-frame.component';\nimport { FsNavFrameSidebar } from './components/fs-nav-frame-sidebar';\nimport { FsNavFrameSidebarItemComponent } from './components/fs-nav-frame-sidebar-item/fs-nav-frame-sidebar-item.component';\nimport { FsNavUserProfileComponent } from './fs-nav-user-profile/fs-nav-user-profile.component';\nimport { FsNavUserProfileActionsDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-actions.directive';\nimport { FsNavUserProfileNameDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-name.directive';\nimport { FsNavUserProfileSubNameDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-subname.directive';\nimport { FsNavFrameToolbarComponent } from './nav-frame-toolbar/fs-nav-frame-toolbar.component';\nimport { FsNavFrameToolbarStartDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-start.directive';\nimport { FsNavFrameToolbarCenterDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-center.directive';\nimport { FsNavFrameToolbarEndDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-end.directive';\nimport { FsNavFrameContentDirective } from './directives/fs-nav-frame-content.directive';\n\n/**\n * All Nav Frame related components and directives\n */\nexport const FS_NAV_FRAME_COMPONENTS = [\n  FsNavFrameComponent,\n  FsNavFrameSidebar,\n  FsNavFrameSidebarItemComponent,\n  FsNavUserProfileComponent,\n  FsNavUserProfileActionsDirective,\n  FsNavUserProfileNameDirective,\n  FsNavUserProfileSubNameDirective,\n  FsNavFrameToolbarComponent,\n  FsNavFrameToolbarStartDirective,\n  FsNavFrameToolbarCenterDirective,\n  FsNavFrameToolbarEndDirective,\n  FsNavFrameContentDirective,\n] as const;\n\n/**\n * Convenience array for importing all Nav Frame components\n *\n * Use this in your component's imports array:\n *\n * @example\n * ```typescript\n * @Component({\n *   imports: [FsNavFrameModule]\n * })\n * export class AppComponent {}\n * ```\n */\nexport const FsNavFrameModule = FS_NAV_FRAME_COMPONENTS;\n","/*\n * Public API Surface of ngx-mat-components\n */\n\nexport { FsNavFrameContentDirective } from './directives/fs-nav-frame-content.directive';\nexport { FsNavFrameSidebar } from './components/fs-nav-frame-sidebar';\nexport { FsNavFrameSidebarItemComponent } from './components/fs-nav-frame-sidebar-item/fs-nav-frame-sidebar-item.component';\nexport { FsNavFrameComponent } from './fs-nav-frame.component';\n// Removed: export { FsNavFrameModule } - Using standalone components now\nexport * from './fs-nav-frame.modules';\nexport { FsNavUserProfileActionsDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-actions.directive';\nexport { FsNavUserProfileNameDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-name.directive';\nexport { FsNavUserProfileSubNameDirective } from './fs-nav-user-profile/directives/fs-nav-user-profile-subname.directive';\nexport { FsNavUserProfileComponent } from './fs-nav-user-profile/fs-nav-user-profile.component';\nexport { FsNavFrameToolbarCenterDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-center.directive';\nexport { FsNavFrameToolbarEndDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-end.directive';\nexport { FsNavFrameToolbarStartDirective } from './nav-frame-toolbar/directives/fs-nav-frame-toolbar-start.directive';\nexport { FsNavFrameToolbarComponent } from './nav-frame-toolbar/fs-nav-frame-toolbar.component';\nexport { FsNavFrameService } from './services/fs-nav-frame.service';\n\n// Barrel Module - Import ALL components at once (like Angular Material)\nexport { FsNavFrameModule, FS_NAV_FRAME_COMPONENTS } from './fs-nav-frame.module';\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'fs-check-svg',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'fs-check-svg',\n  },\n  template: `\n    @if (active()) {\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"1\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\">\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <path d=\"m9 12 2 2 4-4\" />\n      </svg>\n    } @else {\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"1\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\">\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      </svg>\n    }\n  `,\n})\nexport class FsCheckSvg {\n  active = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FsThemeColorSchemes } from '../fs-theme-menu';\n\n@Component({\n  selector: 'fs-theme-icon',\n  templateUrl: './fs-theme-icon.html',\n  styleUrls: ['./fs-theme-icon.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsThemeIcon {\n  theme = input<FsThemeColorSchemes>(FsThemeColorSchemes.Auto);\n  readonly FsThemeColorSchemes = FsThemeColorSchemes;\n}\n","<div class=\"theme-icon\">\n  @switch (theme()) { @case (FsThemeColorSchemes.Light) {\n  <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" class=\"light\">\n    <path\n      d=\"M77.87 0C79.05 0 80 .95 80 2.13v75.74c0 1.17-.95 2.13-2.13 2.13H2.13C.96 80 0 79.04 0 77.87V2.13C0 .95.96 0 2.13 0h75.74z\"\n      class=\"fill-background-light\"></path>\n    <path\n      d=\"M54 40c3.32 0 6 2.69 6 6 0 1.2 0-1.2 0 0 0 3.31-2.68 6-6 6H26c-3.31 0-6-2.69-6-6 0-1.2 0 1.2 0 0 0-3.31 2.69-6 6-6h28z\"\n      class=\"fill-primary\"></path>\n    <path d=\"M0 0h80v17.24H0V0z\" class=\"fill-primary\"></path>\n  </svg>\n  } @case (FsThemeColorSchemes.Dark) {\n  <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" class=\"dark\">\n    <path\n      d=\"M77.87 0C79.05 0 80 .95 80 2.13v75.74c0 1.17-.95 2.13-2.13 2.13H2.13C.96 80 0 79.04 0 77.87V2.13C0 .95.96 0 2.13 0h75.74z\"\n      class=\"fill-background-dark\"></path>\n    <path\n      d=\"M54 40c3.32 0 6 2.69 6 6 0 1.2 0-1.2 0 0 0 3.31-2.68 6-6 6H26c-3.31 0-6-2.69-6-6 0-1.2 0 1.2 0 0 0-3.31 2.69-6 6-6h28z\"\n      class=\"fill-primary\"></path>\n    <path d=\"M0 0h80v17.24H0V0z\" class=\"fill-primary\"></path>\n  </svg>\n  } @case (FsThemeColorSchemes.Auto) {\n  <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" class=\"auto\">\n    <path\n      d=\"M77.87 0C79.05 0 80 .95 80 2.13v75.74c0 1.17-.95 2.13-2.13 2.13H2.13C.96 80 0 79.04 0 77.87V2.13C0 .95.96 0 2.13 0h75.74z\"\n      class=\"fill-background-light\"></path>\n    <path\n      d=\"M77.87 0C79.05 0 80 .95 80 2.13v75.74c0 1.17-.95 2.13-2.13 2.13H2.13C.96 80 0 79.04 0 77.87V2.13C0 .95.96 0 2.13 0h75.74z\"\n      transform=\"translate(40, 0) scale(0.5, 1)\"\n      class=\"fill-background-dark\"></path>\n  </svg>\n  } }\n</div>\n","import { ChangeDetectionStrategy, Component, effect, inject, input, OnInit, output, signal } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { FsCheckSvg } from './fs-check-svg';\nimport { FsThemeIcon } from './fs-theme-icon/fs-theme-icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DOCUMENT } from '@angular/common';\n\nexport enum FsThemeColorSchemes {\n  Auto = 'auto',\n  Light = 'light-mode',\n  Dark = 'dark-mode',\n}\n\n@Component({\n  selector: 'fs-theme-menu',\n  imports: [MatMenuModule, MatButtonModule, FsCheckSvg, FsThemeIcon],\n  templateUrl: './fs-theme-menu.html',\n  styleUrls: ['./fs-theme-menu.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsThemeMenu implements OnInit {\n  private readonly document = inject(DOCUMENT);\n  readonly FsThemeColorSchemes = FsThemeColorSchemes;\n\n  localStorageKey = input<string>('fs-selected-theme');\n  theme = input<FsThemeColorSchemes>(FsThemeColorSchemes.Auto);\n  themeChange = output<FsThemeColorSchemes>();\n\n  private readonly currentTheme = signal<FsThemeColorSchemes>(FsThemeColorSchemes.Auto);\n\n  constructor() {\n    // Apply theme changes to DOM and localStorage\n    effect(() => {\n      const themeValue = this.currentTheme();\n      const body = this.document.body;\n\n      body.classList.remove(FsThemeColorSchemes.Light, FsThemeColorSchemes.Dark);\n\n      // Persist only if not auto\n      if (themeValue && themeValue !== FsThemeColorSchemes.Auto) {\n        body.classList.add(themeValue);\n        localStorage.setItem(this.localStorageKey(), themeValue);\n      } else {\n        localStorage.removeItem(this.localStorageKey());\n      }\n\n      this.themeChange.emit(themeValue);\n    });\n  }\n\n  ngOnInit() {\n    this.loadThemeFromStorage();\n  }\n\n  isSelected(requested: FsThemeColorSchemes): boolean {\n    return this.currentTheme() === requested;\n  }\n\n  onColorSchemeChange(value: FsThemeColorSchemes): void {\n    this.currentTheme.set(value);\n  }\n\n  loadThemeFromStorage() {\n    const stored = localStorage.getItem(this.localStorageKey()) as FsThemeColorSchemes;\n    if (stored === FsThemeColorSchemes.Light || stored === FsThemeColorSchemes.Dark) {\n      this.currentTheme.set(stored);\n    } else {\n      this.currentTheme.set(FsThemeColorSchemes.Auto);\n    }\n  }\n}\n","<button mat-icon-button [matMenuTriggerFor]=\"colorSchemeMenu\" aria-label=\"Theme selection\" title=\"Change theme\">\n  <ng-content select=\".icon, i-lucide\"></ng-content>\n</button>\n\n<mat-menu #colorSchemeMenu=\"matMenu\" aria-label=\"Theme options\">\n  <button\n    mat-menu-item\n    role=\"menuitemradio\"\n    class=\"theme-select-button\"\n    aria-label=\"System theme preference\"\n    [attr.aria-checked]=\"isSelected(FsThemeColorSchemes.Auto)\"\n    (click)=\"onColorSchemeChange(FsThemeColorSchemes.Auto)\">\n    <fs-check-svg [active]=\"isSelected(FsThemeColorSchemes.Auto)\"></fs-check-svg>\n    <span>System Preference</span>\n    <fs-theme-icon [theme]=\"FsThemeColorSchemes.Auto\"></fs-theme-icon>\n  </button>\n  <button\n    mat-menu-item\n    role=\"menuitemradio\"\n    class=\"theme-select-button\"\n    aria-label=\"Light theme\"\n    [attr.aria-checked]=\"isSelected(FsThemeColorSchemes.Light)\"\n    (click)=\"onColorSchemeChange(FsThemeColorSchemes.Light)\">\n    <fs-check-svg [active]=\"isSelected(FsThemeColorSchemes.Light)\"></fs-check-svg>\n    <span>Light</span>\n    <fs-theme-icon [theme]=\"FsThemeColorSchemes.Light\"></fs-theme-icon>\n  </button>\n  <button\n    mat-menu-item\n    role=\"menuitemradio\"\n    class=\"theme-select-button\"\n    aria-label=\"Dark theme\"\n    [attr.aria-checked]=\"isSelected(FsThemeColorSchemes.Dark)\"\n    (click)=\"onColorSchemeChange(FsThemeColorSchemes.Dark)\">\n    <fs-check-svg [active]=\"isSelected(FsThemeColorSchemes.Dark)\"></fs-check-svg>\n    <span>Dark</span>\n    <fs-theme-icon [theme]=\"FsThemeColorSchemes.Dark\"></fs-theme-icon>\n  </button>\n</mat-menu>\n","import { FsThemeMenu } from './fs-theme-menu';\nimport { FsThemeIcon } from './fs-theme-icon/fs-theme-icon';\nimport { FsCheckSvg } from './fs-check-svg';\n\n/**\n * Array of all FsThemeMenu components and directives.\n *\n * Use this if you need to import components individually or create\n * a custom subset of components.\n */\nexport const FS_THEME_MENU_COMPONENTS = [\n  FsThemeMenu,\n  FsThemeIcon,\n  FsCheckSvg,\n] as const;\n\n/**\n * Barrel module for FsThemeMenu - Import all theme menu components at once.\n *\n * This follows the Angular Material pattern where a single import gives you\n * all related components for a feature.\n *\n * @example\n * ```typescript\n * import { FsThemeMenuModule } from '@fsdevops/ngx-mat-components/fs-theme-menu';\n *\n * @Component({\n *   imports: [FsThemeMenuModule],\n *   template: `\n *     <fs-theme-menu\n *       [theme]=\"currentTheme()\"\n *       (themeChange)=\"onThemeChange($event)\">\n *     </fs-theme-menu>\n *   `\n * })\n * export class MyComponent {\n *   currentTheme = signal(FsThemeColorSchemes.Auto);\n *   onThemeChange(theme: FsThemeColorSchemes) {\n *     this.currentTheme.set(theme);\n *   }\n * }\n * ```\n *\n * @remarks\n * Instead of importing:\n * - FsThemeMenu\n * - FsThemeIcon\n * - FsCheckSvg\n *\n * You can now import just `FsThemeMenuModule` to get all components.\n *\n * @public\n */\nexport const FsThemeMenuModule = FS_THEME_MENU_COMPONENTS;\n","/*\n * Public API Surface of ngx-mat-components\n */\nexport { FsThemeMenu } from './fs-theme-menu';\nexport { FsThemeColorSchemes } from './fs-theme-menu';\n\n// Barrel Module - Import ALL components at once (like Angular Material)\nexport { FsThemeMenuModule, FS_THEME_MENU_COMPONENTS } from './fs-theme-menu.module';\n","/*\n * Public API Surface of ngx-mat-components\n */\n\nexport * from './fs-calendar/public-api';\nexport * from './fs-nav-frame/public-api';\nexport * from './fs-theme-menu/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.FsNavFrameService","i2","i3"],"mappings":"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"}