{"version":3,"file":"cfc-ds.mjs","sources":["../../../projects/cfc-ds/src/lib/enums/avatar-density.enum.ts","../../../projects/cfc-ds/src/lib/enums/avatar-type.enum.ts","../../../projects/cfc-ds/src/lib/components/avatar/avatar.component.ts","../../../projects/cfc-ds/src/lib/components/avatar/avatar.component.html","../../../projects/cfc-ds/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/cfc-ds/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/cfc-ds/src/lib/enums/button-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/button-density.enum.ts","../../../projects/cfc-ds/src/lib/components/button/button.component.ts","../../../projects/cfc-ds/src/lib/components/button/button.component.html","../../../projects/cfc-ds/src/lib/components/card/components/card-content/card-content.component.ts","../../../projects/cfc-ds/src/lib/components/card/components/card-content/card-content.component.html","../../../projects/cfc-ds/src/lib/components/card/card.component.ts","../../../projects/cfc-ds/src/lib/components/card/card.component.html","../../../projects/cfc-ds/src/lib/components/carousel/carousel.component.ts","../../../projects/cfc-ds/src/lib/components/carousel/carousel.component.html","../../../projects/cfc-ds/src/lib/cfc-ds-root.component.ts","../../../projects/cfc-ds/src/lib/models/components.model.ts","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/components-list/components-list.component.ts","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/components-list/components-list.component.html","../../../projects/cfc-ds/src/lib/services/cookie-bar.service.ts","../../../projects/cfc-ds/src/lib/components/cookie-bar/cookie-bar.component.ts","../../../projects/cfc-ds/src/lib/components/cookie-bar/cookie-bar.component.html","../../../projects/cfc-ds/src/lib/enums/date-time-picker.enum.ts","../../../projects/cfc-ds/src/lib/components/icon/icon.component.ts","../../../projects/cfc-ds/src/lib/components/icon/icon.component.html","../../../projects/cfc-ds/src/lib/components/datetimer-picker/datetimer-picker.component.ts","../../../projects/cfc-ds/src/lib/components/datetimer-picker/datetimer-picker.component.html","../../../projects/cfc-ds/src/lib/enums/divider-mode.enum.ts","../../../projects/cfc-ds/src/lib/enums/divider-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/divider-axis.enum.ts","../../../projects/cfc-ds/src/lib/enums/divider-density.enum.ts","../../../projects/cfc-ds/src/lib/components/divider/divider.component.ts","../../../projects/cfc-ds/src/lib/components/divider/divider.component.html","../../../projects/cfc-ds/src/lib/components/footer/footer.component.ts","../../../projects/cfc-ds/src/lib/components/footer/footer.component.html","../../../projects/cfc-ds/src/lib/enums/header-view-mode.enum.ts","../../../projects/cfc-ds/src/lib/enums/sign-in-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/timer-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/sign-in-mode.enum.ts","../../../projects/cfc-ds/src/lib/enums/sign-in-density.enum.ts","../../../projects/cfc-ds/src/lib/components/sign-in/sign-in.component.ts","../../../projects/cfc-ds/src/lib/components/sign-in/sign-in.component.html","../../../projects/cfc-ds/src/lib/services/timer.service.ts","../../../projects/cfc-ds/src/lib/components/timer/timer.component.ts","../../../projects/cfc-ds/src/lib/components/timer/timer.component.html","../../../projects/cfc-ds/src/lib/components/header/header.component.ts","../../../projects/cfc-ds/src/lib/components/header/header.component.html","../../../projects/cfc-ds/src/lib/enums/input-state.enum.ts","../../../projects/cfc-ds/src/lib/enums/input-density.enum.ts","../../../projects/cfc-ds/src/lib/components/input/input.component.ts","../../../projects/cfc-ds/src/lib/components/input/input.component.html","../../../projects/cfc-ds/src/lib/components/list/list.component.ts","../../../projects/cfc-ds/src/lib/components/list/list.component.html","../../../projects/cfc-ds/src/lib/enums/logo-view-mode.enum.ts","../../../projects/cfc-ds/src/lib/components/logo/logo.component.ts","../../../projects/cfc-ds/src/lib/components/logo/logo.component.html","../../../projects/cfc-ds/src/lib/components/magic-button/magic-button.component.ts","../../../projects/cfc-ds/src/lib/components/magic-button/magic-button.component.html","../../../projects/cfc-ds/src/lib/components/menu/menu.component.ts","../../../projects/cfc-ds/src/lib/components/menu/menu.component.html","../../../projects/cfc-ds/src/lib/enums/message-state.enum.ts","../../../projects/cfc-ds/src/lib/enums/message-type.enum.ts","../../../projects/cfc-ds/src/lib/components/message/message.component.ts","../../../projects/cfc-ds/src/lib/components/message/message.component.html","../../../projects/cfc-ds/src/lib/components/modal/modal.component.ts","../../../projects/cfc-ds/src/lib/components/modal/modal.component.html","../../../projects/cfc-ds/src/lib/components/tabItem/tab-item.component.ts","../../../projects/cfc-ds/src/lib/components/tabItem/tab-item.component.html","../../../projects/cfc-ds/src/lib/components/tabContent/tab-content.component.ts","../../../projects/cfc-ds/src/lib/components/tab/tab.component.ts","../../../projects/cfc-ds/src/lib/components/tab/tab.component.html","../../../projects/cfc-ds/src/lib/components/notification/notification.component.ts","../../../projects/cfc-ds/src/lib/components/notification/notification.component.html","../../../projects/cfc-ds/src/lib/components/notification-panel/notification-panel.component.ts","../../../projects/cfc-ds/src/lib/components/notification-panel/notification-panel.component.html","../../../projects/cfc-ds/src/lib/components/page-content/page-content.component.ts","../../../projects/cfc-ds/src/lib/components/page-content/page-content.component.html","../../../projects/cfc-ds/src/lib/enums/select-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/pagination-type.enum.ts","../../../projects/cfc-ds/src/lib/components/select/select.component.ts","../../../projects/cfc-ds/src/lib/components/select/select.component.html","../../../projects/cfc-ds/src/lib/components/pagination/pagination.component.ts","../../../projects/cfc-ds/src/lib/components/pagination/pagination.component.html","../../../projects/cfc-ds/src/lib/components/radio/radio.component.ts","../../../projects/cfc-ds/src/lib/components/radio/radio.component.html","../../../projects/cfc-ds/src/lib/components/scrim/scrim.component.ts","../../../projects/cfc-ds/src/lib/components/scrim/scrim.component.html","../../../projects/cfc-ds/src/lib/components/skiplink/skiplink.component.ts","../../../projects/cfc-ds/src/lib/components/skiplink/skiplink.component.html","../../../projects/cfc-ds/src/lib/components/slider/slider.component.ts","../../../projects/cfc-ds/src/lib/components/slider/slider.component.html","../../../projects/cfc-ds/src/lib/components/switch/switch.component.ts","../../../projects/cfc-ds/src/lib/components/switch/switch.component.html","../../../projects/cfc-ds/src/lib/enums/illustration-type.enum.ts","../../../projects/cfc-ds/src/lib/components/illustration-state/illustration-state.component.ts","../../../projects/cfc-ds/src/lib/components/illustration-state/illustration-state.component.html","../../../projects/cfc-ds/src/lib/components/table/table.component.ts","../../../projects/cfc-ds/src/lib/components/table/table.component.html","../../../projects/cfc-ds/src/lib/components/tag/tag.component.ts","../../../projects/cfc-ds/src/lib/components/tag/tag.component.html","../../../projects/cfc-ds/src/lib/enums/tooltip-place.enum.ts","../../../projects/cfc-ds/src/lib/enums/checkbox-option-state.enum.ts","../../../projects/cfc-ds/src/lib/enums/checkbox-option-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/loading-density.enum.ts","../../../projects/cfc-ds/src/lib/enums/item-type.enum.ts","../../../projects/cfc-ds/src/lib/components/collapse/collapse.component.ts","../../../projects/cfc-ds/src/lib/components/collapse/collapse.component.html","../../../projects/cfc-ds/src/lib/components/item/item.component.ts","../../../projects/cfc-ds/src/lib/components/item/item.component.html","../../../projects/cfc-ds/src/lib/services/loading.service.ts","../../../projects/cfc-ds/src/lib/components/loading/loading.component.ts","../../../projects/cfc-ds/src/lib/components/loading/loading.component.html","../../../projects/cfc-ds/src/lib/components/textarea/textarea.component.ts","../../../projects/cfc-ds/src/lib/components/textarea/textarea.component.html","../../../projects/cfc-ds/src/lib/components/tooltip/tooltip.component.ts","../../../projects/cfc-ds/src/lib/components/tooltip/tooltip.component.html","../../../projects/cfc-ds/src/lib/components/upload/upload.component.ts","../../../projects/cfc-ds/src/lib/components/upload/upload.component.html","../../../projects/cfc-ds/src/lib/components/wizard/wizardStep/wizard-step.component.ts","../../../projects/cfc-ds/src/lib/components/wizard/wizardStep/wizard-step.component.html","../../../projects/cfc-ds/src/lib/components/wizard/wizard.component.ts","../../../projects/cfc-ds/src/lib/components/wizard/wizard.component.html","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/test-component/test-component.component.ts","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/test-component/test-component.component.html","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/test-page.component.ts","../../../projects/cfc-ds/src/lib/pages/cfc-test-page/test-page.component.html","../../../projects/cfc-ds/src/lib/components/wizard/wizardNavigation/wizard-navigation.component.ts","../../../projects/cfc-ds/src/lib/components/wizard/wizardNavigation/wizard-navigation.component.html","../../../projects/cfc-ds/src/lib/providers/daysjs-date-adapter.ts","../../../projects/cfc-ds/src/lib/directives/controller.directive.ts","../../../projects/cfc-ds/src/lib/components/card/components/card-header/card-header.component.ts","../../../projects/cfc-ds/src/lib/components/card/components/card-header/card-header.component.html","../../../projects/cfc-ds/src/lib/components/card/components/card-footer/card-footer.component.ts","../../../projects/cfc-ds/src/lib/components/card/components/card-footer/card-footer.component.html","../../../projects/cfc-ds/src/lib/directives/full-width.directive.ts","../../../projects/cfc-ds/src/lib/directives/click-outside.directive.ts","../../../projects/cfc-ds/src/lib/components/checkbox/checkbox.component.ts","../../../projects/cfc-ds/src/lib/components/checkbox/checkbox.component.html","../../../projects/cfc-ds/src/lib/components/step/step.component.ts","../../../projects/cfc-ds/src/lib/components/step/step.component.html","../../../projects/cfc-ds/src/lib/cfc-ds.module.ts","../../../projects/cfc-ds/src/lib/enums/menu-type.enum.ts","../../../projects/cfc-ds/src/lib/enums/menu-groupment.enum.ts","../../../projects/cfc-ds/src/public-api.ts","../../../projects/cfc-ds/src/cfc-ds.ts"],"sourcesContent":["export enum AvatarDensity {\r\n  large = \"large\",\r\n  medium = \"medium\",\r\n  small = \"small\"\r\n}\r\n","export enum AvatarType {\r\n  letter = \"letter\",\r\n  icon = \"icon\",\r\n  image = \"image\",\r\n  dropdown = \"dropdown\",\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AvatarDensity } from '../../enums/avatar-density.enum';\r\nimport { AvatarType } from '../../enums/avatar-type.enum';\r\n\r\nexport interface ListItems {\r\n  name: string,\r\n  url: string\r\n}\r\n@Component({\r\n  selector: 'cfc-avatar',\r\n  templateUrl: './avatar.component.html',\r\n  styleUrl: './avatar.component.scss',\r\n})\r\nexport class AvatarComponent {\r\n  @Input() type: AvatarType = AvatarType.icon;\r\n  @Input() name!: string;\r\n  @Input() density: AvatarDensity = AvatarDensity.medium;\r\n  @Input() imageUrl?: string = '';\r\n  @Input() listItems: ListItems[] = [];\r\n\r\n  avatarTypes = AvatarType;\r\n  avatarDensities = AvatarDensity;\r\n\r\n  openDropdown = false;\r\n\r\n  toggleDropdown() {\r\n    this.openDropdown = !this.openDropdown;\r\n  }\r\n}\r\n","<span\r\n  class=\"br-avatar mr-3\"\r\n  [title]=\"name\"\r\n  [class.medium]=\"density === avatarDensities.medium\"\r\n  [class.large]=\"density === avatarDensities.large\"\r\n>\r\n  <span *ngIf=\"type === avatarTypes.icon\" class=\"content\">\r\n    <i class=\"fas fa-user bg-blue-warn-20\" aria-hidden=\"true\"></i>\r\n  </span>\r\n  <span\r\n    *ngIf=\"type === avatarTypes.letter\"\r\n    class=\"content bg-violet-50 text-pure-0\"\r\n  >\r\n    {{ name[0] | uppercase }}\r\n  </span>\r\n  <span *ngIf=\"type === avatarTypes.image\" class=\"content\">\r\n    <img [src]=\"imageUrl\" alt=\"Avatar\" />\r\n  </span>\r\n  <span *ngIf=\"type === avatarTypes.dropdown\" class=\"dropdown\">\r\n    <button class=\"br-sign-in\" type=\"button\" (click)=\"toggleDropdown()\">\r\n      <span class=\"br-avatar\" title=\"Fulano da Silva\"\r\n        ><span class=\"content bg-orange-vivid-30 text-pure-0\">\r\n          {{ name[0] | uppercase }}</span\r\n        ></span\r\n      ><span class=\"ml-2 text-gray-80 text-weight-regular\">{{ name }}</span\r\n      ><i class=\"fas fa-caret-down\" aria-hidden=\"true\"></i>\r\n    </button>\r\n    <div *ngIf=\"openDropdown\" class=\"br-list\">\r\n      <div *ngIf=\"listItems?.length !== 0\">\r\n        <div *ngFor=\"let items of listItems\" class=\"br-item\"><p>{{items.name}}</p></div>\r\n      </div>\r\n    </div>\r\n  </span>\r\n</span>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd, Data } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { BreadcrumbLink } from '../../models/breadcrumb.model';\r\n\r\n@Component({\r\n  selector: 'cfc-breadcrumb',\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class BreadcrumbComponent implements OnInit, OnDestroy {\r\n  /** Lista de breadcrumbs gerados */\r\n  links: BreadcrumbLink[] = [];\r\n\r\n  /** Limite de caracteres para truncamento */\r\n  readonly maxLength = 25;\r\n\r\n  /** Inscrição para monitorar mudanças na rota */\r\n  private routeSubscription?: Subscription;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private activatedRoute: ActivatedRoute\r\n  ) {}\r\n\r\n  /** Inicializa o componente e observa mudanças de rota */\r\n  ngOnInit(): void {\r\n    this.updateBreadcrumbs();\r\n\r\n    this.routeSubscription = this.router.events.pipe(\r\n      filter(event => event instanceof NavigationEnd)\r\n    ).subscribe(() => {\r\n      this.updateBreadcrumbs();\r\n    });\r\n  }\r\n\r\n  /** Atualiza os breadcrumbs com base na rota ativa */\r\n  private updateBreadcrumbs(): void {\r\n    const breadcrumbs = this.buildBreadcrumbs(this.router.routerState.root);\r\n    this.removeLastBreadcrumbUrl(breadcrumbs);\r\n    this.links = breadcrumbs;\r\n  }\r\n\r\n  /**\r\n   * Constrói os breadcrumbs recursivamente com base nas rotas ativadas.\r\n   * @param route Rota ativa.\r\n   * @param breadcrumbs Lista de breadcrumbs acumulada.\r\n   * @returns Lista de BreadcrumbLink atualizada.\r\n   */\r\n  private buildBreadcrumbs(route: ActivatedRoute, breadcrumbs: BreadcrumbLink[] = []): BreadcrumbLink[] {\r\n    route.children.forEach((child) => {\r\n      const routeSegment = this.getRouteURL(child);\r\n      const label = this.getBreadcrumbLabel(child.snapshot.data);\r\n      const fullPath = this.buildFullPath(routeSegment, breadcrumbs);\r\n\r\n      if (label && !this.isDuplicateBreadcrumb(breadcrumbs, label)) {\r\n        const truncated = this.shouldTruncate(label) ? this.truncateText(label) : label;\r\n        \r\n        const breadcrumb: BreadcrumbLink = { \r\n          label: truncated, \r\n          url: fullPath, \r\n          target: '_self',\r\n        };\r\n        \r\n        // Adicionar tooltip apenas se o texto foi truncado\r\n        if (truncated !== label) {\r\n          breadcrumb.tooltipText = label;\r\n          breadcrumb.tooltipPlace = 'top';\r\n          breadcrumb.tooltipType = 'info';\r\n        }\r\n        \r\n        breadcrumbs.push(breadcrumb);\r\n      }\r\n\r\n      this.buildBreadcrumbs(child, breadcrumbs);\r\n    });\r\n\r\n    return breadcrumbs;\r\n  }\r\n\r\n  /**\r\n   * Verifica se o texto deve ser truncado\r\n   * @param text Texto para verificar\r\n   * @returns true se o texto deve ser truncado\r\n   */\r\n  shouldTruncate(text: string): boolean {\r\n    return text.length > this.maxLength;\r\n  }\r\n\r\n  /**\r\n   * Trunca o texto para o tamanho máximo definido\r\n   * @param text Texto para truncar\r\n   * @returns Texto truncado\r\n   */\r\n  truncateText(text: string): string {\r\n    return text.substring(0, this.maxLength - 3) + '...';\r\n  }\r\n\r\n  /**\r\n   * Obtém o texto original para exibição no tooltip\r\n   * @param link Item do breadcrumb\r\n   * @returns Texto original ou undefined se não houver tooltip\r\n   */\r\n  getOriginalText(link: BreadcrumbLink): string | undefined {\r\n    return link.tooltipText;\r\n  }\r\n\r\n  /**\r\n   * Obtém o segmento da URL da rota atual.\r\n   * @param route Rota atual.\r\n   * @returns Segmento da URL ou string vazia.\r\n   */\r\n  private getRouteURL(route: ActivatedRoute): string {\r\n    return route.snapshot.url.length > 0\r\n      ? route.snapshot.url.map(segment => segment.path).join('/')\r\n      : '';\r\n  }\r\n\r\n  /**\r\n   * Constrói o caminho completo concatenando segmentos anteriores.\r\n   * @param routeSegment Segmento atual da rota.\r\n   * @param breadcrumbs Lista de breadcrumbs acumulada.\r\n   * @returns Caminho completo da URL.\r\n   */\r\n  private buildFullPath(routeSegment: string, breadcrumbs: BreadcrumbLink[]): string {\r\n    if (!routeSegment) return '';\r\n    const previousPath = breadcrumbs.length > 0 ? breadcrumbs[breadcrumbs.length - 1].url : '';\r\n    return previousPath ? `${previousPath}/${routeSegment}` : `/${routeSegment}`;\r\n  }\r\n\r\n  /**\r\n   * Obtém o rótulo do breadcrumb a partir dos dados da rota.\r\n   * @param data Dados da rota.\r\n   * @returns Rótulo do breadcrumb ou null.\r\n   */\r\n  private getBreadcrumbLabel(data: Data): string | null {\r\n    const label = data['breadcrumb'];\r\n    return label && typeof label === 'string' && label.trim() ? label.trim() : null;\r\n  }\r\n\r\n  /**\r\n   * Remove a URL do último breadcrumb para evitar que seja clicável.\r\n   * @param breadcrumbs Lista de breadcrumbs.\r\n   */\r\n  private removeLastBreadcrumbUrl(breadcrumbs: BreadcrumbLink[]): void {\r\n    if (breadcrumbs.length > 0) {\r\n      breadcrumbs[breadcrumbs.length - 1].url = undefined;\r\n      breadcrumbs[breadcrumbs.length - 1].active = true;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Verifica se um breadcrumb já existe na lista para evitar duplicatas.\r\n   * @param breadcrumbs Lista de breadcrumbs acumulada.\r\n   * @param label Nome do breadcrumb a verificar.\r\n   * @returns Verdadeiro se o breadcrumb já existir, falso caso contrário.\r\n   */\r\n  private isDuplicateBreadcrumb(breadcrumbs: BreadcrumbLink[], label: string): boolean {\r\n    return breadcrumbs.some(bc => bc.tooltipText === label || bc.label === label);\r\n  }\r\n\r\n  /** Cancela a inscrição ao destruir o componente */\r\n  ngOnDestroy(): void {\r\n    this.routeSubscription?.unsubscribe();\r\n  }\r\n}","<nav\r\n  class=\"br-breadcrumb\"\r\n  aria-label=\"Breadcrumbs\">\r\n  <ul\r\n    class=\"crumb-list\"\r\n    style=\"padding-left: 0;\"\r\n    role=\"list\">\r\n    <li\r\n      class=\"crumb\">\r\n      <a\r\n        class=\"br-button circle\"\r\n        href=\"/\"\r\n        target=\"_self\">\r\n        <i class=\"fas fa-home\"></i>\r\n      </a>\r\n    </li>\r\n\r\n    <li\r\n      class=\"crumb\"\r\n      *ngFor=\"let link of links; let last = last\">\r\n      <i\r\n        class=\"icon fas fa-chevron-right\">\r\n      </i>\r\n\r\n      <a\r\n        *ngIf=\"!last\"\r\n        [href]=\"link.url\"\r\n        [target]=\"link.target\"\r\n        [title]=\"link.tooltipText || ''\"\r\n        [attr.data-tooltip]=\"link.tooltipText || null\"\r\n        [attr.data-tooltip-place]=\"link.tooltipPlace || null\"\r\n        [attr.data-tooltip-type]=\"link.tooltipType || null\"\r\n        [attr.data-tooltip-timer]=\"link.tooltipTimer || null\">\r\n        <span>\r\n          {{ link.label | titlecase }}\r\n        </span>\r\n      </a>\r\n\r\n      <span\r\n        *ngIf=\"last\"\r\n        tabindex=\"0\"\r\n        aria-current=\"page\"\r\n        [title]=\"link.tooltipText || ''\"\r\n        [attr.data-tooltip]=\"link.tooltipText || null\"\r\n        [attr.data-tooltip-place]=\"link.tooltipPlace || null\"\r\n        [attr.data-tooltip-type]=\"link.tooltipType || null\"\r\n        [attr.data-tooltip-timer]=\"link.tooltipTimer || null\">\r\n        {{ link.label | titlecase }}\r\n      </span>\r\n\r\n    </li>\r\n  </ul>\r\n</nav>","export enum ButtonType {\r\n  primary = \"primary\",\r\n  secondary = \"secondary\",\r\n  tertiary = \"tertiary\",\r\n  danger = 'danger'\r\n}\r\n","export enum ButtonDensity {\r\n  large = \"large\",\r\n  middle = \"middle\",\r\n  small = \"small\",\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { ButtonType } from '../../enums/button-type.enum';\r\nimport { ButtonDensity } from '../../enums/button-density.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-button',\r\n  templateUrl: './button.component.html',\r\n  styleUrl: './button.component.scss'\r\n})\r\nexport class ButtonComponent implements OnChanges {\r\n\r\n  @Input() label = 'button';\r\n  @Input() type: ButtonType = ButtonType.primary;\r\n  @Input() submit = false;\r\n  @Input() circle = false;\r\n  @Input() density: ButtonDensity = ButtonDensity.middle;\r\n  @Input() disabled = false;\r\n  @Input() block = false;\r\n  @Input() icon = '';\r\n  @Input() active = false ;\r\n  @Input() inverted = false;\r\n  @Input() loading = false;\r\n\r\n  @Output() onClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  readonly buttonTypes: typeof ButtonType = ButtonType;\r\n  readonly buttonDensity: typeof ButtonDensity = ButtonDensity;\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef\r\n  ) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n      if (changes['type']) {\r\n        this.cdr.detectChanges();\r\n      }\r\n  }\r\n\r\n}\r\n","<button\r\n  class=\"br-button\"\r\n  [ngClass]=\"{\r\n    'primary': type === buttonTypes.primary,\r\n    'secondary': type === buttonTypes.secondary,\r\n    'tertiary': type === buttonTypes.tertiary,\r\n    'danger': type === buttonTypes.danger,\r\n    'circle': circle,\r\n    'block': block,\r\n    'loading': loading,\r\n    'active': active,\r\n    'dark-mode': inverted,\r\n    'small': density === buttonDensity.small,\r\n    'lager': density === buttonDensity.large,\r\n        'middle': density === buttonDensity.middle,\r\n  }\"\r\n  [disabled]=\"disabled\"\r\n  [attr.aria-label]=\"icon ? label : null\"\r\n  [type]=\"submit ? 'submit' : 'button'\"\r\n  fxLayoutGap=\"0.3rem\"\r\n  (click)=\"onClick.emit()\"\r\n>\r\n  <i *ngIf=\"icon\" [class]=\"'fas fa-' + icon\" aria-hidden=\"true\"></i>\r\n  <span *ngIf=\"!circle\">\r\n    {{ label }}\r\n  </span>\r\n</button>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-card-content',\r\n  templateUrl: './card-content.component.html',\r\n  styleUrl: './card-content.component.scss'\r\n})\r\nexport class CardContentComponent {\r\n\r\n}\r\n","<div class=\"card-content\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-card',\r\n  templateUrl: './card.component.html',\r\n  styleUrl: './card.component.scss'\r\n})\r\nexport class CardComponent {\r\n\r\n  @Input() hover = false;\r\n  @Input() disabled = false;\r\n  @Input() hFixed = false\r\n\r\n}\r\n","  <div class=\"br-card\"\r\n    [class.hover]=\"hover\"\r\n    [class.disabled]=\"disabled\"\r\n    [class.h-fixed]=\"hFixed\">\r\n    <ng-content select=\"[cfc-card-header]\"></ng-content>\r\n    <cfc-card-content>\r\n      <ng-content select=\"[cfc-card-content]\">\r\n\r\n      </ng-content>\r\n    </cfc-card-content>\r\n    <ng-content select=\"[cfc-card-footer]\"></ng-content>\r\n  </div>\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n  AfterViewInit\r\n} from '@angular/core';\r\nimport { CarouselItem } from '../../models/carousel-item.model';\r\nimport { fromEvent, interval, Subscription } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { CarouselConfig } from '../../models/carousel-config.model';\r\n\r\n@Component({\r\n  selector: 'cfc-carousel',\r\n  templateUrl: './carousel.component.html',\r\n  styleUrls: ['./carousel.component.scss']\r\n})\r\nexport class CarouselComponent implements OnInit, OnDestroy, AfterViewInit {\r\n  @Input() items: CarouselItem[] = [];\r\n  @Input() config: CarouselConfig = {\r\n    loop: false,\r\n    autoPlay: false,\r\n    autoPlayInterval: 5000,\r\n    showNavigationButtons: true,\r\n    showPlayButtons: false,\r\n    showIndicator: true,\r\n    navigationButtonsPosition: 'outside', // 'inside' ou 'outside'\r\n    indicatorPosition: 'inside',         // 'inside' ou 'outside'\r\n    indicatorType: 'simple',\r\n    itemsPerPage: 1,\r\n    navigationType: 'page',\r\n    transitionDuration: 300,\r\n    transitionType: 'slide',\r\n    enableTouch: true\r\n  };\r\n\r\n  @Output() pageChange = new EventEmitter<number>();\r\n  @Output() itemClick = new EventEmitter<CarouselItem>();\r\n\r\n  @ViewChild('carouselStage') carouselStage?: ElementRef;\r\n  @ViewChild('carouselContent') carouselContent?: ElementRef;\r\n  @ContentChild(TemplateRef) contentTemplate?: TemplateRef<any>;\r\n\r\n  currentPageIndex = 0;\r\n  totalPages = 0;\r\n  isPlaying = false;\r\n  isPaused = false;\r\n  isHovering = false;\r\n  isDragging = false;\r\n  dragStartX = 0;\r\n  dragCurrentX = 0;\r\n  initialTransform = 0;\r\n  currentTransform = 0;\r\n  loadedImages: Set<string> = new Set();\r\n  adjacentImagesLoaded = false;\r\n\r\n  private autoPlaySubscription?: Subscription;\r\n  private touchStartX = 0;\r\n  private touchEndX = 0;\r\n  private touchStartY = 0;\r\n  private touchStartTime = 0;\r\n  private swipeSubscriptions: Subscription[] = [];\r\n  private mousedownSubscription?: Subscription;\r\n  private mousemoveSubscription?: Subscription;\r\n  private mouseupSubscription?: Subscription;\r\n  private mouseleaveSubscription?: Subscription;\r\n\r\n  get currentPage(): number {\r\n    return this.currentPageIndex + 1;\r\n  }\r\n\r\n  get pages(): number[] {\r\n    return Array.from({ length: this.totalPages }, (_, i) => i);\r\n  }\r\n\r\n  get blocks(): number[] {\r\n    const blocksCount = Math.ceil(this.items.length / (this.config.itemsPerPage ?? 1));\r\n    return Array.from({ length: blocksCount }, (_, i) => i);\r\n  }\r\n\r\n  ngOnInit() {\r\n    // Verificar e ajustar config para indicador textual\r\n    if (this.config.indicatorType === 'text') {\r\n      this.config.indicatorPosition = 'outside';\r\n    }\r\n\r\n    this.calculateTotalPages();\r\n    this.initializeCarousel();\r\n    \r\n    // Pré-carregar a primeira imagem e as adjacentes\r\n    if (this.items.length > 0) {\r\n      this.preloadAdjacentImages(0);\r\n    }\r\n\r\n    if (this.config.autoPlay) {\r\n      this.play();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.config.enableTouch) {\r\n      this.setupTouchEvents();\r\n      this.setupMouseEvents();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.stopAutoPlay();\r\n    this.cleanupTouchEvents();\r\n    this.cleanupMouseEvents();\r\n  }\r\n\r\n  onMouseEnter() {\r\n    this.isHovering = true;\r\n    if (this.config.autoPlay && this.isPlaying) {\r\n      this.pauseAutoPlay();\r\n    }\r\n  }\r\n\r\n  onMouseLeave() {\r\n    this.isHovering = false;\r\n    if (this.config.autoPlay && this.isPaused) {\r\n      this.resumeAutoPlay();\r\n    }\r\n  }\r\n\r\n  private calculateTotalPages(): void {\r\n    if (this.config.navigationType === 'block') {\r\n      this.totalPages = Math.ceil(this.items.length / (this.config.itemsPerPage ?? 1));\r\n    } else {\r\n      this.totalPages = this.items.length;\r\n    }\r\n  }\r\n\r\n  private initializeCarousel(): void {\r\n    if (this.items.length > 0) {\r\n      this.items.forEach((item, index) => {\r\n        item.active = index === 0;\r\n      });\r\n    }\r\n  }\r\n\r\n  goToPage(pageIndex: number): void {\r\n    if (pageIndex < 0 || pageIndex >= this.totalPages) {\r\n      if (this.config.loop) {\r\n        pageIndex = pageIndex < 0 ? this.totalPages - 1 : 0;\r\n      } else {\r\n        return;\r\n      }\r\n    }\r\n    \r\n    // Pré-carregar imagens adjacentes antes da transição\r\n    this.preloadAdjacentImages(pageIndex);\r\n    \r\n    this.currentPageIndex = pageIndex;\r\n\r\n    // Atualizar estado de ativo para os itens\r\n    if (this.config.navigationType === 'block') {\r\n      const startIndex = this.currentPageIndex * (this.config.itemsPerPage ?? 1);\r\n      this.items.forEach((item, index) => {\r\n        item.active = index >= startIndex && index < startIndex + (this.config.itemsPerPage ?? 1);\r\n      });\r\n    } else {\r\n      this.items.forEach((item, index) => {\r\n        item.active = index === this.currentPageIndex;\r\n      });\r\n    }\r\n\r\n    this.updateContentTransform(this.currentPageIndex);\r\n    this.pageChange.emit(this.currentPageIndex);\r\n  }\r\n\r\n  // Método para pré-carregar imagens adjacentes\r\n  private preloadAdjacentImages(currentIndex: number): void {\r\n    // Determinar quais imagens devem ser pré-carregadas (atual, anterior e próxima)\r\n    const indicesToPreload = [\r\n      currentIndex,\r\n      Math.max(0, currentIndex - 1),\r\n      Math.min(this.totalPages - 1, currentIndex + 1)\r\n    ];\r\n    \r\n    // Filtrar índices únicos\r\n    const uniqueIndices = [...new Set(indicesToPreload)];\r\n    \r\n    // Pré-carregar cada imagem\r\n    uniqueIndices.forEach(index => {\r\n      if (index >= 0 && index < this.items.length) {\r\n        const item = this.items[index];\r\n        if (item.imageUrl && !this.loadedImages.has(item.imageUrl)) {\r\n          this.preloadImage(item.imageUrl);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  // Método para pré-carregar uma única imagem\r\n  private preloadImage(imageUrl: string): void {\r\n    if (!imageUrl || this.loadedImages.has(imageUrl)) return;\r\n    \r\n    const img = new Image();\r\n    img.onload = () => {\r\n      this.loadedImages.add(imageUrl);\r\n    };\r\n    img.src = imageUrl;\r\n  }\r\n\r\n  // Método para aplicar a transformação ao conteúdo\r\n  private updateContentTransform(pageIndex: number, animationOverride: string = ''): void {\r\n    if (!this.carouselContent || !this.carouselContent.nativeElement) return;\r\n    \r\n    const element = this.carouselContent.nativeElement;\r\n    const translateX = -pageIndex * 100;\r\n    \r\n    // Aplicar a transição antes de mudar a transformação\r\n    element.style.transition = animationOverride || `transform ${this.config.transitionDuration}ms ease-in-out`;\r\n    \r\n    // Pequeno delay antes de aplicar a transformação para garantir que a transição seja registrada\r\n    setTimeout(() => {\r\n      element.style.transform = `translateX(${translateX}%)`;\r\n      this.currentTransform = translateX;\r\n    }, 10);\r\n  }\r\n\r\n  next(): void {\r\n    this.goToPage(this.currentPageIndex + 1);\r\n  }\r\n\r\n  prev(): void {\r\n    this.goToPage(this.currentPageIndex - 1);\r\n  }\r\n\r\n  play(): void {\r\n    if (this.isPlaying) {\r\n      return;\r\n    }\r\n\r\n    this.isPlaying = true;\r\n    this.isPaused = false;\r\n\r\n    this.autoPlaySubscription = interval(this.config.autoPlayInterval)\r\n      .pipe(\r\n        tap(() => {\r\n          if (!this.isHovering && !this.isDragging) {\r\n            if (this.currentPageIndex === this.totalPages - 1 && !this.config.loop) {\r\n              this.stopAutoPlay();\r\n            } else {\r\n              this.next();\r\n            }\r\n          }\r\n        })\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  pauseAutoPlay(): void {\r\n    this.isPaused = true;\r\n    this.stopAutoPlay();\r\n  }\r\n\r\n  resumeAutoPlay(): void {\r\n    if (this.isPaused) {\r\n      this.play();\r\n    }\r\n  }\r\n\r\n  pause(): void {\r\n    this.pauseAutoPlay();\r\n  }\r\n\r\n  togglePlay(): void {\r\n    if (this.isPlaying) {\r\n      this.pause();\r\n    } else {\r\n      this.play();\r\n    }\r\n  }\r\n\r\n  private stopAutoPlay(): void {\r\n    if (this.autoPlaySubscription) {\r\n      this.autoPlaySubscription.unsubscribe();\r\n      this.autoPlaySubscription = undefined;\r\n      this.isPlaying = false;\r\n    }\r\n  }\r\n\r\n  private setupTouchEvents(): void {\r\n    if (!this.carouselStage || !this.carouselStage.nativeElement) {\r\n      return;\r\n    }\r\n\r\n    const element = this.carouselStage.nativeElement;\r\n\r\n    // Usando eventos nativos para melhor desempenho\r\n    element.addEventListener('touchstart', this.handleTouchStart.bind(this), { passive: true });\r\n    element.addEventListener('touchmove', this.handleTouchMove.bind(this), { passive: false });\r\n    element.addEventListener('touchend', this.handleTouchEnd.bind(this), { passive: true });\r\n  }\r\n\r\n  private handleTouchStart(event: TouchEvent): void {\r\n    if (this.isPlaying) {\r\n      this.pauseAutoPlay();\r\n    }\r\n    \r\n    this.touchStartX = event.touches[0].clientX;\r\n    this.touchStartY = event.touches[0].clientY;\r\n    this.touchStartTime = Date.now();\r\n    this.isDragging = true;\r\n    \r\n    if (this.carouselContent && this.carouselContent.nativeElement) {\r\n      const style = window.getComputedStyle(this.carouselContent.nativeElement);\r\n      const matrix = new WebKitCSSMatrix(style.transform);\r\n      this.initialTransform = matrix.m41 / this.carouselContent.nativeElement.offsetWidth * 100;\r\n      this.currentTransform = this.initialTransform;\r\n      \r\n      // Remover transição para movimento suave durante o arrasto\r\n      this.carouselContent.nativeElement.style.transition = 'none';\r\n    }\r\n  }\r\n\r\n  private handleTouchMove(event: TouchEvent): void {\r\n    if (!this.isDragging) return;\r\n    \r\n    const touch = event.touches[0];\r\n    const deltaX = touch.clientX - this.touchStartX;\r\n    const deltaY = touch.clientY - this.touchStartY;\r\n    \r\n    // Verificar se o deslizamento é horizontal antes de prevenir comportamento padrão\r\n    if (Math.abs(deltaX) > Math.abs(deltaY)) {\r\n      event.preventDefault();\r\n    }\r\n    \r\n    if (this.carouselContent && this.carouselContent.nativeElement) {\r\n      const containerWidth = this.carouselContent.nativeElement.offsetWidth;\r\n      const movePercentage = (deltaX / containerWidth) * 100;\r\n      \r\n      // Adicionar resistência nas bordas quando não estiver em loop\r\n      let newTransform = this.initialTransform + movePercentage;\r\n      \r\n      if (!this.config.loop) {\r\n        if (this.currentPageIndex === 0 && movePercentage > 0) {\r\n          newTransform = this.initialTransform + (movePercentage / 3); // Resistência no início\r\n        } else if (this.currentPageIndex === this.totalPages - 1 && movePercentage < 0) {\r\n          newTransform = this.initialTransform + (movePercentage / 3); // Resistência no final\r\n        }\r\n      }\r\n      \r\n      this.carouselContent.nativeElement.style.transform = `translateX(${newTransform}%)`;\r\n      this.currentTransform = newTransform;\r\n    }\r\n  }\r\n\r\n  private handleTouchEnd(event: TouchEvent): void {\r\n    if (!this.isDragging) return;\r\n    \r\n    const touchEndTime = Date.now();\r\n    const touchDuration = touchEndTime - this.touchStartTime;\r\n    this.touchEndX = event.changedTouches[0].clientX;\r\n    const deltaX = this.touchEndX - this.touchStartX;\r\n    \r\n    // Calcular velocidade do movimento para determinar swipe\r\n    const velocity = Math.abs(deltaX) / touchDuration;\r\n    \r\n    // Determinar o comportamento com base no movimento e velocidade\r\n    let newPage = this.currentPageIndex;\r\n    \r\n    if (Math.abs(deltaX) > 100 || velocity > 0.5) {\r\n      // Movimento significativo ou swipe rápido\r\n      newPage = deltaX > 0 ? this.currentPageIndex - 1 : this.currentPageIndex + 1;\r\n    } else {\r\n      // Baseado na porcentagem de movimento\r\n      const movedPercentage = Math.abs(deltaX) / (this.carouselStage?.nativeElement.offsetWidth || 1);\r\n      if (movedPercentage > 0.2) {\r\n        newPage = deltaX > 0 ? this.currentPageIndex - 1 : this.currentPageIndex + 1;\r\n      }\r\n    }\r\n    \r\n    this.isDragging = false;\r\n    \r\n    // Voltar para o slide atual ou ir para o próximo/anterior\r\n    if (this.carouselContent && this.carouselContent.nativeElement) {\r\n      this.carouselContent.nativeElement.style.transition = `transform ${this.config.transitionDuration}ms var(--animation-ease-in-out)`;\r\n      this.goToPage(newPage);\r\n    }\r\n    \r\n    // Restaurar autoplay se necessário\r\n    if (this.isPaused) {\r\n      this.resumeAutoPlay();\r\n    }\r\n  }\r\n\r\n  // Adicionar suporte a eventos de mouse para desktop\r\n  private setupMouseEvents(): void {\r\n    if (!this.carouselStage || !this.carouselStage.nativeElement) return;\r\n    \r\n    const element = this.carouselStage.nativeElement;\r\n    \r\n    this.mousedownSubscription = fromEvent<MouseEvent>(element, 'mousedown')\r\n      .subscribe(this.handleMouseDown.bind(this));\r\n      \r\n    this.mousemoveSubscription = fromEvent<MouseEvent>(document, 'mousemove')\r\n      .subscribe(this.handleMouseMove.bind(this));\r\n      \r\n    this.mouseupSubscription = fromEvent<MouseEvent>(document, 'mouseup')\r\n      .subscribe(this.handleMouseUp.bind(this));\r\n      \r\n    this.mouseleaveSubscription = fromEvent<MouseEvent>(document, 'mouseleave')\r\n      .subscribe(this.handleMouseUp.bind(this));\r\n  }\r\n  \r\n  private handleMouseDown(event: MouseEvent): void {\r\n    // Só capturar cliques com botão esquerdo\r\n    if (event.button !== 0) return;\r\n    \r\n    // Prevenir comportamento padrão (seleção de texto)\r\n    event.preventDefault();\r\n    \r\n    if (this.isPlaying) {\r\n      this.pauseAutoPlay();\r\n    }\r\n    \r\n    this.dragStartX = event.clientX;\r\n    this.isDragging = true;\r\n    \r\n    if (this.carouselContent && this.carouselContent.nativeElement) {\r\n      const style = window.getComputedStyle(this.carouselContent.nativeElement);\r\n      const matrix = new WebKitCSSMatrix(style.transform);\r\n      this.initialTransform = matrix.m41 / this.carouselContent.nativeElement.offsetWidth * 100;\r\n      this.currentTransform = this.initialTransform;\r\n      \r\n      this.carouselContent.nativeElement.style.transition = 'none';\r\n      // Cursor de arrasto\r\n      document.body.style.cursor = 'grabbing';\r\n    }\r\n  }\r\n  \r\n  private handleMouseMove(event: MouseEvent): void {\r\n    if (!this.isDragging) return;\r\n    \r\n    this.dragCurrentX = event.clientX;\r\n    const deltaX = this.dragCurrentX - this.dragStartX;\r\n    \r\n    if (this.carouselContent && this.carouselContent.nativeElement) {\r\n      const containerWidth = this.carouselContent.nativeElement.offsetWidth;\r\n      const movePercentage = (deltaX / containerWidth) * 100;\r\n      \r\n      // Adicionar resistência nas bordas quando não estiver em loop\r\n      let newTransform = this.initialTransform + movePercentage;\r\n      \r\n      if (!this.config.loop) {\r\n        if (this.currentPageIndex === 0 && movePercentage > 0) {\r\n          newTransform = this.initialTransform + (movePercentage / 3);\r\n        } else if (this.currentPageIndex === this.totalPages - 1 && movePercentage < 0) {\r\n          newTransform = this.initialTransform + (movePercentage / 3);\r\n        }\r\n      }\r\n      \r\n      this.carouselContent.nativeElement.style.transform = `translateX(${newTransform}%)`;\r\n      this.currentTransform = newTransform;\r\n    }\r\n  }\r\n  \r\n  private handleMouseUp(event: MouseEvent): void {\r\n    if (!this.isDragging) return;\r\n    \r\n    document.body.style.cursor = '';\r\n    this.isDragging = false;\r\n    \r\n    if (this.dragStartX !== 0 && this.dragCurrentX !== 0) {\r\n      const deltaX = this.dragCurrentX - this.dragStartX;\r\n      let newPage = this.currentPageIndex;\r\n      \r\n      // Determinar se deve mudar de slide com base na distância do movimento\r\n      if (Math.abs(deltaX) > 100) {\r\n        newPage = deltaX > 0 ? this.currentPageIndex - 1 : this.currentPageIndex + 1;\r\n      } else {\r\n        const movedPercentage = Math.abs(deltaX) / (this.carouselStage?.nativeElement.offsetWidth || 1);\r\n        if (movedPercentage > 0.2) {\r\n          newPage = deltaX > 0 ? this.currentPageIndex - 1 : this.currentPageIndex + 1;\r\n        }\r\n      }\r\n      \r\n      if (this.carouselContent && this.carouselContent.nativeElement) {\r\n        this.carouselContent.nativeElement.style.transition = `transform ${this.config.transitionDuration}ms var(--animation-ease-in-out)`;\r\n        this.goToPage(newPage);\r\n      }\r\n    }\r\n    \r\n    this.dragStartX = 0;\r\n    this.dragCurrentX = 0;\r\n    \r\n    // Restaurar autoplay se necessário\r\n    if (this.isPaused) {\r\n      this.resumeAutoPlay();\r\n    }\r\n  }\r\n\r\n  private cleanupTouchEvents(): void {\r\n    if (this.carouselStage && this.carouselStage.nativeElement) {\r\n      const element = this.carouselStage.nativeElement;\r\n      element.removeEventListener('touchstart', this.handleTouchStart.bind(this));\r\n      element.removeEventListener('touchmove', this.handleTouchMove.bind(this));\r\n      element.removeEventListener('touchend', this.handleTouchEnd.bind(this));\r\n    }\r\n    \r\n    this.swipeSubscriptions.forEach(sub => sub.unsubscribe());\r\n    this.swipeSubscriptions = [];\r\n  }\r\n\r\n  private cleanupMouseEvents(): void {\r\n    this.mousedownSubscription?.unsubscribe();\r\n    this.mousemoveSubscription?.unsubscribe();\r\n    this.mouseupSubscription?.unsubscribe();\r\n    this.mouseleaveSubscription?.unsubscribe();\r\n  }\r\n\r\n  isFirstPage(): boolean {\r\n    return this.currentPageIndex === 0;\r\n  }\r\n\r\n  isLastPage(): boolean {\r\n    return this.currentPageIndex === this.totalPages - 1;\r\n  }\r\n\r\n  shouldDisableNavButton(direction: 'prev' | 'next'): boolean {\r\n    if (this.config.loop) {\r\n      return false;\r\n    }\r\n\r\n    return direction === 'prev' ? this.isFirstPage() : this.isLastPage();\r\n  }\r\n\r\n  trackByFn(index: number, item: CarouselItem): string | number {\r\n    return item.id || index;\r\n  }\r\n}","<div class=\"carousel-wrapper\">\r\n  <!-- Botão de navegação (anterior) outside -->\r\n  <button *ngIf=\"config.showNavigationButtons && config.navigationButtonsPosition === 'outside'\"\r\n          class=\"carousel-nav-button carousel-prev-button outside\"\r\n          [disabled]=\"shouldDisableNavButton('prev')\"\r\n          (click)=\"prev()\">\r\n    <i class=\"fas fa-angle-left\"></i>\r\n  </button>\r\n  <div class=\"carousel-container\"\r\n       (mouseenter)=\"onMouseEnter()\"\r\n       (mouseleave)=\"onMouseLeave()\">\r\n    <!-- Botão de navegação (anterior) inside -->\r\n    <button *ngIf=\"config.showNavigationButtons && config.navigationButtonsPosition === 'inside'\"\r\n            class=\"carousel-nav-button carousel-prev-button inside\"\r\n            [disabled]=\"shouldDisableNavButton('prev')\"\r\n            (click)=\"prev()\">\r\n      <i class=\"fas fa-angle-left\"></i>\r\n    </button>\r\n    <!-- Palco (área de conteúdo) -->\r\n    <div class=\"carousel-stage\" #carouselStage\r\n         [class.is-dragging]=\"isDragging\">\r\n      <!-- Modificação no carousel-content -->\r\n      <div class=\"carousel-content\" #carouselContent>\r\n        <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackByFn\">\r\n          <div class=\"carousel-item\"\r\n              [class.active]=\"item.active\"\r\n              [class.dragging]=\"isDragging\"\r\n              (click)=\"!isDragging && itemClick.emit(item)\">\r\n            <!-- Renderização de imagem com tratamento para pré-carregamento -->\r\n            <div *ngIf=\"item.imageUrl\" class=\"carousel-image-container\">\r\n              <!-- Modificado para carregar imagem diretamente, mas usar opacity para o efeito de fade -->\r\n              <img \r\n                [src]=\"item.imageUrl\" \r\n                [alt]=\"item.imageAlt || item.title || ''\" \r\n                class=\"carousel-image\"\r\n                [ngClass]=\"{'lazyloaded': loadedImages.has(item.imageUrl)}\"\r\n                (load)=\"loadedImages.add(item.imageUrl)\">\r\n              \r\n              <!-- Imagem de placeholder enquanto carrega -->\r\n              <div *ngIf=\"!loadedImages.has(item.imageUrl)\" class=\"carousel-image-placeholder\"></div>\r\n            </div>\r\n\r\n            <!-- Resto do conteúdo permanece igual -->\r\n            <ng-container *ngIf=\"!item.imageUrl || contentTemplate\">\r\n              <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n            </ng-container>\r\n          </div>\r\n        </ng-container>\r\n      </div>\r\n    </div>\r\n    \r\n    <!-- Botão de navegação (próximo) inside -->\r\n    <button *ngIf=\"config.showNavigationButtons && config.navigationButtonsPosition === 'inside'\"\r\n            class=\"carousel-nav-button carousel-next-button inside\"\r\n            [disabled]=\"shouldDisableNavButton('next')\"\r\n            (click)=\"next()\">\r\n      <i class=\"fas fa-angle-right\"></i>\r\n    </button>\r\n\r\n    <!-- Botão de reprodução (interno ao palco) -->\r\n    <div *ngIf=\"config.showPlayButtons && config.navigationButtonsPosition === 'inside'\"\r\n          class=\"carousel-play-button-container\">\r\n      <button class=\"carousel-play-button\" (click)=\"togglePlay()\">\r\n        <i [class]=\"isPlaying ? 'fas fa-pause' : 'fas fa-play'\"></i>\r\n      </button>\r\n    </div>\r\n\r\n    <!-- Indicador de páginas (interno ao palco) -->\r\n    <div *ngIf=\"config.showIndicator && config.indicatorPosition === 'inside'\"\r\n          class=\"carousel-indicator-container inside\">\r\n      <div *ngIf=\"config.indicatorType === 'simple'\" class=\"carousel-indicator\">\r\n        <span *ngFor=\"let page of pages\"\r\n              class=\"indicator-dot\"\r\n              [class.active]=\"page === currentPageIndex\"\r\n              (click)=\"goToPage(page)\"></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Botão de navegação (próximo) outside -->\r\n  <button *ngIf=\"config.showNavigationButtons && config.navigationButtonsPosition === 'outside'\"\r\n          class=\"carousel-nav-button carousel-next-button outside\"\r\n          [disabled]=\"shouldDisableNavButton('next')\"\r\n          (click)=\"next()\">\r\n    <i class=\"fas fa-angle-right\"></i>\r\n  </button>\r\n</div>\r\n\r\n<!-- Botão de reprodução (externo ao palco) -->\r\n<div *ngIf=\"config.showPlayButtons && config.navigationButtonsPosition === 'outside'\"\r\n     class=\"carousel-play-button-container outside\">\r\n  <button class=\"carousel-play-button\" (click)=\"togglePlay()\">\r\n    <i [class]=\"isPlaying ? 'fas fa-pause' : 'fas fa-play'\"></i>\r\n  </button>\r\n</div>\r\n\r\n<!-- Indicador de páginas (externo ao palco) -->\r\n<div *ngIf=\"config.showIndicator && config.indicatorPosition === 'outside'\"\r\n     class=\"carousel-indicator-container outside\">\r\n  <div *ngIf=\"config.indicatorType === 'simple'\" class=\"carousel-indicator\">\r\n    <span *ngFor=\"let page of pages\"\r\n          class=\"indicator-dot\"\r\n          [class.active]=\"page === currentPageIndex\"\r\n          (click)=\"goToPage(page)\"></span>\r\n  </div>\r\n  <div *ngIf=\"config.indicatorType === 'text'\" class=\"carousel-indicator-text\">\r\n    {{ currentPage }}/{{ totalPages }}\r\n  </div>\r\n</div>\r\n\r\n<!-- Template para o conteúdo -->\r\n<ng-template #itemTemplate let-item>\r\n  <ng-content *ngIf=\"!contentTemplate\"></ng-content>\r\n  <ng-container *ngIf=\"contentTemplate\">\r\n    <ng-container *ngTemplateOutlet=\"contentTemplate; context: {$implicit: item}\"></ng-container>\r\n  </ng-container>\r\n</ng-template>\r\n<ng-content select=\"[carouselContent]\"></ng-content>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-ds-root',\r\n  template: `\r\n    <router-outlet></router-outlet>\r\n  `,\r\n  styles: ``\r\n})\r\nexport class CfcDsRootComponent { }\r\n","export interface ComponentType {\r\n  id:               number;\r\n  name:             string;\r\n  clickEventName:   string;\r\n  isAlready?:       boolean;\r\n}\r\n\r\nexport const components: ComponentType[] = [\r\n{ id: 1, name: 'avatar', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 2, name: 'breadcrumb', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 3, name: 'button', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 4, name: 'card', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 5, name: 'carousel', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 7, name: 'checkbox', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 8, name: 'collapse', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 9, name: 'cookie-bar', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 10, name: 'datetimer-picker', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 11, name: 'divider', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 12, name: 'footer', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 13, name: 'header', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 15, name: 'icon', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 16, name: 'illustration-state', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 16, name: 'input', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 14, name: 'item', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 17, name: 'list', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 18, name: 'loading', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 19, name: 'logo', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 20, name: 'magic-button', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 21, name: 'menu', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 22, name: 'message', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 23, name: 'modal', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 24, name: 'notification', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 25, name: 'notification-panel', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 26, name: 'pagination', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 27, name: 'radio', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 28, name: 'scrim', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 29, name: 'select', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 30, name: 'sign-in', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 31, name: 'skiplink', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 32, name: 'slider', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 33, name: 'step', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 34, name: 'switch', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 35, name: 'tab', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 36, name: 'table', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 37, name: 'tag', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 38, name: 'textarea', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 39, name: 'template-error', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 40, name: 'timer', clickEventName: 'setComponent', isAlready: true },\r\n{ id: 41, name: 'tooltip', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 42, name: 'upload', clickEventName: 'setComponent', isAlready: false },\r\n{ id: 43, name: 'wizard', clickEventName: 'setComponent', isAlready: false }\r\n].sort();\r\n","import { ChangeDetectorRef, Component, EventEmitter, Output } from '@angular/core';\r\nimport { ComponentType, components } from '../../../models/components.model';\r\n\r\n@Component({\r\n  selector: 'cfc-components-list',\r\n  templateUrl: './components-list.component.html',\r\n  styleUrl: './components-list.component.scss'\r\n})\r\nexport class ComponentsListComponent {\r\n  @Output() selectedComponent = new EventEmitter<ComponentType>();\r\n\r\n  componentList: ComponentType[] = components;\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef\r\n  ) { }\r\n\r\n  onSelectComponent(component: ComponentType): void {\r\n    this.selectedComponent.emit(component);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n}\r\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\r\n<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\r\n<div\r\n  fxLayout=\"column\">\r\n  <p\r\n    *ngFor=\"let component of componentList\"\r\n    class=\"components-list__component-name\"\r\n    (click)=\"onSelectComponent(component)\">\r\n    <span\r\n      [class.components-list__component-name--is-already]=\"component.isAlready\">\r\n      {{ component.name }}\r\n    </span>\r\n  </p>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { CookieBarConfig, CookieBarOutput } from '../models/cookie-bar.model';\r\nimport { CookieGroup } from '../models/cookie-group.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CookieBarService {\r\n  private cookieConfig!: CookieBarConfig;\r\n  private cookieOutput = new BehaviorSubject<CookieBarOutput | null>(null);\r\n  private isOpen = new BehaviorSubject<boolean>(false);\r\n\r\n  constructor() {}\r\n\r\n  public setConfig(config: string): void {\r\n    try {\r\n      const parsedConfig: CookieBarConfig[] = JSON.parse(config);\r\n      // Assume o primeiro item do array como configuração padrão\r\n      // Em um cenário real, poderíamos selecionar com base em lang\r\n      this.cookieConfig = parsedConfig[0] || null;\r\n      \r\n      if (this.cookieConfig) {\r\n        // Inicializa o cookie output\r\n        this.updateCookieOutput();\r\n      }\r\n    } catch (e) {\r\n      console.error('Erro ao processar configuração de cookies:', e);\r\n    }\r\n  }\r\n\r\n  public getConfig(): CookieBarConfig {\r\n    return this.cookieConfig;\r\n  }\r\n\r\n  public getCookieOutput(): Observable<CookieBarOutput | null> {\r\n    return this.cookieOutput.asObservable();\r\n  }\r\n\r\n  public getIsOpen(): Observable<boolean> {\r\n    return this.isOpen.asObservable();\r\n  }\r\n\r\n  public openCookieBar(): void {\r\n    this.isOpen.next(true);\r\n  }\r\n\r\n  public closeCookieBar(): void {\r\n    this.isOpen.next(false);\r\n  }\r\n\r\n  public accept(): void {\r\n    this.updateCookieOutput();\r\n    this.closeCookieBar();\r\n    // Em um cenário real, salvaríamos as configurações em cookies ou localStorage aqui\r\n  }\r\n\r\n  public updateSelectAll(selected: boolean): void {\r\n    if (!this.cookieConfig) return;\r\n    \r\n    this.cookieConfig.selectAll = selected;\r\n    \r\n    // Atualiza todos os grupos e cookies com o mesmo valor\r\n    this.cookieConfig.cookieGroups.forEach(group => {\r\n      // Só atualiza se o grupo for optOut (se for optIn, permanece sempre selecionado)\r\n      if (group.groupOptOut) {\r\n        group.groupSelected = selected;\r\n        \r\n        // Atualiza cada cookie do grupo\r\n        group.cookieList.forEach(cookie => {\r\n          // Só atualiza se o cookie for optOut\r\n          if (cookie.cookieOptOut) {\r\n            cookie.cookieSelected = selected;\r\n          }\r\n        });\r\n      }\r\n    });\r\n    \r\n    this.updateCookieOutput();\r\n  }\r\n\r\n  public updateGroupSelection(groupId: string, selected: boolean): void {\r\n    const group = this.cookieConfig.cookieGroups.find(g => g.groupId === groupId);\r\n    if (!group || !group.groupOptOut) return;\r\n    \r\n    // Atualiza o grupo\r\n    group.groupSelected = selected;\r\n    \r\n    // Atualiza todos os cookies do grupo\r\n    group.cookieList.forEach(cookie => {\r\n      if (cookie.cookieOptOut) {\r\n        cookie.cookieSelected = selected;\r\n      }\r\n    });\r\n    \r\n    // Verifica se todos grupos estão selecionados\r\n    this.updateSelectAllState();\r\n    this.updateCookieOutput();\r\n  }\r\n\r\n  public updateCookieSelection(groupId: string, cookieId: string, selected: boolean): void {\r\n    const group = this.cookieConfig.cookieGroups.find(g => g.groupId === groupId);\r\n    if (!group) return;\r\n    \r\n    const cookie = group.cookieList.find(c => c.cookieId === cookieId);\r\n    if (!cookie || !cookie.cookieOptOut) return;\r\n    \r\n    // Atualiza o cookie\r\n    cookie.cookieSelected = selected;\r\n    \r\n    // Verifica o estado do grupo\r\n    this.updateGroupState(group);\r\n    \r\n    // Verifica o estado geral\r\n    this.updateSelectAllState();\r\n    \r\n    this.updateCookieOutput();\r\n  }\r\n\r\n  private updateGroupState(group: CookieGroup): void {\r\n    const optOutCookies = group.cookieList.filter(c => c.cookieOptOut);\r\n    \r\n    if (optOutCookies.length === 0) {\r\n      group.groupSelected = true;\r\n      return;\r\n    }\r\n    \r\n    const selectedCookies = optOutCookies.filter(c => c.cookieSelected);\r\n    \r\n    if (selectedCookies.length === 0) {\r\n      group.groupSelected = false;\r\n    } else if (selectedCookies.length === optOutCookies.length) {\r\n      group.groupSelected = true;\r\n    } else {\r\n      // Estado indeterminado será tratado na exibição como grupo.groupSelected = true com indeterminate\r\n      group.groupSelected = true;\r\n    }\r\n  }\r\n\r\n  private updateSelectAllState(): void {\r\n    const optOutGroups = this.cookieConfig.cookieGroups.filter(g => g.groupOptOut);\r\n    \r\n    if (optOutGroups.length === 0) {\r\n      this.cookieConfig.selectAll = true;\r\n      return;\r\n    }\r\n    \r\n    const selectedGroups = optOutGroups.filter(g => g.groupSelected);\r\n    \r\n    if (selectedGroups.length === 0) {\r\n      this.cookieConfig.selectAll = false;\r\n    } else if (selectedGroups.length === optOutGroups.length) {\r\n      // Verifica se algum grupo está em estado indeterminado\r\n      const hasIndeterminateGroup = optOutGroups.some(group => {\r\n        const optOutCookies = group.cookieList.filter(c => c.cookieOptOut);\r\n        const selectedCookies = optOutCookies.filter(c => c.cookieSelected);\r\n        return selectedCookies.length > 0 && selectedCookies.length < optOutCookies.length;\r\n      });\r\n      \r\n      this.cookieConfig.selectAll = !hasIndeterminateGroup;\r\n    } else {\r\n      this.cookieConfig.selectAll = false;\r\n    }\r\n  }\r\n\r\n  private updateCookieOutput(): void {\r\n    if (!this.cookieConfig) return;\r\n    \r\n    const output: CookieBarOutput = {\r\n      selectAll: this.getSelectAllState(),\r\n      cookieGroups: this.cookieConfig.cookieGroups.map(group => ({\r\n        groupId: group.groupId,\r\n        groupSelected: this.getGroupState(group),\r\n        cookieList: group.cookieList.map(cookie => ({\r\n          cookieId: cookie.cookieId,\r\n          cookieSelected: cookie.cookieSelected\r\n        }))\r\n      }))\r\n    };\r\n    \r\n    this.cookieOutput.next(output);\r\n  }\r\n\r\n  private getSelectAllState(): boolean | 'indeterminated' {\r\n    const optOutGroups = this.cookieConfig.cookieGroups.filter(g => g.groupOptOut);\r\n    \r\n    if (optOutGroups.length === 0) return true;\r\n    \r\n    const selectedGroups = optOutGroups.filter(g => g.groupSelected);\r\n    const partialSelectedGroups = optOutGroups.some(group => {\r\n      if (!group.groupSelected) return false;\r\n      \r\n      const optOutCookies = group.cookieList.filter(c => c.cookieOptOut);\r\n      const selectedCookies = optOutCookies.filter(c => c.cookieSelected);\r\n      return selectedCookies.length > 0 && selectedCookies.length < optOutCookies.length;\r\n    });\r\n    \r\n    if (selectedGroups.length === 0) {\r\n      return false;\r\n    } else if (selectedGroups.length === optOutGroups.length && !partialSelectedGroups) {\r\n      return true;\r\n    } else {\r\n      return 'indeterminated';\r\n    }\r\n  }\r\n\r\n  private getGroupState(group: CookieGroup): boolean | 'indeterminated' {\r\n    const optOutCookies = group.cookieList.filter(c => c.cookieOptOut);\r\n    \r\n    if (optOutCookies.length === 0) return true;\r\n    \r\n    const selectedCookies = optOutCookies.filter(c => c.cookieSelected);\r\n    \r\n    if (selectedCookies.length === 0) {\r\n      return false;\r\n    } else if (selectedCookies.length === optOutCookies.length) {\r\n      return true;\r\n    } else {\r\n      return 'indeterminated';\r\n    }\r\n  }\r\n}","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { CookieBarService } from '../../services/cookie-bar.service';\r\nimport { CookieBarConfig, CookieBarOutput } from '../../models/cookie-bar.model';\r\nimport { CookieGroup } from '../../models/cookie-group.model';\r\nimport { Cookie } from '../../models/cookie.model';\r\n\r\n@Component({\r\n  selector: 'cfc-cookie-bar',\r\n  templateUrl: './cookie-bar.component.html',\r\n  styleUrls: ['./cookie-bar.component.scss']\r\n})\r\nexport class CookieBarComponent implements OnInit {\r\n  @Input() set config(value: string) {\r\n    if (value) {\r\n      this.cookieBarService.setConfig(value);\r\n    }\r\n  }\r\n\r\n  @Output() cookieSettingsChange = new EventEmitter<CookieBarOutput>();\r\n  @Output() acceptCookies = new EventEmitter<CookieBarOutput>();\r\n\r\n  public cookieConfig!: CookieBarConfig;\r\n  public isOpen = false;\r\n  public expandedGroups: { [key: string]: boolean } = {};\r\n\r\n  constructor(private cookieBarService: CookieBarService) {}\r\n\r\n  ngOnInit(): void {\r\n    // Inscreve para mudanças na configuração\r\n    this.cookieBarService.getConfig();\r\n    this.cookieConfig = this.cookieBarService.getConfig();\r\n\r\n    // Inscreve para mudanças no estado aberto/fechado\r\n    this.cookieBarService.getIsOpen().subscribe(isOpen => {\r\n      this.isOpen = isOpen;\r\n    });\r\n\r\n    // Inscreve para mudanças no output\r\n    this.cookieBarService.getCookieOutput().subscribe(output => {\r\n      if (output) {\r\n        this.cookieSettingsChange.emit(output);\r\n      }\r\n    });\r\n  }\r\n\r\n  public get acceptButtonLabel(): string {\r\n    return this.cookieConfig?.acceptButton || 'Aceitar';\r\n  }\r\n\r\n  public get secondaryButtonLabel(): string {\r\n    if (this.cookieConfig?.allOptOut) {\r\n      return this.cookieConfig?.optOutButton || 'Definir Cookies';\r\n    }\r\n    return this.cookieConfig?.optInButton || 'Ver Política de Cookies';\r\n  }\r\n\r\n  public get lastUpdateLabel(): string {\r\n    return this.cookieConfig?.lastUpdateLabel || 'Última atualização';\r\n  }\r\n\r\n  public get cookieGroupsLabel(): string {\r\n    return this.cookieConfig?.cookieGroupsLabel || 'Classes de cookies';\r\n  }\r\n\r\n  public get selectAllLabel(): string {\r\n    return this.isSelectAllChecked() \r\n      ? (this.cookieConfig?.selectAllLabel || 'Selecionar tudo')\r\n      : (this.cookieConfig?.unselectAllLabel || 'Desselecionar tudo');\r\n  }\r\n\r\n  public getSelectGroupLabel(group: CookieGroup): string {\r\n    return this.isGroupChecked(group)\r\n      ? (this.cookieConfig?.selectAllGroupLabel || 'Selecionar toda classe')\r\n      : (this.cookieConfig?.unselectAllGroupLabel || 'Desselecionar toda classe');\r\n  }\r\n\r\n  public get onLabel(): string {\r\n    return this.cookieConfig?.onLabel || 'Ligado';\r\n  }\r\n\r\n  public get offLabel(): string {\r\n    return this.cookieConfig?.offLabel || 'Desligado';\r\n  }\r\n\r\n  public get alwaysActiveLabel(): string {\r\n    return this.cookieConfig?.alwaysActiveLabel || 'Sempre ativo';\r\n  }\r\n\r\n  public get cookieNameLabel(): string {\r\n    return this.cookieConfig?.cookieNameLabel || 'Cookies';\r\n  }\r\n\r\n  public get expiresLabel(): string {\r\n    return this.cookieConfig?.expiresLabel || 'Vencimento';\r\n  }\r\n\r\n  public get domainLabel(): string {\r\n    return this.cookieConfig?.domainLabel || 'Domínio';\r\n  }\r\n\r\n  public get enterpriseLabel(): string {\r\n    return this.cookieConfig?.enterpriseLabel || 'Empresa';\r\n  }\r\n\r\n  public get purposeLabel(): string {\r\n    return this.cookieConfig?.purposeLabel || 'Finalidade';\r\n  }\r\n\r\n  public get descriptionLabel(): string {\r\n    return this.cookieConfig?.descriptionLabel || 'Descrição';\r\n  }\r\n\r\n  public toggleCookieBar(): void {\r\n    if (this.isOpen) {\r\n      this.cookieBarService.closeCookieBar();\r\n    } else {\r\n      this.cookieBarService.openCookieBar();\r\n    }\r\n  }\r\n\r\n  public toggleGroup(groupId: string): void {\r\n    this.expandedGroups[groupId] = !this.expandedGroups[groupId];\r\n  }\r\n\r\n  public isGroupExpanded(groupId: string): boolean {\r\n    return this.expandedGroups[groupId] === true;\r\n  }\r\n\r\n  public onSelectAllChange(event: any): void {\r\n    this.cookieBarService.updateSelectAll(event.target.checked);\r\n  }\r\n\r\n  public onGroupSelectionChange(groupId: string, event: any): void {\r\n    this.cookieBarService.updateGroupSelection(groupId, event.target.checked);\r\n  }\r\n\r\n  public onCookieSelectionChange(groupId: string, cookieId: string, event: any): void {\r\n    this.cookieBarService.updateCookieSelection(groupId, cookieId, event.target.checked);\r\n  }\r\n\r\n  public isSelectAllChecked(): boolean {\r\n    return this.cookieConfig?.selectAll === true;\r\n  }\r\n\r\n  public isSelectAllIndeterminate(): boolean {\r\n    if (!this.cookieConfig) return false;\r\n    \r\n    const optOutGroups = this.cookieConfig.cookieGroups.filter(g => g.groupOptOut);\r\n    if (optOutGroups.length === 0) return false;\r\n    \r\n    const selectedGroups = optOutGroups.filter(g => g.groupSelected);\r\n    \r\n    // Verifica se todos os grupos estão selecionados\r\n    if (selectedGroups.length === optOutGroups.length) {\r\n      // Verifica se algum grupo está parcialmente selecionado\r\n      const hasPartiallySelectedGroup = optOutGroups.some(group => this.isGroupIndeterminate(group));\r\n      return hasPartiallySelectedGroup;\r\n    }\r\n    \r\n    // Se alguns grupos estão selecionados, mas não todos\r\n    return selectedGroups.length > 0;\r\n  }\r\n\r\n  public isGroupChecked(group: CookieGroup): boolean {\r\n    return group.groupSelected === true;\r\n  }\r\n\r\n  public isGroupIndeterminate(group: CookieGroup): boolean {\r\n    if (!group.groupSelected) return false;\r\n    \r\n    const optOutCookies = group.cookieList.filter(c => c.cookieOptOut);\r\n    if (optOutCookies.length === 0) return false;\r\n    \r\n    const selectedCookies = optOutCookies.filter(c => c.cookieSelected);\r\n    \r\n    return selectedCookies.length > 0 && selectedCookies.length < optOutCookies.length;\r\n  }\r\n\r\n  public isCookieOptOut(cookie: Cookie): boolean {\r\n    return cookie.cookieOptOut;\r\n  }\r\n\r\n  public isGroupOptOut(group: CookieGroup): boolean {\r\n    return group.groupOptOut;\r\n  }\r\n\r\n  public accept(): void {\r\n    const output = {\r\n      selectAll: this.getSelectAllState(),\r\n      cookieGroups: this.cookieConfig.cookieGroups.map(group => ({\r\n        groupId: group.groupId,\r\n        groupSelected: this.getGroupState(group),\r\n        cookieList: group.cookieList.map(cookie => ({\r\n          cookieId: cookie.cookieId,\r\n          cookieSelected: cookie.cookieSelected\r\n        }))\r\n      }))\r\n    };\r\n    \r\n    this.cookieBarService.accept();\r\n    this.acceptCookies.emit(output);\r\n  }\r\n\r\n  public openDetailedView(): void {\r\n    this.cookieBarService.openCookieBar();\r\n  }\r\n\r\n  private getSelectAllState(): boolean | 'indeterminated' {\r\n    if (this.isSelectAllIndeterminate()) {\r\n      return 'indeterminated';\r\n    }\r\n    return this.isSelectAllChecked();\r\n  }\r\n\r\n  private getGroupState(group: CookieGroup): boolean | 'indeterminated' {\r\n    if (this.isGroupIndeterminate(group)) {\r\n      return 'indeterminated';\r\n    }\r\n    return this.isGroupChecked(group);\r\n  }\r\n\r\n  public getGroupCookieCount(group: CookieGroup): number {\r\n    return group.cookieList.length;\r\n  }\r\n\r\n  public getSelectedCookieCount(group: CookieGroup): number {\r\n    return group.cookieList.filter(cookie => cookie.cookieSelected).length;\r\n  }\r\n\r\n  public getTotalCookieCount(): number {\r\n    return this.cookieConfig?.cookieGroups.reduce((count, group) => \r\n      count + group.cookieList.length, 0) || 0;\r\n  }\r\n\r\n  public getTotalSelectedCookieCount(): number {\r\n    return this.cookieConfig?.cookieGroups.reduce((count, group) => \r\n      count + group.cookieList.filter(cookie => cookie.cookieSelected).length, 0) || 0;\r\n  }\r\n}","<!-- Barra de cookie minimizada -->\r\n<div class=\"cookie-bar\" *ngIf=\"cookieConfig && !isOpen\">\r\n    <div class=\"cookie-bar__content\">\r\n      <p class=\"cookie-bar__text\">{{ cookieConfig.infoText }}</p>\r\n    </div>\r\n    <div class=\"cookie-bar__actions\">\r\n      <button class=\"cookie-bar__button cookie-bar__button--secondary\" (click)=\"openDetailedView()\">\r\n        {{ secondaryButtonLabel }}\r\n      </button>\r\n      <button class=\"cookie-bar__button cookie-bar__button--primary\" (click)=\"accept()\">\r\n        {{ acceptButtonLabel }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Barra de cookie expandida -->\r\n  <div class=\"cookie-bar-expanded\" *ngIf=\"cookieConfig && isOpen\">\r\n    <div class=\"cookie-bar-expanded__header\">\r\n      <h1 class=\"cookie-bar-expanded__title\">{{ cookieConfig.mainTitle }}</h1>\r\n      <button \r\n        class=\"cookie-bar-expanded__close\" \r\n        (click)=\"toggleCookieBar()\" \r\n        [attr.aria-label]=\"cookieConfig.closeLabel || 'fechar'\">\r\n        <span class=\"cookie-bar-expanded__close-icon\">×</span>\r\n      </button>\r\n    </div>\r\n    \r\n    <div class=\"cookie-bar-expanded__intro\">\r\n      <div class=\"cookie-bar-expanded__last-update\" *ngIf=\"cookieConfig.lastUpdate\">\r\n        <span>{{ lastUpdateLabel }}: {{ cookieConfig.lastUpdate }}</span>\r\n      </div>\r\n      <div class=\"cookie-bar-expanded__description\">\r\n        <p>{{ cookieConfig.entryText }}</p>\r\n      </div>\r\n    </div>\r\n  \r\n    <div class=\"cookie-bar-expanded__main\">\r\n      <div class=\"cookie-bar-expanded__select-all\">\r\n        <h2>{{ cookieGroupsLabel }}</h2>\r\n        <div class=\"cookie-bar-expanded__checkbox\">\r\n          <input \r\n            type=\"checkbox\" \r\n            id=\"select-all\" \r\n            [checked]=\"isSelectAllChecked()\"\r\n            [indeterminate]=\"isSelectAllIndeterminate()\" \r\n            (change)=\"onSelectAllChange($event)\"\r\n            [disabled]=\"!cookieConfig.allOptOut\">\r\n          <label for=\"select-all\">{{ selectAllLabel }} ({{ getTotalSelectedCookieCount() }}/{{ getTotalCookieCount() }})</label>\r\n        </div>\r\n        <p *ngIf=\"cookieConfig.allAlertMessage && !isSelectAllChecked()\" class=\"cookie-bar-expanded__alert\">\r\n          {{ cookieConfig.allAlertMessage }}\r\n        </p>\r\n      </div>\r\n  \r\n      <div class=\"cookie-bar-expanded__groups\">\r\n        <div class=\"cookie-group\" *ngFor=\"let group of cookieConfig.cookieGroups\">\r\n          <div class=\"cookie-group__header\" (click)=\"toggleGroup(group.groupId)\">\r\n            <h3 class=\"cookie-group__name\">\r\n              {{ group.groupName }} ({{ getGroupCookieCount(group) }})\r\n            </h3>\r\n            <div class=\"cookie-group__actions\">\r\n              <div *ngIf=\"isGroupOptOut(group); else alwaysActive\" class=\"cookie-group__selection\">\r\n                <input \r\n                  type=\"checkbox\" \r\n                  [id]=\"'group-' + group.groupId\" \r\n                  [checked]=\"isGroupChecked(group)\" \r\n                  [indeterminate]=\"isGroupIndeterminate(group)\"\r\n                  (change)=\"onGroupSelectionChange(group.groupId, $event)\"\r\n                  [disabled]=\"!group.groupOptOut\">\r\n                <label [for]=\"'group-' + group.groupId\">\r\n                  {{ getSelectGroupLabel(group) }}\r\n                </label>\r\n              </div>\r\n              <ng-template #alwaysActive>\r\n                <span class=\"cookie-group__always-active\">{{ alwaysActiveLabel }}</span>\r\n              </ng-template>\r\n              <button class=\"cookie-group__toggle\">\r\n                <span *ngIf=\"!isGroupExpanded(group.groupId)\">&#9660;</span>\r\n                <span *ngIf=\"isGroupExpanded(group.groupId)\">&#9650;</span>\r\n              </button>\r\n            </div>\r\n          </div>\r\n  \r\n          <div class=\"cookie-group__description\">\r\n            {{ group.groupText }}\r\n          </div>\r\n          \r\n          <p *ngIf=\"group.groupAlertMessage && !isGroupChecked(group)\" class=\"cookie-group__alert\">\r\n            {{ group.groupAlertMessage }}\r\n          </p>\r\n  \r\n          <div class=\"cookie-group__cookies\" *ngIf=\"isGroupExpanded(group.groupId)\">\r\n            <div class=\"cookie\" *ngFor=\"let cookie of group.cookieList\">\r\n              <div class=\"cookie__header\">\r\n                <div class=\"cookie__info\">\r\n                  <h4>{{ cookie.cookieName }}</h4>\r\n                  <div *ngIf=\"isCookieOptOut(cookie) && group.groupOptOut\" class=\"cookie__toggle\">\r\n                    <div class=\"cookie__switch\">\r\n                      <input \r\n                        type=\"checkbox\" \r\n                        [id]=\"'cookie-' + cookie.cookieId\" \r\n                        [checked]=\"cookie.cookieSelected\"\r\n                        (change)=\"onCookieSelectionChange(group.groupId, cookie.cookieId, $event)\">\r\n                      <label [for]=\"'cookie-' + cookie.cookieId\">\r\n                        {{ cookie.cookieSelected ? onLabel : offLabel }}\r\n                      </label>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n  \r\n              <p *ngIf=\"cookie.alertMessage && !cookie.cookieSelected\" class=\"cookie__alert\">\r\n                {{ cookie.alertMessage }}\r\n              </p>\r\n  \r\n              <div class=\"cookie__details\">\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ cookieNameLabel }}:</strong> {{ cookie.cookieName }}\r\n                </div>\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ expiresLabel }}:</strong> {{ cookie.expires }}\r\n                </div>\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ domainLabel }}:</strong> {{ cookie.domain }}\r\n                </div>\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ enterpriseLabel }}:</strong> {{ cookie.entreprise }}\r\n                </div>\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ purposeLabel }}:</strong> {{ cookie.purpose }}\r\n                </div>\r\n                <div class=\"cookie__detail\">\r\n                  <strong>{{ descriptionLabel }}:</strong> {{ cookie.description }}\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n  \r\n      <!-- Notas adicionais se existirem -->\r\n      <div class=\"cookie-bar-expanded__notes\" *ngIf=\"cookieConfig.noteTitle && cookieConfig.noteList?.length\">\r\n        <h3>{{ cookieConfig.noteTitle }}</h3>\r\n        <div class=\"cookie-bar-expanded__note-item\" *ngFor=\"let note of cookieConfig.noteList\">\r\n          <h4>{{ note.question }}</h4>\r\n          <p>{{ note.answer }}</p>\r\n        </div>\r\n      </div>\r\n  \r\n      <!-- Links externos se existirem -->\r\n      <div class=\"cookie-bar-expanded__links\" *ngIf=\"cookieConfig.links?.length\">\r\n        <div class=\"cookie-bar-expanded__link\" *ngFor=\"let link of cookieConfig.links\">\r\n          <a [href]=\"link.url\" target=\"_blank\" rel=\"noopener noreferrer\">{{ link.name }}</a>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  \r\n    <div class=\"cookie-bar-expanded__footer\">\r\n      <div class=\"cookie-bar-expanded__actions\">\r\n        <button class=\"cookie-bar-expanded__button cookie-bar-expanded__button--primary\" (click)=\"accept()\">\r\n          {{ acceptButtonLabel }}\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </div>","export enum DateTimePickerMode {\r\n  DateTime = 'datetime',\r\n  Date = 'date',\r\n  Time = 'time'\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-icon',\r\n  templateUrl: './icon.component.html',\r\n  styleUrl: './icon.component.scss'\r\n})\r\nexport class IconComponent {\r\n\r\n  @Input() iconName!: string;\r\n  @Input() familyName = 'fas';\r\n  @Input() className?: string;\r\n  @Input() size?: string;\r\n  @Input() color?: string;\r\n\r\n}\r\n","<i [class]=\"familyName + ' fa-' + iconName\"\r\n  [ngClass]=\"className\"\r\n  [ngStyle]=\"{\r\n    '--size': size,\r\n    '--color': color\r\n  }\"\r\n  aria-hidden=\"true\"\r\n>\r\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { DateTimePickerMode } from '../../enums/date-time-picker.enum';\r\nimport { DateTimeRange } from '../../models/date-time-range.model'\r\n\r\n@Component({\r\n  selector: 'cfc-datetimer-picker',\r\n  templateUrl: './datetimer-picker.component.html',\r\n  styleUrl: './datetimer-picker.component.scss',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: DatetimerPickerComponent,\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class DatetimerPickerComponent implements OnInit, ControlValueAccessor {\r\n  @Input() label: string = 'Data e Hora';\r\n  @Input() mode: DateTimePickerMode = DateTimePickerMode.DateTime;\r\n  @Input() rangeSelection: boolean = false;\r\n  @Input() minDate: Date | null = null;\r\n  @Input() maxDate: Date | null = null;\r\n\r\n  @Output() dateTimeChange = new EventEmitter<Date | DateTimeRange>();\r\n\r\n  isOpen: boolean = false;\r\n  selectedDate: Date = new Date();\r\n  endDate: Date | null = null;\r\n  displayValue: string = '';\r\n\r\n  // Dados do calendário\r\n  currentMonth: number;\r\n  currentYear: number;\r\n  weekDays: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];\r\n  monthNames: string[] = [\r\n    'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',\r\n    'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'\r\n  ];\r\n  calendarDays: Array<{date: Date, isCurrentMonth: boolean, isToday: boolean, isDisabled: boolean}> = [];\r\n\r\n  // Dados do seletor de tempo\r\n  hours: string = '00';\r\n  minutes: string = '00';\r\n\r\n  // ControlValueAccessor\r\n  private onChange: any = () => {};\r\n  private onTouched: any = () => {};\r\n  disabled = false;\r\n\r\n  // Propriedades calculadas para o template\r\n  get showDatePicker(): boolean {\r\n    return this.mode === DateTimePickerMode.DateTime || this.mode === DateTimePickerMode.Date;\r\n  }\r\n\r\n  get showTimePicker(): boolean {\r\n    return this.mode === DateTimePickerMode.DateTime || this.mode === DateTimePickerMode.Time;\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef) {\r\n    const today = new Date();\r\n    this.currentMonth = today.getMonth();\r\n    this.currentYear = today.getFullYear();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.buildCalendar();\r\n    this.updateDisplayValue();\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  clickOutside(event: Event) {\r\n    if (!this.elementRef.nativeElement.contains(event.target)) {\r\n      this.isOpen = false;\r\n    }\r\n  }\r\n\r\n  toggle() {\r\n    if (this.disabled) return;\r\n    this.isOpen = !this.isOpen;\r\n    if (this.isOpen) {\r\n      this.buildCalendar();\r\n    }\r\n  }\r\n\r\n  buildCalendar() {\r\n    this.calendarDays = [];\r\n\r\n    // Determinar o primeiro dia do mês\r\n    const firstDay = new Date(this.currentYear, this.currentMonth, 1);\r\n    const lastDay = new Date(this.currentYear, this.currentMonth + 1, 0);\r\n\r\n    // Adicionar dias do mês anterior\r\n    const daysFromPrevMonth = firstDay.getDay();\r\n    const prevMonth = new Date(this.currentYear, this.currentMonth, 0);\r\n    for (let i = daysFromPrevMonth - 1; i >= 0; i--) {\r\n      const date = new Date(this.currentYear, this.currentMonth - 1, prevMonth.getDate() - i);\r\n      this.calendarDays.push({\r\n        date,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n\r\n    // Adicionar dias do mês atual\r\n    for (let i = 1; i <= lastDay.getDate(); i++) {\r\n      const date = new Date(this.currentYear, this.currentMonth, i);\r\n      this.calendarDays.push({\r\n        date,\r\n        isCurrentMonth: true,\r\n        isToday: this.isToday(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n\r\n    // Adicionar dias do próximo mês\r\n    const daysFromNextMonth = 42 - this.calendarDays.length;\r\n    for (let i = 1; i <= daysFromNextMonth; i++) {\r\n      const date = new Date(this.currentYear, this.currentMonth + 1, i);\r\n      this.calendarDays.push({\r\n        date,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n  }\r\n\r\n  previousMonth() {\r\n    if (this.currentMonth === 0) {\r\n      this.currentMonth = 11;\r\n      this.currentYear--;\r\n    } else {\r\n      this.currentMonth--;\r\n    }\r\n    this.buildCalendar();\r\n  }\r\n\r\n  nextMonth() {\r\n    if (this.currentMonth === 11) {\r\n      this.currentMonth = 0;\r\n      this.currentYear++;\r\n    } else {\r\n      this.currentMonth++;\r\n    }\r\n    this.buildCalendar();\r\n  }\r\n\r\n  selectDate(date: Date) {\r\n    if (this.disabled || this.isDateDisabled(date)) return;\r\n\r\n    if (this.rangeSelection && this.selectedDate && !this.endDate) {\r\n      if (date < this.selectedDate) {\r\n        this.endDate = this.selectedDate;\r\n        this.selectedDate = date;\r\n      } else {\r\n        this.endDate = date;\r\n      }\r\n      this.updateDisplayValue();\r\n      this.notifyChange();\r\n      if (!this.showTimePicker) this.isOpen = false;\r\n    } else {\r\n      this.selectedDate = new Date(date);\r\n      this.endDate = null;\r\n\r\n      // Preservar a hora e minutos atuais\r\n      if (this.showTimePicker) {\r\n        this.selectedDate.setHours(parseInt(this.hours));\r\n        this.selectedDate.setMinutes(parseInt(this.minutes));\r\n      } else {\r\n        // Zerar as horas e minutos se apenas data\r\n        this.selectedDate.setHours(0);\r\n        this.selectedDate.setMinutes(0);\r\n        this.selectedDate.setSeconds(0);\r\n        this.selectedDate.setMilliseconds(0);\r\n      }\r\n\r\n      this.updateDisplayValue();\r\n      this.notifyChange();\r\n      if (!this.showTimePicker) this.isOpen = false;\r\n    }\r\n  }\r\n\r\n  updateHour(increment: number) {\r\n    if (this.disabled) return;\r\n\r\n    let hour = parseInt(this.hours) + increment;\r\n    if (hour > 23) hour = 0;\r\n    if (hour < 0) hour = 23;\r\n    this.hours = hour.toString().padStart(2, '0');\r\n    this.updateTimeOnSelectedDate();\r\n  }\r\n\r\n  updateMinute(increment: number) {\r\n    if (this.disabled) return;\r\n\r\n    let minute = parseInt(this.minutes) + increment;\r\n    if (minute > 59) minute = 0;\r\n    if (minute < 0) minute = 59;\r\n    this.minutes = minute.toString().padStart(2, '0');\r\n    this.updateTimeOnSelectedDate();\r\n  }\r\n\r\n  updateTimeOnSelectedDate() {\r\n    if (this.disabled || !this.selectedDate) return;\r\n\r\n    this.selectedDate.setHours(parseInt(this.hours));\r\n    this.selectedDate.setMinutes(parseInt(this.minutes));\r\n    this.updateDisplayValue();\r\n    this.notifyChange();\r\n  }\r\n\r\n  updateDisplayValue() {\r\n    if (this.rangeSelection && this.endDate) {\r\n      const startFormatted = this.formatDate(this.selectedDate);\r\n      const endFormatted = this.formatDate(this.endDate);\r\n      this.displayValue = `${startFormatted} até ${endFormatted}`;\r\n\r\n      // Atualizar horas e minutos com base na data selecionada\r\n      if (this.showTimePicker) {\r\n        this.hours = this.selectedDate.getHours().toString().padStart(2, '0');\r\n        this.minutes = this.selectedDate.getMinutes().toString().padStart(2, '0');\r\n      }\r\n    } else {\r\n      this.displayValue = this.formatDate(this.selectedDate);\r\n\r\n      if (this.showTimePicker) {\r\n        this.hours = this.selectedDate.getHours().toString().padStart(2, '0');\r\n        this.minutes = this.selectedDate.getMinutes().toString().padStart(2, '0');\r\n\r\n        if (this.showDatePicker) {\r\n          this.displayValue += ` ${this.hours}:${this.minutes}`;\r\n        } else {\r\n          this.displayValue = `${this.hours}:${this.minutes}`;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  formatDate(date: Date): string {\r\n    if (!date) return '';\r\n    const day = date.getDate().toString().padStart(2, '0');\r\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n    const year = date.getFullYear();\r\n    return `${day}/${month}/${year}`;\r\n  }\r\n\r\n  isToday(date: Date): boolean {\r\n    const today = new Date();\r\n    return date.getDate() === today.getDate() &&\r\n      date.getMonth() === today.getMonth() &&\r\n      date.getFullYear() === today.getFullYear();\r\n  }\r\n\r\n  isDateDisabled(date: Date): boolean {\r\n    if (this.minDate && date < this.minDate) return true;\r\n    if (this.maxDate && date > this.maxDate) return true;\r\n    return false;\r\n  }\r\n\r\n  isSelectedDate(date: Date): boolean {\r\n    return this.selectedDate &&\r\n      date.getDate() === this.selectedDate.getDate() &&\r\n      date.getMonth() === this.selectedDate.getMonth() &&\r\n      date.getFullYear() === this.selectedDate.getFullYear();\r\n  }\r\n\r\n  isEndDate(date: Date): boolean {\r\n    if (!this.endDate) return false;\r\n\r\n    return date.getDate() === this.endDate.getDate() &&\r\n      date.getMonth() === this.endDate.getMonth() &&\r\n      date.getFullYear() === this.endDate.getFullYear();\r\n  }\r\n\r\n  isInRange(date: Date): boolean {\r\n    if (!this.rangeSelection || !this.selectedDate || !this.endDate) return false;\r\n    return date > this.selectedDate && date < this.endDate;\r\n  }\r\n\r\n  setYear(year: number) {\r\n    if (!isNaN(year)) {\r\n      this.currentYear = year;\r\n      this.buildCalendar();\r\n    }\r\n  }\r\n\r\n  setMonth(month: number) {\r\n    this.currentMonth = month;\r\n    this.buildCalendar();\r\n  }\r\n\r\n  // Implementação de ControlValueAccessor\r\n  writeValue(value: Date | DateTimeRange | null): void {\r\n    if (!value) {\r\n      // Definir valor padrão se nulo\r\n      this.selectedDate = new Date();\r\n      this.endDate = null;\r\n      this.updateDisplayValue();\r\n      return;\r\n    }\r\n\r\n    if (this.isDateTimeRange(value)) {\r\n      this.selectedDate = new Date(value.start);\r\n      this.endDate = value.end ? new Date(value.end) : null;\r\n    } else {\r\n      this.selectedDate = new Date(value);\r\n      this.endDate = null;\r\n    }\r\n\r\n    // Atualizar horas e minutos\r\n    if (this.showTimePicker && this.selectedDate) {\r\n      this.hours = this.selectedDate.getHours().toString().padStart(2, '0');\r\n      this.minutes = this.selectedDate.getMinutes().toString().padStart(2, '0');\r\n    }\r\n\r\n    this.updateDisplayValue();\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  private isDateTimeRange(value: any): value is DateTimeRange {\r\n    return value && 'start' in value && 'end' in value;\r\n  }\r\n\r\n  private notifyChange() {\r\n    const value = this.rangeSelection && this.endDate ?\r\n      { start: this.selectedDate, end: this.endDate } : this.selectedDate;\r\n\r\n    this.onChange(value);\r\n    this.onTouched();\r\n    this.dateTimeChange.emit(value);\r\n  }\r\n}\r\n","<!-- datetimer-picker.component.html - versão otimizada -->\r\n<div class=\"dt-picker-container\">\r\n    <label *ngIf=\"label\">{{ label }}</label>\r\n    <div class=\"dt-input-container\">\r\n      <input\r\n        type=\"text\"\r\n        [value]=\"displayValue\"\r\n        (click)=\"toggle()\"\r\n        [disabled]=\"disabled\"\r\n        readonly\r\n        class=\"dt-input\"\r\n        [class.disabled]=\"disabled\"\r\n      >\r\n      <span class=\"dt-input-icon\" (click)=\"!disabled && toggle()\">\r\n        <cfc-icon *ngIf=\"showDatePicker\" [iconName]=\"'calendar'\" [familyName]=\"'fas'\" [size]=\"'14px'\"></cfc-icon>\r\n        <cfc-icon *ngIf=\"!showDatePicker && showTimePicker\" [iconName]=\"'clock'\" [familyName]=\"'fas'\" [size]=\"'14px'\"></cfc-icon>\r\n      </span>\r\n    </div>\r\n  \r\n    <div class=\"dt-dropdown\" *ngIf=\"isOpen\">\r\n      <!-- Date Picker Component -->\r\n      <div class=\"dt-calendar\" *ngIf=\"showDatePicker\">\r\n        <div class=\"dt-calendar-header\">\r\n          <button type=\"button\" class=\"dt-nav-btn\" (click)=\"previousMonth()\">\r\n            <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-left'\" ></cfc-icon>\r\n          </button>\r\n          <div class=\"dt-month-year\">\r\n            <select class=\"dt-month-select\" [(ngModel)]=\"currentMonth\" (ngModelChange)=\"setMonth($event)\">\r\n              <option *ngFor=\"let month of monthNames; let i = index\" [value]=\"i\">{{ month }}</option>\r\n            </select>\r\n            <input class=\"dt-year-input\" type=\"number\" [(ngModel)]=\"currentYear\" (ngModelChange)=\"setYear($event)\">\r\n          </div>\r\n          <button type=\"button\" class=\"dt-nav-btn\" (click)=\"nextMonth()\">\r\n            <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-right'\" ></cfc-icon>\r\n          </button>\r\n        </div>\r\n  \r\n        <div class=\"dt-calendar-weekdays\">\r\n          <div class=\"dt-weekday\" *ngFor=\"let day of weekDays\">{{ day }}</div>\r\n        </div>\r\n  \r\n        <div class=\"dt-calendar-days\">\r\n          <div\r\n            *ngFor=\"let day of calendarDays\"\r\n            class=\"dt-day\"\r\n            [class.dt-other-month]=\"!day.isCurrentMonth\"\r\n            [class.dt-today]=\"day.isToday\"\r\n            [class.dt-selected]=\"isSelectedDate(day.date)\"\r\n            [class.dt-end-date]=\"isEndDate(day.date)\"\r\n            [class.dt-in-range]=\"isInRange(day.date)\"\r\n            [class.dt-disabled]=\"day.isDisabled\"\r\n            (click)=\"!day.isDisabled && selectDate(day.date)\"\r\n          >\r\n            {{ day.date.getDate() }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n  \r\n      <!-- Time Picker Component -->\r\n      <div class=\"dt-timepicker\" *ngIf=\"showTimePicker\">\r\n        <div class=\"dt-time-container\">\r\n          <div class=\"dt-time-selector\">\r\n            <button type=\"button\" class=\"dt-time-btn\" (click)=\"updateHour(1)\">\r\n              <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-up'\" ></cfc-icon>\r\n            </button>\r\n            <input type=\"text\" class=\"dt-time-input\" [value]=\"hours\" readonly>\r\n            <button type=\"button\" class=\"dt-time-btn\" (click)=\"updateHour(-1)\">\r\n              <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-down'\" ></cfc-icon>\r\n            </button>\r\n          </div>\r\n          <div class=\"dt-time-divider\">:</div>\r\n          <div class=\"dt-time-selector\">\r\n            <button type=\"button\" class=\"dt-time-btn\" (click)=\"updateMinute(1)\">\r\n              <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-up'\" ></cfc-icon>\r\n            </button>\r\n            <input type=\"text\" class=\"dt-time-input\" [value]=\"minutes\" readonly>\r\n            <button type=\"button\" class=\"dt-time-btn\" (click)=\"updateMinute(-1)\">\r\n              <cfc-icon [size]=\"'16px'\" [familyName]=\"'fas'\" [iconName]=\"'chevron-down'\" ></cfc-icon>\r\n            </button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  ","export enum DividerMode {\r\n  line = \"line\",\r\n  dashed = \"dashed\"\r\n}\r\n","export enum DividerType {\r\n  primary = \"primary\",\r\n  secondary = \"secondary\"\r\n}\r\n","export enum DividerAxis {\r\n  horizontal = \"horizontal\",\r\n  vertical = \"vertical\"\r\n}\r\n","export enum DividerDensity {\r\n  large = \"large\",\r\n  medium = \"medium\",\r\n  small = \"small\"\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { DividerMode } from '../../enums/divider-mode.enum';\r\nimport { DividerType } from '../../enums/divider-type.enum';\r\nimport { DividerAxis } from '../../enums/divider-axis.enum';\r\nimport { DividerDensity } from '../../enums/divider-density.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-divider',\r\n  templateUrl: './divider.component.html',\r\n  styleUrl: './divider.component.scss'\r\n})\r\nexport class DividerComponent {\r\n\r\n  @Input() height?: string;\r\n  @Input() width?: string;\r\n  @Input() mode: DividerMode = DividerMode.line;\r\n  @Input() type: DividerType = DividerType.primary;\r\n  @Input() axis: DividerAxis = DividerAxis.horizontal;\r\n  @Input() density: DividerDensity = DividerDensity.small;\r\n\r\n  dividerModes: typeof DividerMode = DividerMode;\r\n  dividerTypes: typeof DividerType = DividerType;\r\n  dividerAxis: typeof DividerAxis = DividerAxis;\r\n  dividerDensities: typeof DividerDensity = DividerDensity;\r\n\r\n}\r\n","<span\r\n  class=\"br-divider my-3\"\r\n  [ngStyle]=\"{\r\n    height: axis === dividerAxis.vertical ? (height ? height : '100%') : 'max-content',\r\n    width: axis === dividerAxis.horizontal ? (width ? width : '100%') : 'max-content'\r\n  }\"\r\n  [class.dashed]=\"mode === dividerModes.dashed\"\r\n  [class.vertical]=\"axis ===  dividerAxis.vertical\"\r\n  [ngClass]=\"{\r\n    'mx-3': axis === dividerAxis.vertical,\r\n    'my-3': axis === dividerAxis.horizontal,\r\n    'sm': density === dividerDensities.small,\r\n    'md': density === dividerDensities.medium,\r\n    'lg': density === dividerDensities.large,\r\n    'dark-mode': type === dividerTypes.secondary\r\n  }\"\r\n></span>\r\n","import {\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { FooterConfig } from '../../models/footer.model';\r\n\r\n@Component({\r\n  selector: 'cfc-footer',\r\n  templateUrl: './footer.component.html',\r\n  styleUrls: ['./footer.component.scss']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n   @Input() config: FooterConfig = {\r\n    theme: 'dark',\r\n    alignment: 'left',\r\n    gridColumns: 12\r\n  };\r\n  \r\n  activeCategory: string | null = null;\r\n  screenWidth: number = window.innerWidth;\r\n\r\n  get themeClass(): string {\r\n    return `footer-theme-${this.config.theme || 'dark'}`;\r\n  }\r\n  \r\n  get alignmentClass(): string {\r\n    return `footer-align-${this.config.alignment || 'left'}`;\r\n  }\r\n  \r\n  get gridClass(): string {\r\n    return `footer-grid-${this.config.gridColumns || 12}`;\r\n  }\r\n  \r\n  get isCollapsible(): boolean {\r\n    // Sempre usar accordion para layouts de 8 e 4 colunas\r\n    if (this.config.gridColumns === 8 || this.config.gridColumns === 4) {\r\n      return true;\r\n    }\r\n    \r\n    // Para layout de 12 colunas, usar accordion em telas menores que 992px\r\n    if (this.config.gridColumns === 12) {\r\n      return this.screenWidth < 992;\r\n    }\r\n    \r\n    return false;\r\n  }\r\n  \r\n  constructor() { }\r\n  \r\n  ngOnInit(): void {\r\n    // Set default values for optional fields\r\n    this.config = {\r\n      theme: 'dark',\r\n      alignment: 'left',\r\n      gridColumns: 12,\r\n      ...this.config\r\n    };\r\n    \r\n    // Adicionar listener para redimensionamento da tela\r\n    window.addEventListener('resize', this.onResize.bind(this));\r\n    this.onResize();\r\n  }\r\n  \r\n  ngOnDestroy(): void {\r\n    // Remover listener ao destruir o componente\r\n    window.removeEventListener('resize', this.onResize.bind(this));\r\n  }\r\n  \r\n  onResize(): void {\r\n    this.screenWidth = window.innerWidth;\r\n  }\r\n  \r\n  toggleCategory(categoryTitle: string): void {\r\n    if (this.activeCategory === categoryTitle) {\r\n      this.activeCategory = null;\r\n    } else {\r\n      this.activeCategory = categoryTitle;\r\n    }\r\n  }\r\n  \r\n  isCategoryActive(categoryTitle: string): boolean {\r\n    return this.activeCategory === categoryTitle;\r\n  }\r\n}\r\n","<!-- footer.component.html - Ajustado para os diferentes layouts de grid -->\r\n<footer class=\"footer-container\" [ngClass]=\"[themeClass, alignmentClass, gridClass]\">\r\n  <div class=\"footer-content\">\r\n    <!-- Logo Area -->\r\n    <div class=\"footer-logo-area\" *ngIf=\"config.logo\">\r\n      <a [href]=\"config.logo.url || '#'\" class=\"footer-logo\">\r\n        <img [src]=\"config.logo.src\" [alt]=\"config.logo.alt\">\r\n      </a>\r\n    </div>\r\n    \r\n    <!-- Site Map Area -->\r\n    <div class=\"footer-sitemap-area\" *ngIf=\"config.categories && config.categories.length > 0\">\r\n      <!-- Grid view for 12 columns -->\r\n      <div \r\n        class=\"sitemap-grid\" \r\n        [class.categories-6]=\"config.categories.length <= 6\"\r\n        [class.categories-12]=\"config.categories.length > 6 && config.categories.length <= 12\"\r\n      >\r\n        <div *ngFor=\"let category of config.categories\">\r\n          <h3 class=\"sitemap-category\">{{ category.title }}</h3>\r\n          <ul class=\"sitemap-list\">\r\n            <li *ngFor=\"let link of category.links\">\r\n              <a [href]=\"link.url\" [target]=\"link.target || '_self'\">{{ link.label }}</a>\r\n            </li>\r\n          </ul>\r\n        </div>\r\n      </div>\r\n      \r\n      <!-- Accordion view for 8 and 4 columns (and responsive 12 columns) -->\r\n      <div class=\"sitemap-accordion\">\r\n        <div class=\"sitemap-accordion-item\" *ngFor=\"let category of config.categories\">\r\n          <div \r\n            class=\"sitemap-accordion-header\" \r\n            [class.active]=\"isCategoryActive(category.title)\"\r\n            (click)=\"toggleCategory(category.title)\"\r\n          >\r\n            <h3 class=\"sitemap-category\">{{ category.title }}</h3>\r\n            <span class=\"sitemap-toggle-icon\">\r\n              <i class=\"icon-arrow\" [class.icon-down]=\"!isCategoryActive(category.title)\" [class.icon-up]=\"isCategoryActive(category.title)\"></i>\r\n            </span>\r\n          </div>\r\n          <div class=\"sitemap-accordion-content\" [class.expanded]=\"isCategoryActive(category.title)\">\r\n            <ul class=\"sitemap-list\">\r\n              <li *ngFor=\"let link of category.links\">\r\n                <a [href]=\"link.url\" [target]=\"link.target || '_self'\">{{ link.label }}</a>\r\n              </li>\r\n            </ul>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    \r\n    <!-- Secondary Information Area -->\r\n    <div class=\"footer-secondary-area\" *ngIf=\"(config.socialItems && config.socialItems.length > 0) || (config.partnerLogos && config.partnerLogos.length > 0)\">\r\n      <!-- Social Networks -->\r\n      <div class=\"footer-social\" *ngIf=\"config.socialItems && config.socialItems.length > 0\">\r\n        <h3 class=\"social-title\" *ngIf=\"config.socialTitle\">{{ config.socialTitle }}</h3>\r\n        <div class=\"social-icons\">\r\n          <a \r\n            *ngFor=\"let item of config.socialItems\" \r\n            [href]=\"item.url\" \r\n            target=\"_blank\" \r\n            class=\"social-icon\" \r\n            [attr.aria-label]=\"item.label\"\r\n          >\r\n            <i [class]=\"item.icon\"></i>\r\n          </a>\r\n        </div>\r\n      </div>\r\n      \r\n      <!-- Partner Logos -->\r\n      <div class=\"footer-partner-logos\" *ngIf=\"config.partnerLogos && config.partnerLogos.length > 0\">\r\n        <a *ngFor=\"let logo of config.partnerLogos\" [href]=\"logo.url || '#'\" class=\"partner-logo\">\r\n          <img [src]=\"logo.src\" [alt]=\"logo.alt\">\r\n        </a>\r\n      </div>\r\n    </div>\r\n    \r\n    <!-- Divider -->\r\n    <hr class=\"footer-divider\" *ngIf=\"config.legalText || config.highlightedLegalText || config.licenseText\">\r\n    \r\n    <!-- Legal Information Area -->\r\n    <div class=\"footer-legal-area\" *ngIf=\"config.legalText || config.highlightedLegalText || config.licenseText\">\r\n      <p class=\"legal-text\" *ngIf=\"config.legalText || config.highlightedLegalText\">\r\n        {{ config.legalText || '' }}\r\n        <ng-container *ngIf=\"config.highlightedLegalText\">\r\n          <span class=\"legal-highlight\"> {{ config.highlightedLegalText }}</span>\r\n        </ng-container>\r\n      </p>\r\n      \r\n      <p class=\"legal-text\" *ngIf=\"config.licenseText\">\r\n        {{ config.licenseText }}\r\n        <a *ngIf=\"config.licenseUrl\" [href]=\"config.licenseUrl\" target=\"_blank\">{{ config.licenseName || 'licença de uso' }}</a>\r\n      </p>\r\n    </div>\r\n  </div>\r\n</footer>","export enum HeaderViewMode {\r\n  default = \"default\",\r\n  contrast = \"contrast\"\r\n}\r\n","export enum SignInType {\r\n  primary = \"primary\",\r\n  secondary = \"secondary\"\r\n}\r\n","export enum TimerType {\r\n  primary = \"primary\",\r\n  secondary = \"secondary\"\r\n}\r\n","export enum SignInMode {\r\n  internal = \"internal\",\r\n  externalTxt = \"externalTxt\",\r\n  externalImg = \"externalImg\",\r\n  logout = \"logout\"\r\n}\r\n","export enum SignInDensity {\r\n  large = \"large\",\r\n  middle = \"middle\",\r\n  small = \"small\"\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { SignInType } from '../../enums/sign-in-type.enum';\r\nimport { SignInDensity } from '../../enums/sign-in-density.enum';\r\nimport { SignInMode } from '../../enums/sign-in-mode.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-sign-in',\r\n  templateUrl: './sign-in.component.html',\r\n  styleUrl: './sign-in.component.scss'\r\n})\r\nexport class SignInComponent\r\n  implements AfterViewInit {\r\n\r\n  @Input() label = 'user';\r\n  @Input() type: SignInType = SignInType.secondary;\r\n  @Input() density: SignInDensity = SignInDensity.middle;\r\n  @Input() mode: SignInMode = SignInMode.internal;\r\n  @Input() disabled = false;\r\n  @Input() active = false;\r\n  @Input() block = false;\r\n  @Input() circle = false;\r\n  @Input() externalImageUrl = '';\r\n  @Input() externalLabel?: string;\r\n\r\n  @Output() onClick: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() onLogout: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @HostBinding('style.width') initialWidth: string = '';\r\n\r\n  isLogoutVisible = false;\r\n\r\n  readonly signinTypes = SignInType;\r\n  readonly signinDensities = SignInDensity;\r\n  readonly signinModes = SignInMode;\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initialWidth = `${this.elementRef.nativeElement.offsetWidth}px`;\r\n  }\r\n\r\n  showLogout(isVisible: boolean): void {\r\n    this.isLogoutVisible = isVisible && this.mode === this.signinModes.logout;\r\n  }\r\n}\r\n","<div\r\n  (mouseenter)=\"showLogout(true)\"\r\n  (mouseleave)=\"showLogout(false)\">\r\n\r\n  <button\r\n    class=\"br-sign-in\"\r\n    style=\"width: 100%;\"\r\n    [ngClass]=\"density\"\r\n    [class.primary]=\"type === signinTypes.primary\"\r\n    [class.disabled]=\"disabled\"\r\n    [class.active]=\"active\"\r\n    [class.circle]=\"circle\"\r\n    [class.block]=\"block\"\r\n    type=\"button\"\r\n    fxLayoutGap=\"0.3rem\"\r\n    (click)=\"!isLogoutVisible ? onClick.emit($event) : onLogout.emit($event)\">\r\n    <i\r\n      *ngIf=\"!circle && (mode === signinModes.internal || mode === signinModes.logout)\"\r\n      [ngClass]=\"!isLogoutVisible ? 'fas fa-user' : 'fas fa-sign-out-alt'\"\r\n      aria-hidden=\"true\">\r\n    </i>\r\n    <span\r\n      style=\"font-size: 14px;\"\r\n      *ngIf=\"!circle\">\r\n      {{ !isLogoutVisible ? label : 'Sair' }}\r\n    </span>\r\n    <img\r\n      *ngIf=\"!isLogoutVisible && !circle && mode === signinModes.externalImg\"\r\n      [src]=\"externalImageUrl\"\r\n      alt=\"Descrição da minha imagem\"\r\n      style=\"margin-left: 0.5rem;\"/>\r\n    <span\r\n      *ngIf=\"!isLogoutVisible && !circle && externalLabel && mode === signinModes.externalTxt\"\r\n      class=\"text-black\"\r\n      style=\"margin-left: 0.5rem;\">\r\n      {{ externalLabel }}\r\n    </span>\r\n  </button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, interval, Subscription } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class TimerService {\r\n  private countdown$ = new BehaviorSubject<number | null>(null);\r\n  private subscription: Subscription | null = null;\r\n\r\n  /**\r\n   * CONVERTE TEMPO DE DIFERENTES FORMATOS PARA SEGUNDOS\r\n   * @param time String no formato 'dias:hh:mm:ss', 'hh:mm:ss', 'mm:ss' ou número em segundos.\r\n   */\r\n  private parseTimeToSeconds(time: string | number): number {\r\n    if (typeof time === 'number') {\r\n      return time;\r\n    }\r\n\r\n    const parts = time.split(':').map(Number).reverse();\r\n    const [seconds = 0, minutes = 0, hours = 0, days = 0] = parts;\r\n\r\n    return seconds + minutes * 60 + hours * 3600 + days * 86400;\r\n  }\r\n\r\n  /**\r\n   * INICIA A CONTAGEM REGRESSIVA\r\n   * @param time Tempo no formato 'dias:hh:mm:ss', 'hh:mm:ss', 'mm:ss' ou número em segundos.\r\n   */\r\n  startCountdown(time: string | number): void {\r\n    const totalSeconds = this.parseTimeToSeconds(time);\r\n\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n\r\n    this.countdown$.next(totalSeconds);\r\n\r\n    this.subscription = interval(1000)\r\n      .pipe(\r\n        map((elapsed) => totalSeconds - elapsed),\r\n        takeWhile((timeLeft) => timeLeft >= 0)\r\n      )\r\n      .subscribe({\r\n        next: (timeLeft) => this.countdown$.next(timeLeft),\r\n        complete: () => this.countdown$.next(0),\r\n      });\r\n  }\r\n\r\n  /**\r\n   * RETORNA O STREAM DO TEMPO RESTANTE\r\n   */\r\n  getCountdown() {\r\n    return this.countdown$.asObservable();\r\n  }\r\n\r\n  /**\r\n   * INTERROMPE A CONTAGEM\r\n   */\r\n  stopCountdown(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = null;\r\n    }\r\n    this.countdown$.next(null);\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TimerService } from '../../services/timer.service';\r\nimport { TimerType } from '../../enums/timer-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-timer',\r\n  templateUrl: './timer.component.html',\r\n  styleUrls: ['./timer.component.scss'],\r\n})\r\nexport class TimerComponent implements OnInit, OnDestroy {\r\n  @Input() type: TimerType = TimerType.primary;\r\n  @Input() initialTime: string | number = '0:30:00';\r\n  @Input() criticalTime = 300;\r\n  @Input() isGlobal = false;\r\n\r\n  @Output() timeOutEvent = new EventEmitter<void>();\r\n  @Output() timeEvent = new EventEmitter<void>();\r\n  @Output() timeCriticalEvent = new EventEmitter<void>();\r\n\r\n  displayTime = '30:00';\r\n  criticalTimeIsOut = false;\r\n  timerTypes: typeof TimerType = TimerType;\r\n\r\n  private remainingTimeSubscription!: Subscription;\r\n  private localRemainingTime: number = 0;\r\n\r\n  constructor(\r\n    private timerService: TimerService\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.startTimer();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.isGlobal) {\r\n      this.timerService.stopCountdown();\r\n      this.remainingTimeSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  startTimer(): void {\r\n    if (this.isGlobal) {\r\n      this.timerService.startCountdown(this.initialTime);\r\n\r\n      this.remainingTimeSubscription = this.timerService.getCountdown().subscribe((remainingTime) => {\r\n        if (remainingTime !== null) {\r\n          this.updateDisplayTime(remainingTime);\r\n\r\n          if (!this.criticalTimeIsOut && remainingTime <= this.criticalTime) {\r\n            this.timeCriticalEvent.emit();\r\n            this.criticalTimeIsOut = true;\r\n          }\r\n\r\n          if (remainingTime <= 0) {\r\n            this.timeOutEvent.emit();\r\n          } else {\r\n            this.timeEvent.emit();\r\n          }\r\n        }\r\n      });\r\n    } else {\r\n      // Contagem local quando isGlobal = false\r\n      this.localRemainingTime = this.parseTimeToSeconds(this.initialTime);\r\n      this.startLocalCountdown();\r\n    }\r\n  }\r\n\r\n  private startLocalCountdown(): void {\r\n    const intervalId = setInterval(() => {\r\n      this.localRemainingTime--;\r\n\r\n      this.updateDisplayTime(this.localRemainingTime);\r\n\r\n      if (!this.criticalTimeIsOut && this.localRemainingTime <= this.criticalTime) {\r\n        this.timeCriticalEvent.emit();\r\n        this.criticalTimeIsOut = true;\r\n      }\r\n\r\n      if (this.localRemainingTime <= 0) {\r\n        clearInterval(intervalId);\r\n        this.timeOutEvent.emit();\r\n      } else {\r\n        this.timeEvent.emit();\r\n      }\r\n    }, 1000);\r\n  }\r\n\r\n  private updateDisplayTime(seconds: number): void {\r\n    const days = Math.floor(seconds / 86400);\r\n    const hours = Math.floor((seconds % 86400) / 3600);\r\n    const minutes = Math.floor((seconds % 3600) / 60);\r\n    const remainingSeconds = seconds % 60;\r\n\r\n    this.displayTime =\r\n      days > 0\r\n        ? `${days} dias`\r\n        : `${this.padZero(hours)}:${this.padZero(minutes)}:${this.padZero(remainingSeconds)}`;\r\n  }\r\n\r\n  private padZero(number: number): string {\r\n    return number < 10 ? `0${number}` : `${number}`;\r\n  }\r\n\r\n  private parseTimeToSeconds(time: string | number): number {\r\n    if (typeof time === 'number') {\r\n      return time;\r\n    }\r\n\r\n    const parts = time.split(':').map(Number).reverse();\r\n    const [seconds = 0, minutes = 0, hours = 0, days = 0] = parts;\r\n\r\n    return seconds + minutes * 60 + hours * 3600 + days * 86400;\r\n  }\r\n}\r\n","<button\r\n  class=\"br-button\"\r\n  style=\"pointer-events: none; cursor: default; min-width: 9.3rem;\"\r\n  [ngClass]=\"{\r\n    'bg-gray-2': (type === timerTypes.primary && !criticalTimeIsOut),\r\n    'bg-yellow-5': (type === timerTypes.primary && criticalTimeIsOut),\r\n    'text-pure-100': type === timerTypes.primary,\r\n    'bg-blue-warm-60': (type === timerTypes.secondary && !criticalTimeIsOut),\r\n    'bg-red-warm-20': (type === timerTypes.secondary && criticalTimeIsOut),\r\n    'text-blue-warm-60': (type === timerTypes.secondary && criticalTimeIsOut),\r\n    'text-pure-0': type === timerTypes.secondary && !criticalTimeIsOut\r\n  }\"\r\n  fxLayoutGap=\"0.1rem\"\r\n  fxLayoutAlign=\"start center\">\r\n  <i class=\"fas fa-clock\"></i>\r\n  <span style=\"font-size: 14px;\">{{ displayTime }}</span>\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { HeaderViewMode } from '../../enums/header-view-mode.enum';\r\nimport { SignInType } from '../../enums/sign-in-type.enum';\r\nimport { ButtonType } from '../../enums/button-type.enum';\r\nimport { DividerMode } from '../../enums/divider-mode.enum';\r\nimport { DividerAxis } from '../../enums/divider-axis.enum';\r\nimport { DividerDensity } from '../../enums/divider-density.enum';\r\nimport { DividerType } from '../../enums/divider-type.enum';\r\nimport { Router } from '@angular/router';\r\nimport { TimerType } from '../../enums/timer-type.enum';\r\nimport { SignInMode } from '../../enums/sign-in-mode.enum';\r\n\r\nexport interface LanguageOption {\r\n  code: string;\r\n  name?: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'cfc-header',\r\n  templateUrl: './header.component.html',\r\n  styleUrl: './header.component.scss'\r\n})\r\nexport class HeaderComponent {\r\n\r\n  @Input() viewMode: HeaderViewMode = HeaderViewMode.default;\r\n  @Input() hasMenu = true;\r\n  // logo\r\n  @Input() hasLogo = true;\r\n  @Input() logoUrl: string = ''; // URL para logo externa ou caminho para imagem local\r\n  @Input() logoAlt: string = 'Logo'; // Texto alternativo para a imagem\r\n  // title and description\r\n  @Input() title!: string;\r\n  @Input() description?: string;\r\n  // timer\r\n  @Input() hasTimer = false;\r\n  @Input() timeLogout = 1800;\r\n  @Input() timeCritical = 300;\r\n  // action bar\r\n  @Input() hasNotificationIcon = true;\r\n  @Input() userName = 'Entrar';\r\n  @Input() signinMode: SignInMode = SignInMode.logout;\r\n  // Language Selector\r\n  @Input() hasLanguageSelector = true;\r\n  @Input() languageOptions: LanguageOption[] = []; // Array de opções de idioma\r\n  @Input() currentLanguageCode = ''; // Código do idioma atual\r\n  @Input() hasThemeToggle = true;\r\n\r\n  @Output() menuEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() criticalTimeEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() timeOutEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() timeEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() notificationIconEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() signinEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() logoutEvent: EventEmitter<void> = new EventEmitter<void>;\r\n  @Output() themeToggleEvent: EventEmitter<HeaderViewMode> = new EventEmitter<HeaderViewMode>();\r\n  @Output() languageChangeEvent: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() viewModeChange: EventEmitter<HeaderViewMode> = new EventEmitter<HeaderViewMode>();\r\n  \r\n\r\n  readonly headerViewModes = HeaderViewMode;\r\n  readonly dividerModes = DividerMode;\r\n  readonly dividerTypes = DividerType;\r\n  readonly dividerDensities = DividerDensity;\r\n  readonly dividerAxis = DividerAxis;\r\n  readonly signinTypes = SignInType;\r\n  readonly signinModes = SignInMode;\r\n  readonly buttonTypes = ButtonType;\r\n  readonly timerTypes = TimerType;\r\n\r\n  languageDropdownOpen: boolean = false;\r\n\r\n  constructor(public router: Router) {\r\n    // Recuperar tema salvo para o header, se existir\r\n    const savedHeaderTheme = localStorage.getItem('headerTheme');\r\n    if (savedHeaderTheme) {\r\n      this.viewMode = savedHeaderTheme as HeaderViewMode;\r\n    }\r\n  }\r\n\r\n  toggleMenu(): void {\r\n    this.menuEvent.emit();\r\n  }\r\n\r\n  goToHome(): void {\r\n    if (this.router.url !== '/') {\r\n      this.router.navigate(['/']);\r\n    }\r\n  }\r\n\r\n  get firstAndLastName(): string {\r\n    const splitedName = this.userName.trim().split(' ');\r\n    if (splitedName.length === 1) {\r\n      return splitedName[0];\r\n    } else {\r\n      return `${splitedName[0]} ${splitedName[splitedName.length - 1]}`;\r\n    }\r\n  }\r\n\r\n  toggleLanguageDropdown(): void {\r\n    this.languageDropdownOpen = !this.languageDropdownOpen;\r\n  }\r\n\r\n  selectLanguage(langCode: string): void {\r\n    this.currentLanguageCode = langCode;\r\n    this.languageDropdownOpen = false;\r\n    this.languageChangeEvent.emit(langCode);\r\n  }\r\n\r\n  get currentLanguageDisplay(): string {\r\n    if (!this.currentLanguageCode && this.languageOptions.length > 0) {\r\n      this.currentLanguageCode = this.languageOptions[0].code;\r\n    }\r\n    \r\n    // Retorna o display name (se disponível) ou o código do idioma\r\n    const currentLang = this.languageOptions.find(lang => lang.code === this.currentLanguageCode);\r\n    return currentLang ? (currentLang.name || currentLang.code) : this.currentLanguageCode;\r\n  }\r\n\r\n  /**\r\n   * Toggle entre os modos de tema do header (claro/escuro)\r\n   */\r\n  toggleTheme(): void {\r\n    // Toggle entre os modos default e contrast\r\n    this.viewMode = this.viewMode === HeaderViewMode.default \r\n      ? HeaderViewMode.contrast \r\n      : HeaderViewMode.default;\r\n    \r\n    // Emitir eventos para notificar componentes pais\r\n    this.viewModeChange.emit(this.viewMode);\r\n    this.themeToggleEvent.emit(this.viewMode);\r\n    \r\n    // Salvar preferência apenas para o header\r\n    localStorage.setItem('headerTheme', this.viewMode);\r\n  }\r\n}","<header\r\n  class=\"cfc-header\"\r\n  [ngClass]=\"{\r\n    'cfc-header--light': viewMode === headerViewModes.default,\r\n    'cfc-header--dark': viewMode === headerViewModes.contrast\r\n  }\"\r\n  fxLayout=\"row\"\r\n  fxLayoutAlign=\"space-between center\">\r\n  <div\r\n    fxLayout=\"row\"\r\n    fxLayoutAlign=\"center center\"\r\n    fxLayoutGap=\"1rem\">\r\n\r\n    <!-- MENU -->\r\n    <cfc-button\r\n      *ngIf=\"hasMenu\"\r\n      [icon]=\"'bars'\"\r\n      [type]=\"buttonTypes.tertiary\"\r\n      [circle]=\"true\"\r\n      [inverted]=\"viewMode === headerViewModes.contrast\"\r\n      aria-label=\"menu\"\r\n      data-toggle=\"menu\"\r\n      data-target=\"#menu-aside\"\r\n      is-push=\"true\"\r\n      id=\"push\"\r\n      [attr.show-menu]=\"'true'\"\r\n      (click)=\"toggleMenu()\">\r\n    </cfc-button>\r\n\r\n    <!-- LOGO - Sem modificação baseada no tema -->\r\n    <div *ngIf=\"hasLogo\" class=\"cfc-header__logo-container\" (click)=\"goToHome()\">\r\n      <img \r\n        [src]=\"logoUrl\" \r\n        [alt]=\"logoAlt\" \r\n        class=\"cfc-header__logo\"\r\n        [ngClass]=\"{\r\n          'cfc-header__logo--clickable': router.url !== '/'\r\n        }\">\r\n    </div>\r\n\r\n    <!-- TITLE AND DESCRIPTION -->\r\n    <div\r\n      fxLayout=\"column\"\r\n      fxLayoutAlign=\"center start\">\r\n      <h4\r\n        class=\"cfc-header__title\">\r\n        {{ title }}\r\n      </h4>\r\n      <p\r\n        *ngIf=\"description\"\r\n        class=\"cfc-header__description\">\r\n        {{ description }}\r\n      </p>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- ACTION BAR -->\r\n  <div\r\n    fxLayout=\"row\"\r\n    fxLayoutAlign=\"center center\"\r\n    fxLayoutGap=\"0.5rem\">\r\n\r\n    <!-- Divider antes do Timer -->\r\n    <cfc-divider\r\n      *ngIf=\"hasTimer\"\r\n      [mode]=\"dividerModes.line\"\r\n      [type]=\"viewMode === headerViewModes.default ? dividerTypes.primary : dividerTypes.secondary\"\r\n      [density]=\"dividerDensities.large\"\r\n      [axis]=\"dividerAxis.vertical\"\r\n    ></cfc-divider>\r\n\r\n    <cfc-timer\r\n      *ngIf=\"hasTimer\"\r\n      [type]=\"viewMode === headerViewModes.default\r\n        ? timerTypes.primary\r\n        : timerTypes.secondary\r\n      \"\r\n      [initialTime]=\"timeLogout\"\r\n      [criticalTime]=\"timeCritical\"\r\n      [isGlobal]=\"true\"\r\n      (timeCriticalEvent)=\"criticalTimeEvent.emit()\"\r\n      (timeOutEvent)=\"timeOutEvent.emit()\"\r\n      (timeEvent)=\"timeEvent.emit()\"\r\n    ></cfc-timer>\r\n\r\n    <!-- Divider depois do Timer -->\r\n    <cfc-divider\r\n      *ngIf=\"hasTimer\"\r\n      [mode]=\"dividerModes.line\"\r\n      [type]=\"viewMode === headerViewModes.default ? dividerTypes.primary : dividerTypes.secondary\"\r\n      [density]=\"dividerDensities.large\"\r\n      [axis]=\"dividerAxis.vertical\"\r\n    ></cfc-divider>\r\n\r\n    <cfc-button\r\n      *ngIf=\"hasNotificationIcon\"\r\n      style=\"min-width: 2.2rem;\"\r\n      [icon]=\"'bell'\"\r\n      [type]=\"buttonTypes.tertiary\"\r\n      [inverted]=\"viewMode === headerViewModes.contrast\"\r\n      [circle]=\"true\"\r\n      (onClick)=\"notificationIconEvent.emit()\"\r\n      data-toggle=\"menu\"\r\n      data-target=\"#push\"\r\n    ></cfc-button>\r\n\r\n    <cfc-divider\r\n      *ngIf=\"!hasNotificationIcon\"\r\n      [mode]=\"dividerModes.line\"\r\n      [type]=\"viewMode === headerViewModes.default\r\n        ? dividerTypes.primary\r\n        : dividerTypes.secondary\r\n      \"\r\n      [density]=\"dividerDensities.large\"\r\n      [axis]=\"dividerAxis.vertical\"\r\n    ></cfc-divider>\r\n\r\n    <!-- Theme Toggle Button -->\r\n    <cfc-button \r\n      *ngIf=\"hasThemeToggle\"\r\n      [type]=\"buttonTypes.tertiary\"\r\n      [circle]=\"true\"\r\n      [inverted]=\"viewMode === headerViewModes.contrast\"\r\n      [icon]=\"viewMode === headerViewModes.contrast ? 'sun' : 'moon'\"\r\n      (onClick)=\"toggleTheme()\"\r\n      aria-label=\"Alternar tema\">\r\n    </cfc-button>\r\n\r\n    <!-- Language Selector -->\r\n    <div *ngIf=\"hasLanguageSelector && languageOptions.length > 0\" class=\"cfc-header__language-selector\">\r\n      <button class=\"cfc-header__language-button\" \r\n        [ngClass]=\"{'cfc-header__language-button--dark': viewMode === headerViewModes.contrast}\"\r\n        (click)=\"toggleLanguageDropdown()\">\r\n        <span>{{ currentLanguageDisplay }}</span>\r\n        <i class=\"fas fa-chevron-down\"></i>\r\n      </button>\r\n      <ul *ngIf=\"languageDropdownOpen\" class=\"cfc-header__language-dropdown\">\r\n        <li *ngFor=\"let lang of languageOptions\" \r\n            (click)=\"selectLanguage(lang.code)\"\r\n            [class.active]=\"lang.code === currentLanguageCode\">\r\n          {{ lang.name || lang.code }}\r\n        </li>\r\n      </ul>\r\n    </div>\r\n\r\n    <cfc-sign-in\r\n      class=\"cfc-header__signin\"\r\n      [label]=\"firstAndLastName\"\r\n      [type]=\"signinTypes.secondary\"\r\n      [mode]=\"signinMode\"\r\n      (onClick)=\"signinEvent.emit()\"\r\n      (onLogout)=\"logoutEvent.emit()\"\r\n    ></cfc-sign-in>\r\n  </div>\r\n</header>\r\n\r\n<div class=\"cfc-header__spacer\"></div>","export enum InputState {\r\n  default = 'default',\r\n  info = 'info',\r\n  warning = 'warning',\r\n  danger = 'danger',\r\n  success = 'success'\r\n}\r\n","export enum InputDensity {\r\n  large = \"large\",\r\n  medium = \"medium\",\r\n  small = \"small\"\r\n}\r\n","import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputState } from '../../enums/input-state.enum';\r\nimport { InputDensity } from '../../enums/input-density.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-input',\r\n  templateUrl: './input.component.html',\r\n  styleUrls: ['./input.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => InputComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class InputComponent implements ControlValueAccessor {\r\n  @Input() disabled = false;\r\n  @Input() buttonAriaLabel = '';\r\n  @Input() formControlName: string | number | null = null;\r\n  @Input() isPassword = false;\r\n  @Input() isHighlight = false;\r\n  @Input() inverted = false;\r\n  @Input() labelInline = false;\r\n  @Input() state: InputState = InputState.default;\r\n  @Input() density: InputDensity = InputDensity.medium;\r\n  @Input() buttonIcon?: string;\r\n  @Input() label?: string;\r\n  @Input() type?: string;\r\n  @Input() placeholder?: string;\r\n  @Input() icon?: string;\r\n\r\n  value: any; // Valor do input\r\n  onChange: (value: any) => void = () => {};\r\n  onTouched: () => void = () => {};\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  onInputChange(event: Event): void {\r\n    const inputValue = (event.target as HTMLInputElement).value;\r\n    this.value = inputValue;\r\n    this.onChange(inputValue);\r\n    this.onTouched();\r\n  }\r\n  inputDensities = InputDensity;\r\n}","<div\r\n  class=\"br-input\"\r\n  [class.input-inline]=\"labelInline\"\r\n  [class.input-button]=\"labelInline\"\r\n  [ngClass]=\"state\">\r\n  <div\r\n    *ngIf=\"label\"\r\n    class=\"input-label\">\r\n    <label\r\n      class=\"text-nowrap\"\r\n      [for]=\"'input-'+(icon ? icon + '-' : '')+density\">\r\n      {{ label }}\r\n    </label>\r\n  </div>\r\n  <div\r\n    class=\"input-content\">\r\n    <div\r\n      class=\"input-group\">\r\n      <div\r\n        *ngIf=\"icon\"\r\n        class=\"input-icon\">\r\n        <i\r\n          [class]=\"'fas fa-' + icon\"\r\n          aria-hidden=\"true\">\r\n        </i>\r\n      </div>\r\n\r\n      <input\r\n        [value]=\"value\"\r\n        (input)=\"onInputChange($event)\"\r\n        [placeholder]=\"placeholder\"\r\n        [disabled]=\"disabled\"\r\n      />\r\n\r\n      <button\r\n        *ngIf=\"buttonIcon\"\r\n        class=\"br-button\"\r\n        type=\"button\"\r\n        [ariaLabel]=\"buttonAriaLabel\">\r\n        <i\r\n          [class]=\"'fa fa-' + buttonIcon\"\r\n          aria-hidden=\"true\">\r\n        </i>\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-list',\r\n  templateUrl: './list.component.html',\r\n  styleUrls: ['./list.component.scss']\r\n})\r\nexport class ListComponent implements OnInit {\r\n  // Propriedades existentes\r\n  @Input() items: any[] = [];\r\n  @Input() title: string = '';\r\n  @Input() headerActions: boolean = false;\r\n  @Input() layout: 'vertical' | 'horizontal' = 'vertical';\r\n  @Input() spacing: 'none' | 'small' | 'medium' | 'large' = 'none';\r\n  @Input() lineHeight: '1' | '2' | '3' = '1';\r\n  @Input() showDividers: boolean = true;\r\n  @Input() grouped: boolean = false;\r\n  @Input() expandable: boolean = true;\r\n  @Input() draggable: boolean = false;\r\n  \r\n  // Novas propriedades para densidade\r\n  @Input() density: 'high' | 'medium' | 'low' = 'medium';\r\n  @Input() flexHeight: boolean = false;\r\n  \r\n  // Eventos\r\n  @Output() itemClick = new EventEmitter<any>();\r\n  @Output() actionClick = new EventEmitter<any>();\r\n  @Output() checkboxChange = new EventEmitter<any>();\r\n  @Output() itemsReordered = new EventEmitter<any[]>();\r\n  \r\n  // Estados internos\r\n  expandedGroups: Set<string | number> = new Set();\r\n  dragItemIndex: number | null = null;\r\n  dragGroupIndex: number | null = null;\r\n  dragGroupItemIndex: number | null = null;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    // Se expandable for falso, todos os grupos começam expandidos\r\n    if (!this.expandable && this.grouped) {\r\n      this.items.forEach(group => {\r\n        if (this.isGroup(group)) {\r\n          this.expandedGroups.add(group.id);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  // Verificar se o item é um grupo\r\n  isGroup(item: any): boolean {\r\n    return item && item.hasOwnProperty('items') && Array.isArray(item.items);\r\n  }\r\n\r\n  // Verificar se um grupo está expandido\r\n  isGroupExpanded(groupId: string | number): boolean {\r\n    return this.expandedGroups.has(groupId);\r\n  }\r\n\r\n  // Alternar a expansão de um grupo\r\n  toggleGroup(groupId: string | number): void {\r\n    if (this.expandedGroups.has(groupId)) {\r\n      this.expandedGroups.delete(groupId);\r\n    } else {\r\n      this.expandedGroups.add(groupId);\r\n    }\r\n  }\r\n\r\n  // Lidar com clique em um item\r\n  onItemClick(item: any): void {\r\n    this.itemClick.emit(item);\r\n  }\r\n\r\n  // Lidar com clique em um botão de ação\r\n  onActionClick(event: Event, item: any): void {\r\n    event.stopPropagation();\r\n    this.actionClick.emit(item);\r\n  }\r\n\r\n  // Lidar com alteração no checkbox\r\n  onCheckboxChange(event: Event, item: any): void {\r\n    event.stopPropagation();\r\n    item.checked = (event.target as HTMLInputElement).checked;\r\n    this.checkboxChange.emit(item);\r\n  }\r\n\r\n  // Métodos para arrastar e soltar (Drag & Drop)\r\n  onDragStart(event: DragEvent, index: number): void {\r\n    this.dragItemIndex = index;\r\n    this.dragGroupIndex = null;\r\n    this.dragGroupItemIndex = null;\r\n    \r\n    if (event.dataTransfer) {\r\n      event.dataTransfer.effectAllowed = 'move';\r\n      event.dataTransfer.setData('text/plain', index.toString());\r\n      \r\n      // Adicionar estilo de arrastar\r\n      const element = event.target as HTMLElement;\r\n      setTimeout(() => {\r\n        element.classList.add('dragging');\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  onGroupItemDragStart(event: DragEvent, groupIndex: number, itemIndex: number): void {\r\n    this.dragGroupIndex = groupIndex;\r\n    this.dragGroupItemIndex = itemIndex;\r\n    this.dragItemIndex = null;\r\n    \r\n    if (event.dataTransfer) {\r\n      event.dataTransfer.effectAllowed = 'move';\r\n      event.dataTransfer.setData('text/plain', `${groupIndex}-${itemIndex}`);\r\n      \r\n      // Adicionar estilo de arrastar\r\n      const element = event.target as HTMLElement;\r\n      setTimeout(() => {\r\n        element.classList.add('dragging');\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  onDragOver(event: DragEvent, index: number): void {\r\n    event.preventDefault();\r\n    const element = event.target as HTMLElement;\r\n    const listItem = element.closest('.list-item');\r\n    \r\n    if (listItem) {\r\n      listItem.classList.add('drag-over');\r\n    }\r\n  }\r\n\r\n  onDragLeave(event: DragEvent): void {\r\n    const element = event.target as HTMLElement;\r\n    const listItem = element.closest('.list-item');\r\n    \r\n    if (listItem) {\r\n      listItem.classList.remove('drag-over');\r\n    }\r\n  }\r\n\r\n  onDrop(event: DragEvent, index: number): void {\r\n    event.preventDefault();\r\n    const element = event.target as HTMLElement;\r\n    const listItem = element.closest('.list-item');\r\n    \r\n    if (listItem) {\r\n      listItem.classList.remove('drag-over');\r\n    }\r\n\r\n    if (this.dragItemIndex !== null && this.dragItemIndex !== index) {\r\n      // Reordenar itens\r\n      const item = this.items[this.dragItemIndex];\r\n      this.items.splice(this.dragItemIndex, 1);\r\n      this.items.splice(index, 0, item);\r\n      \r\n      // Emitir evento de reordenação\r\n      this.itemsReordered.emit([...this.items]);\r\n    }\r\n  }\r\n\r\n  onGroupItemDrop(event: DragEvent, groupIndex: number, itemIndex: number): void {\r\n    event.preventDefault();\r\n    const element = event.target as HTMLElement;\r\n    const listItem = element.closest('.list-item');\r\n    \r\n    if (listItem) {\r\n      listItem.classList.remove('drag-over');\r\n    }\r\n\r\n    if (this.dragGroupIndex !== null && this.dragGroupItemIndex !== null) {\r\n      if (this.dragGroupIndex === groupIndex && this.dragGroupItemIndex !== itemIndex) {\r\n        // Reordenar dentro do mesmo grupo\r\n        const group = this.items[groupIndex] as any;\r\n        const item = group.items[this.dragGroupItemIndex];\r\n        group.items.splice(this.dragGroupItemIndex, 1);\r\n        group.items.splice(itemIndex, 0, item);\r\n      } else if (this.dragGroupIndex !== groupIndex) {\r\n        // Mover entre grupos diferentes\r\n        const sourceGroup = this.items[this.dragGroupIndex] as any;\r\n        const targetGroup = this.items[groupIndex] as any;\r\n        const item = sourceGroup.items[this.dragGroupItemIndex];\r\n        sourceGroup.items.splice(this.dragGroupItemIndex, 1);\r\n        targetGroup.items.splice(itemIndex, 0, item);\r\n      }\r\n      \r\n      // Emitir evento de reordenação\r\n      this.itemsReordered.emit([...this.items]);\r\n    }\r\n  }\r\n\r\n  onDragEnd(event: DragEvent): void {\r\n    const element = event.target as HTMLElement;\r\n    element.classList.remove('dragging');\r\n    \r\n    this.dragItemIndex = null;\r\n    this.dragGroupIndex = null;\r\n    this.dragGroupItemIndex = null;\r\n  }\r\n}","<div class=\"list-container\" [ngClass]=\"{'list-horizontal': layout === 'horizontal'}\">\r\n  <!-- Header (Optional) -->\r\n  <div class=\"list-header\" *ngIf=\"title\">\r\n    <h2 class=\"list-title\">{{ title }}</h2>\r\n    <div class=\"header-actions\" *ngIf=\"headerActions\">\r\n      <button class=\"header-action-button search-button\">\r\n        <cfc-icon [familyName]=\"'fas'\" [iconName]=\"'search'\" size=\"24px\"></cfc-icon>\r\n      </button>\r\n      <button class=\"header-action-button menu-button\">\r\n        <cfc-icon [familyName]=\"'fas'\" [iconName]=\"'ellipsis-v'\" size=\"24px\"></cfc-icon>\r\n      </button>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- List Items Container -->\r\n  <div class=\"list-items\" [ngClass]=\"'spacing-' + spacing\">\r\n    <ng-container *ngIf=\"!grouped; else groupedContent\">\r\n      <!-- Regular List Items -->\r\n      <ng-container *ngFor=\"let item of items; let i = index; let last = last\">\r\n        <div \r\n          class=\"list-item\" \r\n          [ngClass]=\"{\r\n            'line-height-1': lineHeight === '1',\r\n            'line-height-2': lineHeight === '2',\r\n            'line-height-3': lineHeight === '3',\r\n            'item-checked': !isGroup(item) && item.checked,\r\n            'density-high': density === 'high',\r\n            'density-medium': density === 'medium',\r\n            'density-low': density === 'low',\r\n            'flex-height': flexHeight\r\n          }\"\r\n          (click)=\"!isGroup(item) && onItemClick(item)\"\r\n          [draggable]=\"draggable\"\r\n          (dragstart)=\"onDragStart($event, i)\"\r\n          (dragover)=\"onDragOver($event, i)\"\r\n          (dragleave)=\"onDragLeave($event)\"\r\n          (drop)=\"onDrop($event, i)\"\r\n          (dragend)=\"onDragEnd($event)\">\r\n          \r\n          <!-- Visual Support (Optional) -->\r\n          <div class=\"visual-support\" *ngIf=\"!isGroup(item) && (item.icon || item.avatar || item.image || draggable)\">\r\n            <cfc-icon \r\n              *ngIf=\"draggable\"\r\n              [familyName]=\"'fas'\" \r\n              [iconName]=\"'grip-lines'\"\r\n              size=\"16px\"\r\n              color=\"rgba(0, 0, 0, 0.3)\"\r\n              class=\"drag-handle\">\r\n            </cfc-icon>\r\n            <img *ngIf=\"!isGroup(item) && item.avatar\" class=\"avatar\" [src]=\"item.avatar\" alt=\"Avatar\">\r\n            <img *ngIf=\"!isGroup(item) && item.image\" class=\"image\" [src]=\"item.image\" alt=\"Image\">\r\n            <cfc-icon \r\n              *ngIf=\"!isGroup(item) && item.icon\" \r\n              [familyName]=\"item.iconFamily || 'fas'\" \r\n              [iconName]=\"item.icon\"\r\n              size=\"24px\"\r\n              color=\"rgba(0, 0, 0, 0.54)\">\r\n            </cfc-icon>\r\n          </div>\r\n          \r\n          <!-- Main Content (Required) -->\r\n          <div class=\"main-content\" *ngIf=\"!isGroup(item)\">\r\n            <div class=\"subtitle\" *ngIf=\"item.subtitle\">{{ item.subtitle }}</div>\r\n            <div class=\"primary-text\">{{ item.primaryText }}</div>\r\n            <div class=\"secondary-text\" *ngIf=\"item.secondaryText\">{{ item.secondaryText }}</div>\r\n          </div>\r\n          \r\n          <!-- Complementary Support (Optional) -->\r\n          <div class=\"complementary-support\" *ngIf=\"!isGroup(item)\">\r\n            <span class=\"meta\" *ngIf=\"item.meta\">{{ item.meta }}</span>\r\n            \r\n            <input \r\n              *ngIf=\"item.hasOwnProperty('checked')\" \r\n              type=\"checkbox\" \r\n              [checked]=\"item.checked\" \r\n              (change)=\"onCheckboxChange($event, item)\"\r\n              (click)=\"$event.stopPropagation()\">\r\n              \r\n            <button \r\n              *ngIf=\"item.hasAction\" \r\n              class=\"action-button\" \r\n              (click)=\"onActionClick($event, item)\">\r\n              <cfc-icon \r\n                [familyName]=\"item.actionIconFamily || 'fas'\" \r\n                [iconName]=\"item.actionIcon || 'chevron-right'\"\r\n                size=\"24px\"\r\n                color=\"rgba(0, 0, 0, 0.54)\">\r\n              </cfc-icon>\r\n            </button>\r\n          </div>\r\n        </div>\r\n        \r\n        <!-- Divider (Optional) -->\r\n        <div class=\"divider\" *ngIf=\"showDividers && !last\"></div>\r\n      </ng-container>\r\n    </ng-container>\r\n    \r\n    <!-- Grouped Content Template -->\r\n    <ng-template #groupedContent>\r\n      <ng-container *ngFor=\"let group of items; let groupIndex = index; let lastGroup = last\">\r\n        <ng-container *ngIf=\"isGroup(group)\">\r\n          <!-- Group Label -->\r\n          <div class=\"list-group-label\" (click)=\"expandable && toggleGroup(group.id)\">\r\n            <div class=\"group-title\">{{ group.title }}</div>\r\n            <button *ngIf=\"expandable\" class=\"expand-button\">\r\n              <cfc-icon \r\n                [familyName]=\"'fas'\" \r\n                [iconName]=\"isGroupExpanded(group.id) ? 'chevron-up' : 'chevron-down'\"\r\n                size=\"24px\"\r\n                color=\"rgba(0, 0, 0, 0.54)\">\r\n              </cfc-icon>\r\n            </button>\r\n          </div>\r\n          \r\n          <!-- Group Items -->\r\n          <div class=\"group-items\" *ngIf=\"isGroupExpanded(group.id)\">\r\n            <ng-container *ngFor=\"let subItem of group.items; let i = index; let lastItem = last\">\r\n              <div \r\n                class=\"list-item sub-item\" \r\n                [ngClass]=\"{\r\n                  'line-height-1': lineHeight === '1',\r\n                  'line-height-2': lineHeight === '2',\r\n                  'line-height-3': lineHeight === '3',\r\n                  'item-checked': subItem.checked,\r\n                  'density-high': density === 'high',\r\n                  'density-medium': density === 'medium',\r\n                  'density-low': density === 'low',\r\n                  'flex-height': flexHeight\r\n                }\"\r\n                (click)=\"onItemClick(subItem)\"\r\n                [draggable]=\"draggable\"\r\n                (dragstart)=\"onGroupItemDragStart($event, groupIndex, i)\"\r\n                (dragover)=\"onDragOver($event, i)\"\r\n                (dragleave)=\"onDragLeave($event)\"\r\n                (drop)=\"onGroupItemDrop($event, groupIndex, i)\"\r\n                (dragend)=\"onDragEnd($event)\">\r\n                \r\n                <!-- Visual Support -->\r\n                <div class=\"visual-support\" *ngIf=\"subItem.icon || subItem.avatar || subItem.image || draggable\">\r\n                  <cfc-icon \r\n                    *ngIf=\"draggable\"\r\n                    [familyName]=\"'fas'\" \r\n                    [iconName]=\"'grip-lines'\"\r\n                    size=\"16px\"\r\n                    color=\"rgba(0, 0, 0, 0.3)\"\r\n                    class=\"drag-handle\">\r\n                  </cfc-icon>\r\n                  <img *ngIf=\"subItem.avatar\" class=\"avatar\" [src]=\"subItem.avatar\" alt=\"Avatar\">\r\n                  <img *ngIf=\"subItem.image\" class=\"image\" [src]=\"subItem.image\" alt=\"Image\">\r\n                  <cfc-icon \r\n                    *ngIf=\"subItem.icon\" \r\n                    [familyName]=\"subItem.iconFamily || 'fas'\" \r\n                    [iconName]=\"subItem.icon\"\r\n                    size=\"24px\"\r\n                    color=\"rgba(0, 0, 0, 0.54)\">\r\n                  </cfc-icon>\r\n                </div>\r\n                \r\n                <!-- Main Content -->\r\n                <div class=\"main-content\">\r\n                  <div class=\"subtitle\" *ngIf=\"subItem.subtitle\">{{ subItem.subtitle }}</div>\r\n                  <div class=\"primary-text\">{{ subItem.primaryText }}</div>\r\n                  <div class=\"secondary-text\" *ngIf=\"subItem.secondaryText\">{{ subItem.secondaryText }}</div>\r\n                </div>\r\n                \r\n                <!-- Complementary Support -->\r\n                <div class=\"complementary-support\">\r\n                  <span class=\"meta\" *ngIf=\"subItem.meta\">{{ subItem.meta }}</span>\r\n                  \r\n                  <input \r\n                    *ngIf=\"subItem.hasOwnProperty('checked')\" \r\n                    type=\"checkbox\" \r\n                    [checked]=\"subItem.checked\" \r\n                    (change)=\"onCheckboxChange($event, subItem)\"\r\n                    (click)=\"$event.stopPropagation()\">\r\n                    \r\n                  <button \r\n                    *ngIf=\"subItem.hasAction\" \r\n                    class=\"action-button\" \r\n                    (click)=\"onActionClick($event, subItem)\">\r\n                    <cfc-icon \r\n                      [familyName]=\"subItem.actionIconFamily || 'fas'\" \r\n                      [iconName]=\"subItem.actionIcon || 'chevron-right'\"\r\n                      size=\"24px\"\r\n                      color=\"rgba(0, 0, 0, 0.54)\">\r\n                    </cfc-icon>\r\n                  </button>\r\n                </div>\r\n              </div>\r\n              \r\n              <!-- Divider within group -->\r\n              <div class=\"divider\" *ngIf=\"showDividers && !lastItem\"></div>\r\n            </ng-container>\r\n          </div>\r\n          \r\n          <!-- Divider between groups -->\r\n          <div class=\"divider group-divider\" *ngIf=\"!lastGroup\"></div>\r\n        </ng-container>\r\n      </ng-container>\r\n    </ng-template>\r\n  </div>\r\n</div>","export enum LogoViewMode {\r\n  default = \"default\",\r\n  neutral = \"neutral\",\r\n  voluntary = \"voluntary\",\r\n  external = \"external\"\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n} from '@angular/core';\r\n\r\nimport { LogoViewMode } from '../../enums/logo-view-mode.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-logo',\r\n  templateUrl: './logo.component.html',\r\n  styleUrl: './logo.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class LogoComponent {\r\n\r\n  @Input() viewMode: LogoViewMode = LogoViewMode.default;\r\n  @Input() isClickable = false;\r\n  @Input() width?: number;\r\n  @Input() imageUrl?: string;\r\n\r\n  @Output() clickEvent: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  get svgPath(): string {\r\n    switch (this.viewMode) {\r\n      case LogoViewMode.default:\r\n        return '../../../assets/logo-default.svg';\r\n      case LogoViewMode.neutral:\r\n        return '../../../assets/logo-neutral.svg';\r\n      case LogoViewMode.voluntary:\r\n        return '../../../assets/logo-voluntary.svg';\r\n      case LogoViewMode.external:\r\n        if (this.imageUrl) {\r\n          return this.imageUrl;\r\n        } else {\r\n          console.error(`imageUrl must not be empty`);\r\n          return '../../../assets/logo-default.svg';\r\n        }\r\n      default:\r\n        throw new Error(`invalid ViewMode: ${this.viewMode}`);\r\n    }\r\n  }\r\n\r\n  get svgWidth(): string {\r\n    return this.width ? `${this.width}px` : '100%';\r\n  }\r\n\r\n  onClick() {\r\n    if (this.clickEvent) this.clickEvent.emit();\r\n  }\r\n\r\n}\r\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\r\n<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\r\n<img\r\n  alt=\"logo do conselho federal de contabilidade\"\r\n  [src]=\"svgPath\"\r\n  [style.cursor]=\"isClickable ? 'pointer' : 'default'\"\r\n  [style.width]=\"svgWidth\"\r\n  (click)=\"isClickable ? onClick(): undefined\"\r\n>\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\r\n  selector: 'cfc-magic-button',\r\n  templateUrl: './magic-button.component.html',\r\n  styleUrl: './magic-button.component.scss',\r\n})\r\nexport class MagicButtonComponent {\r\n  @Input() label!: string;\r\n  @Input() density?: 'small' | 'medium' | 'large';\r\n  @Input() icon?: string;\r\n  @Input() iconSize?: string;\r\n}\r\n","<div\r\n  class=\"br-magic-button\"\r\n  [ngClass]=\"{\r\n    small: density === 'small',\r\n    medium: density === 'medium',\r\n    large: density === 'large'\r\n  }\"\r\n>\r\n  <button class=\"br-button\" [ngClass]=\"{ circle: icon }\" type=\"button\">\r\n    {{ label }}\r\n    <cfc-icon *ngIf=\"icon\" [iconName]=\"icon\" [size]=\"iconSize\"></cfc-icon>\r\n  </button>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\r\n\r\n// Interface para os subitens\r\nexport interface SubMenuItem {\r\n  id: number;\r\n  name: string;\r\n  toggle?: boolean; // Controla a exibição do submenu\r\n  iconName?: string; // Ícone opcional\r\n  subItems?: SubMenuItem[]; // Lista de subitens\r\n}\r\n\r\n// Interface para os itens principais\r\nexport interface MenuItem {\r\n  id: number;\r\n  name: string;\r\n  toggle?: boolean; // Controla a exibição do submenu\r\n  iconName?: string; // Ícone opcional\r\n  subItems?: SubMenuItem[]; // Lista de subitens\r\n}\r\n\r\n@Component({\r\n  selector: 'cfc-menu',\r\n  templateUrl: './menu.component.html',\r\n  styleUrls: ['./menu.component.scss'],\r\n})\r\nexport class MenuComponent {\r\n  @Input() menuItems: MenuItem[] = [];\r\n  @Input() closeOnOutsideClick: boolean = false;\r\n  @Output() itemSelected = new EventEmitter<SubMenuItem>();\r\n  @Output() menuToggle = new EventEmitter<boolean>();\r\n\r\n  showMenuItems = false;\r\n  navigatedHistory: SubMenuItem[] = [];\r\n\r\n  toggleMenu() {\r\n    this.showMenuItems = !this.showMenuItems;\r\n    if (!this.showMenuItems) {\r\n      this.menuItems.forEach((item) => (item.toggle = false));\r\n      this.navigatedHistory = [];\r\n    }\r\n  }\r\n\r\n  resetMenuState() {\r\n    this.menuItems.forEach((item) => (item.toggle = false));\r\n    this.navigatedHistory = [];\r\n    this.showMenuItems = false;\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: MouseEvent) {\r\n    if (this.closeOnOutsideClick && this.showMenuItems) {\r\n      const clickedElement = event.target as HTMLElement;\r\n      const menuElement = document.querySelector('.menu-container');\r\n  \r\n      // Adicionar verificação explícita para null\r\n      if (menuElement && !menuElement.contains(clickedElement)) {\r\n        this.showMenuItems = false;\r\n        this.menuToggle.emit(this.showMenuItems); // Emite o estado atualizado\r\n        this.resetMenuState();\r\n      }\r\n    }\r\n  }\r\n\r\n  expandItem(item: MenuItem) {\r\n    item.toggle = !item.toggle;\r\n  }\r\n\r\n  navigateToSubMenu(subItem: SubMenuItem) {\r\n    this.navigatedHistory.push(subItem);\r\n  }\r\n\r\n  goBack() {\r\n    if (this.navigatedHistory.length > 1) {\r\n      this.navigatedHistory.pop();\r\n    } else {\r\n      this.navigatedHistory = [];\r\n    }\r\n  }\r\n\r\n  selectSubItem(item: SubMenuItem) {\r\n    this.itemSelected.emit(item);\r\n    console.log(`Subitem selected: ${item.name}`);\r\n  }\r\n\r\n  get currentNavigatedItem(): SubMenuItem | null {\r\n    return this.navigatedHistory[this.navigatedHistory.length - 1] || null;\r\n  }\r\n}","<div class=\"menu-container\">\r\n  <!-- Modo Principal (Expansão) -->\r\n  <div *ngIf=\"navigatedHistory.length === 0\">\r\n    <!-- Cabeçalho do Menu -->\r\n    <div class=\"menu-header\">\r\n      <button class=\"menu-toggle\" (click)=\"toggleMenu()\">\r\n        <i class=\"fas fa-bars\"></i>\r\n      </button>\r\n    </div>\r\n\r\n    <!-- Lista Principal de Itens -->\r\n    <ul class=\"menu-list\" *ngIf=\"showMenuItems\">\r\n      <li *ngFor=\"let item of menuItems\" class=\"menu-item\">\r\n        <div class=\"menu-item-header\" (click)=\"expandItem(item)\">\r\n          <i *ngIf=\"item.iconName\" class=\"fas\" [ngClass]=\"item.iconName\"></i>\r\n          <span>{{ item.name }}</span>\r\n          <i *ngIf=\"item.subItems\" class=\"fas fa-chevron-down\" [ngClass]=\"{'rotated': item.toggle}\"></i>\r\n        </div>\r\n\r\n        <!-- Submenu (Expansão) -->\r\n        <ul *ngIf=\"item.toggle && item.subItems\" class=\"sub-menu\">\r\n          <li *ngFor=\"let subItem of item.subItems\" class=\"submenu-item\">\r\n            <div class=\"submenu-item-header\" (click)=\"navigateToSubMenu(subItem)\">\r\n              <i *ngIf=\"subItem.iconName\" class=\"fas\" [ngClass]=\"subItem.iconName\"></i>\r\n              <span>{{ subItem.name }}</span>\r\n              <i *ngIf=\"subItem.subItems\" class=\"fas fa-chevron-right\"></i>\r\n            </div>\r\n          </li>\r\n        </ul>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n\r\n  <!-- Modo de Navegação -->\r\n  <div *ngIf=\"currentNavigatedItem\" class=\"navigation-mode\">\r\n    <!-- Cabeçalho da Navegação -->\r\n    <div class=\"navigation-header\">\r\n      <button class=\"back-button\" (click)=\"goBack()\">\r\n        <i class=\"fas fa-chevron-left\"></i>\r\n      </button>\r\n      <span class=\"navigation-title\">{{ currentNavigatedItem.name }}</span>\r\n      <i *ngIf=\"currentNavigatedItem.iconName\" class=\"navigation-icon fas\" [ngClass]=\"currentNavigatedItem.iconName\"></i>\r\n    </div>\r\n\r\n    <!-- Lista de SubItens Navegados -->\r\n    <ul class=\"navigation-list\">\r\n      <li *ngFor=\"let subSubItem of currentNavigatedItem.subItems\" class=\"navigation-item\">\r\n        <div class=\"navigation-item-inner\" (click)=\"navigateToSubMenu(subSubItem)\">\r\n          <i *ngIf=\"subSubItem.iconName\" class=\"fas\" [ngClass]=\"subSubItem.iconName\"></i>\r\n          <span>{{ subSubItem.name }}</span>\r\n          <i *ngIf=\"subSubItem.subItems\" class=\"fas fa-chevron-right\"></i>\r\n        </div>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</div>","export enum MessageState {\r\n  danger = \"danger\",\r\n  success = \"success\",\r\n  info = \"info\",\r\n  warning = \"warning\"\r\n}\r\n","export enum MessageType {\r\n  alert = \"alert\",\r\n  feedback = \"feedback\"\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  HostBinding,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ElementRef,\r\n} from '@angular/core';\r\nimport { MessageState } from '../../enums/message-state.enum';\r\nimport { MessageType } from '../../enums/message-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-message',\r\n  templateUrl: './message.component.html',\r\n  styleUrl: './message.component.scss'\r\n})\r\nexport class MessageComponent implements OnInit, OnChanges {\r\n\r\n  @Input() message!: string;\r\n  @Input() description?: string;\r\n  @Input() state: MessageState = MessageState.warning;\r\n  @Input() type: MessageType = MessageType.alert;\r\n  @Input() horizontalPosition: 'left' | 'center' | 'right' = 'right';\r\n  @Input() verticalPosition: 'top' | 'center' | 'bottom' = 'top';\r\n  @Input() verticalOffset: string = '0.1rem';\r\n  @Input() horizontalOffset: string = '0.1rem';\r\n  @Input() displayTime: number = 5000;\r\n  @Input() isTemporary?: boolean;\r\n\r\n  @HostBinding('style.position') position = 'fixed';\r\n\r\n  @HostBinding('style.zIndex') zIndex = 1000;\r\n\r\n  @HostBinding('style.display') display = 'none';\r\n\r\n  @HostBinding('style.top')\r\n  get topPosition(): string | null {\r\n    return this.verticalPosition === 'top' ? this.verticalOffset : null;\r\n  }\r\n\r\n  @HostBinding('style.bottom')\r\n  get bottomPosition(): string | null {\r\n    return this.verticalPosition === 'bottom' ? this.verticalOffset : null;\r\n  }\r\n\r\n  @HostBinding('style.left')\r\n  get leftPosition(): string | null {\r\n    return this.horizontalPosition === 'left' ? this.horizontalOffset : null;\r\n  }\r\n\r\n  @HostBinding('style.right')\r\n  get rightPosition(): string | null {\r\n    return this.horizontalPosition === 'right' ? this.horizontalOffset : null;\r\n  }\r\n\r\n  isVisible: boolean = false;\r\n  readonly messageTypes: typeof MessageType = MessageType;\r\n  private closeTimeoutId: any;\r\n\r\n  ngOnInit(): void {\r\n    if (this.isTemporary === undefined) {\r\n      this.isTemporary = this.type === this.messageTypes.feedback;\r\n    }\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['type']) {\r\n      if (this.type === this.messageTypes.alert) {\r\n        this.elementRef.nativeElement.style.width = '100%';\r\n      } else {\r\n        this.elementRef.nativeElement.style.width = 'auto';\r\n      }\r\n    }\r\n  }\r\n\r\n  get icon(): string {\r\n    switch (this.state) {\r\n      case MessageState.danger:\r\n        return 'fas fa-times-circle';\r\n      case MessageState.info:\r\n        return 'fas fa-info-circle';\r\n      case MessageState.success:\r\n        return 'fas fa-check-circle';\r\n      default:\r\n        return 'fas fa-exclamation-triangle';\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Método público para abrir a mensagem.\r\n   * Reinicia o temporizador de fechamento caso a mensagem seja temporária.\r\n   */\r\n  openMessage(): void {\r\n    this.isVisible = true;\r\n    this.display = 'flex';\r\n\r\n    if (this.isTemporary) {\r\n      this.restartCloseTimer();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Método público para fechar a mensagem manualmente.\r\n   */\r\n  closeMessage(): void {\r\n    this.isVisible = false;\r\n\r\n    if (this.isTemporary) {\r\n      clearTimeout(this.closeTimeoutId);\r\n    }\r\n\r\n    setTimeout(() => this.display = 'none', 200);\r\n  }\r\n\r\n  private restartCloseTimer(): void {\r\n    clearTimeout(this.closeTimeoutId);\r\n    this.closeTimeoutId = setTimeout(() => {\r\n      this.closeMessage();\r\n    }, this.displayTime);\r\n  }\r\n}\r\n","<ng-container *ngIf=\"isTemporary || isVisible\">\r\n  <ng-container *ngIf=\"type === messageTypes.alert; else feedback\">\r\n    <div\r\n      class=\"br-message message-container\"\r\n      style=\"width: 100%;\"\r\n      [class.fade-out]=\"!isVisible\"\r\n      [ngClass]=\"state\">\r\n      <div\r\n        class=\"icon\">\r\n        <i\r\n          [ngClass]=\"icon\"\r\n          aria-hidden=\"true\">\r\n        </i>\r\n      </div>\r\n      <div\r\n        class=\"content\"\r\n        [ariaLabel]=\"message + ' ' + description\"\r\n        role=\"alert\">\r\n        <span\r\n          class=\"message-title\">\r\n          {{ message }}\r\n        </span>\r\n        <span\r\n          *ngIf=\"description\"\r\n          class=\"message-body\">\r\n          {{ description }}\r\n        </span>\r\n      </div>\r\n      <div class=\"close\">\r\n        <button\r\n          class=\"br-button circle small\"\r\n          type=\"button\"\r\n          aria-label=\"Fechar a messagem alterta\"\r\n          (click)=\"closeMessage()\"\r\n        >\r\n          <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n\r\n  <ng-template #feedback>\r\n    <div\r\n      class=\"message-container mb-3\"\r\n      [class.fade-out]=\"!isVisible\">\r\n      <span\r\n        class=\"feedback\"\r\n        [ngClass]=\"state\"\r\n        role=\"alert\">\r\n        <i\r\n          [ngClass]=\"icon\"\r\n          aria-hidden=\"true\">\r\n        </i>\r\n        {{ message }}\r\n      </span>\r\n    </div>\r\n  </ng-template>\r\n</ng-container>\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ModalDensity } from '../../enums/modal-density.enum';\r\nimport { ButtonType } from '../../enums/button-type.enum';\r\nimport { ModalType } from '../../enums/modal-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-modal',\r\n  templateUrl: './modal.component.html',\r\n  styleUrl: './modal.component.scss'\r\n})\r\nexport class ModalComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n  @Input() isOpen: boolean = false;\r\n  @Input() title?: string;\r\n  @Input() primaryButtonLabel?: string;\r\n  @Input() secondaryButtonLabel?: string;\r\n  @Input() hasCloseButton: boolean = true;\r\n  @Input() closeOnOverlayClick: boolean = true;\r\n  @Input() isLoading: boolean = false;\r\n  @Input() autoCloseTimeout?: number;\r\n  @Input() maxWidth: string = '480px';\r\n  @Input() alignButtons: 'right' | 'center' = 'right';\r\n  @Input() singleButtonCenter: boolean = true;\r\n\r\n  @Output() close = new EventEmitter<void>();\r\n  @Output() primaryClick = new EventEmitter<void>();\r\n  @Output() secondaryClick = new EventEmitter<void>();\r\n\r\n  @ViewChild('modalTitle') titleElement?: ElementRef;\r\n  @ViewChild('modalContainer') modalContainer?: ElementRef;\r\n\r\n  isTitleOverflowing: boolean = false;\r\n  fullTitle: string = '';\r\n  autoCloseTimer?: any;\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngOnInit(): void {\r\n    if (this.isOpen && this.autoCloseTimeout) {\r\n      this.startAutoCloseTimer();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['isOpen'] && changes['isOpen'].currentValue) {\r\n      document.body.style.overflow = 'hidden';\r\n      \r\n      if (this.autoCloseTimeout) {\r\n        this.startAutoCloseTimer();\r\n      }\r\n      \r\n      // Adiciona listener para a tecla ESC\r\n      document.addEventListener('keydown', this.handleEscKey);\r\n    } else if (changes['isOpen'] && !changes['isOpen'].currentValue) {\r\n      document.body.style.overflow = 'auto';\r\n      this.clearAutoCloseTimer();\r\n      document.removeEventListener('keydown', this.handleEscKey);\r\n    }\r\n\r\n    // Verifica o título quando ele mudar\r\n    if (changes['title'] && this.titleElement) {\r\n      this.checkTitleOverflow();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.title && this.titleElement) {\r\n      this.checkTitleOverflow();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    document.body.style.overflow = 'auto';\r\n    this.clearAutoCloseTimer();\r\n    document.removeEventListener('keydown', this.handleEscKey);\r\n  }\r\n\r\n  handleEscKey = (event: KeyboardEvent): void => {\r\n    if (event.key === 'Escape' && this.isOpen) {\r\n      this.onClose();\r\n    }\r\n  };\r\n\r\n  onOverlayClick(event: MouseEvent): void {\r\n    if (this.closeOnOverlayClick && \r\n        this.modalContainer && \r\n        !this.modalContainer.nativeElement.contains(event.target)) {\r\n      this.onClose();\r\n    }\r\n  }\r\n\r\n  onClose(): void {\r\n    this.close.emit();\r\n  }\r\n\r\n  onPrimaryClick(): void {\r\n    this.primaryClick.emit();\r\n  }\r\n\r\n  onSecondaryClick(): void {\r\n    if (this.secondaryClick.observers.length) {\r\n      this.secondaryClick.emit();\r\n    } else {\r\n      this.onClose();\r\n    }\r\n  }\r\n\r\n  getButtonsClass(): string {\r\n    if (this.secondaryButtonLabel && this.primaryButtonLabel) {\r\n      return this.alignButtons === 'right' ? 'modal-buttons-right' : 'modal-buttons-center';\r\n    }\r\n    return this.singleButtonCenter ? 'modal-buttons-center' : 'modal-buttons-right';\r\n  }\r\n\r\n  private checkTitleOverflow(): void {\r\n    if (!this.titleElement) return;\r\n    \r\n    const element = this.titleElement.nativeElement;\r\n    this.fullTitle = this.title || '';\r\n    \r\n    // Resetar o conteúdo para o título original para verificar o overflow\r\n    element.textContent = this.fullTitle;\r\n    \r\n    if (element.scrollHeight > element.clientHeight || \r\n        element.scrollWidth > element.clientWidth) {\r\n      this.isTitleOverflowing = true;\r\n      \r\n      // Truncar o título e adicionar reticências\r\n      const words = this.fullTitle.split(' ');\r\n      let truncatedTitle = '';\r\n      let i = 0;\r\n      \r\n      while (i < words.length) {\r\n        const testTitle = truncatedTitle + ' ' + words[i];\r\n        element.textContent = testTitle + '...';\r\n        \r\n        if (element.scrollHeight > element.clientHeight || \r\n            element.scrollWidth > element.clientWidth) {\r\n          break;\r\n        }\r\n        \r\n        truncatedTitle = testTitle;\r\n        i++;\r\n      }\r\n      \r\n      element.textContent = truncatedTitle.trim() + '...';\r\n    } else {\r\n      this.isTitleOverflowing = false;\r\n    }\r\n  }\r\n\r\n  private startAutoCloseTimer(): void {\r\n    if (this.autoCloseTimeout) {\r\n      this.clearAutoCloseTimer();\r\n      this.autoCloseTimer = setTimeout(() => {\r\n        this.onClose();\r\n      }, this.autoCloseTimeout);\r\n    }\r\n  }\r\n\r\n  private clearAutoCloseTimer(): void {\r\n    if (this.autoCloseTimer) {\r\n      clearTimeout(this.autoCloseTimer);\r\n    }\r\n  }\r\n}\r\n","<!-- modal.component.html -->\r\n<div class=\"modal-overlay\" *ngIf=\"isOpen\" (click)=\"onOverlayClick($event)\">\r\n  <div class=\"modal-container\" #modalContainer [style.maxWidth]=\"maxWidth\">\r\n    <div class=\"modal-header\" *ngIf=\"title\">\r\n      <h3 class=\"modal-title\" \r\n          #modalTitle \r\n          [attr.title]=\"isTitleOverflowing ? fullTitle : null\">\r\n        <!-- O conteúdo será gerenciado pelo componente TypeScript -->\r\n      </h3>\r\n      <button *ngIf=\"hasCloseButton\"\r\n              type=\"button\"\r\n              class=\"modal-close\"\r\n              (click)=\"onClose()\"\r\n              aria-label=\"Fechar\">\r\n        ×\r\n      </button>\r\n    </div>\r\n    \r\n    <div class=\"modal-content\">\r\n      <div *ngIf=\"isLoading\" class=\"modal-loading\">\r\n        <div class=\"modal-spinner\"></div>\r\n        <p>Carregando...</p>\r\n        <button class=\"modal-button modal-button-secondary\" (click)=\"onClose()\">\r\n          Cancelar\r\n        </button>\r\n      </div>\r\n      <ng-container *ngIf=\"!isLoading\">\r\n        <ng-content></ng-content>\r\n        \r\n        <div *ngIf=\"primaryButtonLabel || secondaryButtonLabel\" \r\n             class=\"modal-buttons\" \r\n             [ngClass]=\"getButtonsClass()\">\r\n          <button *ngIf=\"secondaryButtonLabel\"\r\n                  type=\"button\"\r\n                  class=\"modal-button modal-button-secondary\"\r\n                  (click)=\"onSecondaryClick()\">\r\n            {{secondaryButtonLabel}}\r\n          </button>\r\n          <button *ngIf=\"primaryButtonLabel\"\r\n                  type=\"button\"\r\n                  class=\"modal-button modal-button-primary\"\r\n                  (click)=\"onPrimaryClick()\">\r\n            {{primaryButtonLabel}}\r\n          </button>\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</div>","// tab-item.component.ts\r\nimport { Component, Input, ElementRef, HostBinding, HostListener, Optional, Inject, forwardRef } from '@angular/core';\r\nimport { TabComponent } from '../tab/tab.component'; // Ajuste o caminho de importação conforme necessário\r\n\r\n@Component({\r\n  selector: 'cfc-tab-item',\r\n  templateUrl: './tab-item.component.html',\r\n  styleUrls: ['./tab-item.component.scss']\r\n})\r\nexport class TabItemComponent {\r\n  @Input() label: string = '';\r\n  @Input() icon: string = '';\r\n  @Input() counter: number | undefined;\r\n  @Input() id: string = '';\r\n  @Input() @HostBinding('class.active') active: boolean = false;\r\n  @Input() @HostBinding('class.disabled') disabled: boolean = false;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    @Optional() @Inject(forwardRef(() => TabComponent)) private tabComponent: TabComponent\r\n  ) {}\r\n\r\n  @HostListener('click')\r\n  onClick() {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n\r\n    if (!this.tabComponent) {\r\n      console.warn('TabItemComponent: TabComponent parent not found');\r\n      return;\r\n    }\r\n    \r\n    // Encontrar o índice deste item\r\n    const parent = this.el.nativeElement.parentElement;\r\n    if (!parent) return;\r\n    \r\n    const items = Array.from(parent.querySelectorAll('cfc-tab-item'));\r\n    const index = items.indexOf(this.el.nativeElement);\r\n    \r\n    if (index !== -1) {\r\n      this.tabComponent.selectTab(index);\r\n    }\r\n  }\r\n}","<!-- tab-item/tab-item.component.html -->\r\n<div class=\"tab-item\" \r\n     role=\"tab\" \r\n     [attr.aria-selected]=\"active\" \r\n     [attr.aria-disabled]=\"disabled\" \r\n     [attr.id]=\"id\">\r\n  <div class=\"tab-item-content\" \r\n       [class.vertical-layout]=\"icon && label\" \r\n       [attr.data-tooltip]=\"!label && icon ? label : null\">\r\n    <i *ngIf=\"icon\" class=\"tab-item-icon\" [class]=\"icon\"></i>\r\n    <span *ngIf=\"label\" class=\"tab-item-label\">{{label}}</span>\r\n  </div>\r\n  <span *ngIf=\"counter !== undefined\" class=\"tab-item-counter\">({{counter}})</span>\r\n</div>","// tab-content.component.ts\r\nimport { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-tab-content',\r\n  template: `<div class=\"tab-content\" [class.active]=\"active\"><ng-content></ng-content></div>`,\r\n  styles: [`\r\n    .tab-content {\r\n      display: none;\r\n      padding: 15px 0;\r\n    }\r\n    .tab-content.active {\r\n      display: block;\r\n    }\r\n  `]\r\n})\r\nexport class TabContentComponent {\r\n  @Input() @HostBinding('class.active') active: boolean = false;\r\n}","// tab.component.ts\r\nimport { Component, ContentChildren, QueryList, AfterContentInit, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { TabItemComponent } from '../tabItem/tab-item.component';\r\nimport { TabContentComponent } from '../tabContent/tab-content.component';\r\n\r\n// Definição do tipo para densidade\r\nexport type TabDensity = 'low' | 'default' | 'high';\r\n\r\n@Component({\r\n  selector: 'cfc-tab',\r\n  templateUrl: './tab.component.html',\r\n  styleUrls: ['./tab.component.scss']\r\n})\r\nexport class TabComponent implements AfterContentInit {\r\n  @ContentChildren(TabItemComponent) tabItems!: QueryList<TabItemComponent>;\r\n  @ContentChildren(TabContentComponent) tabContents!: QueryList<TabContentComponent>;\r\n  @ViewChild('tabList', { static: false }) tabList: ElementRef | undefined;\r\n  \r\n  // Nova propriedade para controlar a densidade\r\n  @Input() density: TabDensity = 'default';\r\n  \r\n  // Nova propriedade para controlar o alinhamento da lista de tabs\r\n  @Input() tabAlignment: 'left' | 'center' | 'right' = 'left';\r\n\r\n  activeTabIndex: number = 0;\r\n  showLeftShadow: boolean = false;\r\n  showRightShadow: boolean = false;\r\n\r\n  ngAfterContentInit() {\r\n    // Inicializar a primeira tab como ativa\r\n    if (this.tabItems.length > 0) {\r\n      this.selectTab(0);\r\n    }\r\n\r\n    setTimeout(() => {\r\n      // Verificar se precisamos exibir sombras de scroll após o conteúdo ser renderizado\r\n      this.checkScrollShadows();\r\n    });\r\n  }\r\n\r\n  selectTab(index: number) {\r\n    // Desativar todas as tabs\r\n    this.tabItems.forEach(item => item.active = false);\r\n    \r\n    // Ativar a tab selecionada\r\n    const selectedItem = this.tabItems.toArray()[index];\r\n    if (selectedItem) {\r\n      selectedItem.active = true;\r\n    }\r\n\r\n    // Esconder todos os conteúdos\r\n    this.tabContents.forEach(content => content.active = false);\r\n    \r\n    // Mostrar o conteúdo selecionado\r\n    const selectedContent = this.tabContents.toArray()[index];\r\n    if (selectedContent) {\r\n      selectedContent.active = true;\r\n    }\r\n\r\n    this.activeTabIndex = index;\r\n  }\r\n\r\n  scrollLeft() {\r\n    if (this.tabList) {\r\n      this.tabList.nativeElement.scrollBy({ left: -100, behavior: 'smooth' });\r\n    }\r\n  }\r\n\r\n  scrollRight() {\r\n    if (this.tabList) {\r\n      this.tabList.nativeElement.scrollBy({ left: 100, behavior: 'smooth' });\r\n    }\r\n  }\r\n\r\n  checkScrollShadows() {\r\n    if (!this.tabList) return;\r\n    \r\n    const element = this.tabList.nativeElement;\r\n    this.showLeftShadow = element.scrollLeft > 0;\r\n    this.showRightShadow = element.scrollWidth > element.clientWidth + element.scrollLeft;\r\n  }\r\n}","<!-- tab.component.html -->\r\n<div class=\"ds-tab-container\" [class]=\"'ds-tab-density-' + density\">\r\n  <div class=\"ds-tab-surface\">\r\n    <div class=\"ds-tab-list-container\" \r\n         [class.show-left-shadow]=\"showLeftShadow\"\r\n         [class.show-right-shadow]=\"showRightShadow\"\r\n         [class]=\"'ds-tab-align-' + tabAlignment\">\r\n      <button *ngIf=\"showLeftShadow\" \r\n              class=\"ds-tab-scroll-button ds-tab-scroll-left\" \r\n              (click)=\"scrollLeft()\" \r\n              aria-label=\"Rolar para esquerda\">\r\n        <span class=\"ds-tab-scroll-icon\">&#10094;</span>\r\n      </button>\r\n      \r\n      <div #tabList \r\n           class=\"ds-tab-list\" \r\n           role=\"tablist\" \r\n           tabindex=\"0\" \r\n           (scroll)=\"checkScrollShadows()\">\r\n        <ng-content select=\"cfc-tab-item\"></ng-content>\r\n      </div>\r\n      \r\n      <button *ngIf=\"showRightShadow\" \r\n              class=\"ds-tab-scroll-button ds-tab-scroll-right\" \r\n              (click)=\"scrollRight()\" \r\n              aria-label=\"Rolar para direita\">\r\n        <span class=\"ds-tab-scroll-icon\">&#10095;</span>\r\n      </button>\r\n    </div>\r\n    <div class=\"ds-tab-divider\"></div>\r\n  </div>\r\n  \r\n  <div class=\"ds-tab-content-container\">\r\n    <ng-content select=\"cfc-tab-content\"></ng-content>\r\n  </div>\r\n</div>","import { Component, Input, OnInit, ElementRef, HostListener, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { NotificationItem } from '../../models/notification-item.model';\r\nimport { TabItem } from '../../models/tab-item.model';\r\n\r\n@Component({\r\n  selector: 'cfc-notification',\r\n  templateUrl: './notification.component.html',\r\n  styleUrls: ['./notification.component.scss']\r\n})\r\nexport class NotificationComponent implements OnInit, AfterViewInit {\r\n  @Input() userName: string = '';\r\n  @Input() userEmail: string = '';\r\n  @Input() notifications: NotificationItem[] = [];\r\n  @Input() tabs: TabItem[] = [];\r\n  @Input() showUserArea: boolean = true;\r\n  @Input() showCloseButton: boolean = true;\r\n  @Input() isOpen: boolean = false;\r\n  @Input() maxHeight: string = '60vh';\r\n  @Input() showTabs: boolean = true;\r\n\r\n  @ViewChild('cfcTabRef') cfcTabRef: any;\r\n\r\n  // Para categorizar as notificações por tab\r\n  notificationsByTab: NotificationItem[][] = [];\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngOnInit(): void {\r\n    // Organiza as notificações por categoria (tab)\r\n    this.organizeNotificationsByTab();\r\n\r\n    // Atualiza os contadores de cada tab\r\n    this.updateTabCounters();\r\n\r\n    // Define o primeiro tab como ativo, caso exista\r\n    if (this.tabs && this.tabs.length > 0) {\r\n      this.tabs[0].active = true;\r\n    }\r\n\r\n    this.notifications.forEach(notification => {\r\n      if (notification.isRead === undefined) {\r\n        notification.isRead = false;\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      this.selectFirstTab();\r\n    });\r\n  }\r\n\r\n  private selectFirstTab(): void {\r\n    const tabElement = this.elementRef.nativeElement.querySelector('cfc-tab');\r\n\r\n    if (tabElement) {\r\n      const firstTabItem = tabElement.querySelector('cfc-tab-item');\r\n\r\n      if (firstTabItem) {\r\n        // Simula um clique no primeiro tab-item\r\n        firstTabItem.click();\r\n      }\r\n    }\r\n  }\r\n\r\n  organizeNotificationsByTab(): void {\r\n    if (!this.notifications) {\r\n      this.notificationsByTab = [];\r\n      return;\r\n    }\r\n\r\n    if (this.tabs && this.tabs.length) {\r\n      this.notificationsByTab = this.tabs.map(tab => {\r\n        // Se não houver categoria definida, coloca todas no primeiro tab\r\n        if (!this.notifications.some(n => n.category)) {\r\n          return tab.label.toLowerCase() === this.tabs[0].label.toLowerCase()\r\n            ? [...this.notifications]\r\n            : [];\r\n        }\r\n\r\n        return this.notifications.filter(notification =>\r\n          notification.category?.toLowerCase() === tab.label.toLowerCase());\r\n      });\r\n    } else {\r\n      // Se não houver tabs, coloca todas as notificações no primeiro grupo\r\n      this.notificationsByTab = [this.notifications];\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Atualiza os contadores de cada tab\r\n   */\r\n  updateTabCounters(): void {\r\n    if (this.tabs && this.tabs.length && this.notificationsByTab.length) {\r\n      this.tabs.forEach((tab, index) => {\r\n        if (index < this.notificationsByTab.length) {\r\n          // Conta apenas notificações não lidas\r\n          tab.counter = this.notificationsByTab[index].filter(n => n.isNew).length;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Fecha o notification quando o usuário clica fora dele\r\n   */\r\n  @HostListener('document:click', ['$event'])\r\n  clickOutside(event: Event): void {\r\n    if (!this.elementRef.nativeElement.contains(event.target) && this.isOpen) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Fecha o notification\r\n   */\r\n  close(): void {\r\n    this.isOpen = false;\r\n  }\r\n\r\n  /**\r\n   * Marca uma notificação como lida\r\n   */\r\n  markAsRead(notification: NotificationItem): void {\r\n    notification.isNew = false;\r\n    notification.isRead = true;\r\n    this.updateTabCounters();\r\n  }\r\n}\r\n","<!-- notification.component.html -->\r\n<div class=\"cfc-notification-container\" [class.is-open]=\"isOpen\">\r\n  <div class=\"cfc-notification-surface\">\r\n    <!-- Área do usuário (1) - Opcional -->\r\n    <div class=\"cfc-notification-user-area\" *ngIf=\"showUserArea\">\r\n      <div class=\"user-info\">\r\n        <h3 class=\"user-name\">{{ userName }}</h3>\r\n        <p class=\"user-email\">{{ userEmail }}</p>\r\n      </div>\r\n\r\n      <!-- Botão Fechar (2) - Opcional -->\r\n      <button *ngIf=\"showCloseButton\"\r\n              class=\"cfc-notification-close-button\"\r\n              (click)=\"close()\"\r\n              aria-label=\"Fechar notificações\">\r\n        <span class=\"close-icon\">✕</span>\r\n      </button>\r\n    </div>\r\n\r\n    <!-- Componente Divider (5) -->\r\n    <div class=\"cfc-divider\" *ngIf=\"showUserArea\"></div>\r\n\r\n    <!-- Usando o componente cfc-tab -->\r\n    <cfc-tab #cfcTabRef *ngIf=\"showTabs && tabs && tabs.length\" density=\"default\" tabAlignment=\"center\" >\r\n      <!-- Cria os tab-items dinâmicos baseados nos tabs fornecidos -->\r\n      <cfc-tab-item *ngFor=\"let tab of tabs\"\r\n                    [label]=\"tab.label\"\r\n                    [icon]=\"tab.icon\">\r\n      </cfc-tab-item>\r\n\r\n      <!-- Cria os tab-contents correspondentes -->\r\n      <cfc-tab-content *ngFor=\"let tabNotifications of notificationsByTab; let i = index\">\r\n        <div class=\"cfc-notification-items\" [style.max-height]=\"maxHeight\">\r\n          <!-- Lista de notificações -->\r\n          <div *ngFor=\"let notification of tabNotifications\"\r\n               class=\"cfc-notification-item\"\r\n               [class.is-new]=\"notification.isNew\"\r\n               [class.is-read]=\"notification.isRead\"\r\n               (click)=\"markAsRead(notification)\">\r\n\r\n            <!-- Tag de Status (opcional) -->\r\n            <div *ngIf=\"notification.isNew\" class=\"notification-tag\">\r\n              <span class=\"tag-indicator\" [style.background-color]=\"notification.tagColor || '#FFD100'\"></span>\r\n              <span class=\"tag-label\">Novo</span>\r\n            </div>\r\n\r\n            <!-- Título da Notificação -->\r\n            <h4 class=\"notification-title\">{{ notification.title }}</h4>\r\n\r\n            <!-- Conteúdo -->\r\n            <p class=\"notification-content\">{{ notification.content }}</p>\r\n\r\n            <!-- Componente Divider (5) -->\r\n            <div class=\"cfc-divider\"></div>\r\n          </div>\r\n\r\n          <!-- Mensagem para nenhuma notificação -->\r\n          <div *ngIf=\"!tabNotifications || tabNotifications.length === 0\" class=\"no-notifications\">\r\n            <p>Nenhuma notificação disponível.</p>\r\n          </div>\r\n        </div>\r\n      </cfc-tab-content>\r\n    </cfc-tab>\r\n\r\n    <!-- Quando não há tabs, exibe todas as notificações -->\r\n    <div *ngIf=\"!showTabs || !tabs || !tabs.length\" class=\"cfc-notification-items-container\">\r\n      <div class=\"cfc-notification-items\" [style.max-height]=\"maxHeight\">\r\n        <!-- Lista de notificações -->\r\n        <div *ngFor=\"let notification of notifications\"\r\n             class=\"cfc-notification-item\"\r\n             [class.is-new]=\"notification.isNew\"\r\n             [class.is-read]=\"notification.isRead\"\r\n             (click)=\"markAsRead(notification)\">\r\n\r\n          <!-- Tag de Status (opcional) -->\r\n          <div *ngIf=\"notification.isNew\" class=\"notification-tag\">\r\n            <span class=\"tag-indicator\" [style.background-color]=\"notification.tagColor || '#FFD100'\"></span>\r\n            <span class=\"tag-label\">Novo</span>\r\n          </div>\r\n\r\n          <!-- Título da Notificação -->\r\n          <h4 class=\"notification-title\">{{ notification.title }}</h4>\r\n\r\n          <!-- Informação Cronológica -->\r\n          <p class=\"notification-time\">{{ notification.time }}</p>\r\n\r\n          <!-- Conteúdo -->\r\n          <p class=\"notification-content\">{{ notification.content }}</p>\r\n\r\n          <!-- Componente Divider (5) -->\r\n          <div class=\"cfc-divider\"></div>\r\n        </div>\r\n\r\n        <!-- Mensagem para nenhuma notificação -->\r\n        <div *ngIf=\"!notifications || notifications.length === 0\" class=\"no-notifications\">\r\n          <p>Nenhuma notificação disponível.</p>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-notification-panel',\r\n  templateUrl: './notification-panel.component.html',\r\n  styleUrl: './notification-panel.component.scss'\r\n})\r\nexport class NotificationPanelComponent {\r\n\r\n}\r\n","<br-notification-panel>\r\n  <br-notification>notificação 1</br-notification>\r\n  <br-notification>notificação 2</br-notification>\r\n  <br-notification>notificação 3</br-notification>\r\n</br-notification-panel>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-page-content',\r\n  templateUrl: './page-content.component.html',\r\n  styleUrl: './page-content.component.scss'\r\n})\r\nexport class PageContentComponent {}\r\n","<main class=\"container-out\" fxFlex=\"grow\">\r\n  <ng-content></ng-content>\r\n</main>\r\n","export enum SelectType {\r\n  default = 'default',\r\n  success = 'success',\r\n  warning = 'warning',\r\n  danger = 'danger',\r\n  info = 'info',\r\n  pagination = 'pagination'\r\n}\r\n","export enum PaginationType {\n  Standard = 'standard',\n  Contextual = 'contextual'\n}","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostListener,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { MessageState } from '../../enums/message-state.enum';\r\nimport { SelectType } from '../../enums/select-type.enum'\r\n\r\n@Component({\r\n  selector: 'cfc-select',\r\n  templateUrl: './select.component.html',\r\n  styleUrls: ['./select.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => SelectComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => SelectComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit, ControlValueAccessor, Validator {\r\n  // Inputs\r\n  @Input() options: any[] = [];\r\n  @Input() id?: string;\r\n  @Input() label?: string;\r\n  @Input() placeholder?: string = '';\r\n  @Input() labelInline = false;\r\n  @Input() multiSelect = false;\r\n  @Input() feedbackMessage?: string;\r\n  @Input() feedbackState?: MessageState;\r\n  @Input() showSearchIcon: boolean = true;\r\n  @Input() showSelectAll: boolean = false;\r\n  @Input() required: boolean = false;\r\n  @Input() ariaLabel?: string;\r\n  @Input() ariaDescribedBy?: string;\r\n  @Input() disabled: boolean = false;\r\n  @Input() type: SelectType = SelectType.default;\r\n\r\n  // Outputs\r\n  @Output() onChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n  @Output() onOpen: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  // Internal properties\r\n  inputId: string;\r\n  searchTerm: string = '';\r\n  selectedValues: any[] = [];\r\n  filteredOptions: any[] = [];\r\n  selectAllChecked: boolean = false;\r\n  isOptionsListVisible: boolean = false;\r\n  highlightedIndex: number = -1;\r\n  displayValue: string = '';\r\n\r\n  isTooltipVisible: boolean = false;\r\n  tooltipPosition = { top: 0, left: 0 };\r\n\r\n  // ControlValueAccessor properties\r\n  private onModelChange = (_: any) => {};\r\n  private onModelTouched = () => {};\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private el: ElementRef,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.inputId = this.id || `select-${Math.random().toString(36).substring(2, 9)}`;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.required && this.ariaDescribedBy) {\r\n      this.ariaDescribedBy = `${this.ariaDescribedBy} feedback-${this.inputId}`;\r\n    } else if (this.required) {\r\n      this.ariaDescribedBy = `feedback-${this.inputId}`;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // Garante que filteredOptions sempre começa com todas as opções disponíveis\r\n    this.filteredOptions = [...this.options];\r\n    this.updateDisplayValue();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  // Handle keyboard navigation\r\n  handleKeyDown(event: KeyboardEvent): void {\r\n    if (this.disabled) return;\r\n\r\n    switch (event.key) {\r\n      case 'ArrowDown':\r\n        event.preventDefault();\r\n        if (!this.isOptionsListVisible) {\r\n          this.openOptionsList();\r\n        } else {\r\n          this.highlightNextItem();\r\n        }\r\n        break;\r\n      case 'ArrowUp':\r\n        event.preventDefault();\r\n        if (!this.isOptionsListVisible) {\r\n          this.openOptionsList();\r\n        } else {\r\n          this.highlightPreviousItem();\r\n        }\r\n        break;\r\n      case 'Enter':\r\n        if (this.isOptionsListVisible && this.highlightedIndex >= 0) {\r\n          event.preventDefault();\r\n          if (this.highlightedIndex === 0 && this.showSelectAll && this.multiSelect) {\r\n            this.toggleSelectAll();\r\n          } else {\r\n            const adjustedIndex = this.showSelectAll && this.multiSelect ? this.highlightedIndex - 1 : this.highlightedIndex;\r\n            if (adjustedIndex >= 0 && adjustedIndex < this.filteredOptions.length) {\r\n              this.toggleSelection(this.filteredOptions[adjustedIndex]);\r\n            }\r\n          }\r\n        } else if (!this.isOptionsListVisible) {\r\n          this.openOptionsList();\r\n        }\r\n        break;\r\n      case ' ': // Space key\r\n        if (this.isOptionsListVisible && this.highlightedIndex >= 0) {\r\n          event.preventDefault();\r\n          if (this.highlightedIndex === 0 && this.showSelectAll && this.multiSelect) {\r\n            this.toggleSelectAll();\r\n          } else {\r\n            const adjustedIndex = this.showSelectAll && this.multiSelect ? this.highlightedIndex - 1 : this.highlightedIndex;\r\n            if (adjustedIndex >= 0 && adjustedIndex < this.filteredOptions.length) {\r\n              this.toggleSelection(this.filteredOptions[adjustedIndex]);\r\n            }\r\n          }\r\n        }\r\n        break;\r\n      case 'Escape':\r\n        if (this.isOptionsListVisible) {\r\n          event.preventDefault();\r\n          this.closeOptionsList();\r\n        }\r\n        break;\r\n      case 'Tab':\r\n        if (this.isOptionsListVisible) {\r\n          this.closeOptionsList();\r\n        }\r\n        break;\r\n      default:\r\n        // Para filtro por primeira letra quando as teclas são letras ou números\r\n        if (event.key.length === 1 && /[a-zA-Z0-9]/.test(event.key)) {\r\n          // Implementação para filtrar por primeira letra\r\n          this.filterByFirstLetter(event.key);\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  handleItemKeyDown(event: KeyboardEvent, option: any): void {\r\n    if (this.disabled) return;\r\n\r\n    if (event.key === 'Enter' || event.key === ' ') {\r\n      event.preventDefault();\r\n      if (option === null && this.showSelectAll && this.multiSelect) {\r\n        this.toggleSelectAll();\r\n      } else {\r\n        this.toggleSelection(option);\r\n      }\r\n    }\r\n  }\r\n\r\n  // Filter options by first letter\r\n  filterByFirstLetter(letter: string): void {\r\n    if (this.disabled) return;\r\n\r\n    letter = letter.toLowerCase();\r\n\r\n    // Find the first option that starts with the letter\r\n    const index = this.filteredOptions.findIndex(option =>\r\n      option.label.toLowerCase().startsWith(letter)\r\n    );\r\n\r\n    if (index >= 0) {\r\n      this.highlightedIndex = this.showSelectAll && this.multiSelect ? index + 1 : index;\r\n      // Scroll to the item\r\n      setTimeout(() => {\r\n        const listElement = this.el.nativeElement.querySelector('.options-list');\r\n        const optionElement = listElement?.querySelector(`li:nth-child(${this.highlightedIndex + 1})`);\r\n        if (listElement && optionElement) {\r\n          listElement.scrollTop = optionElement.offsetTop - listElement.offsetTop;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  // Highlight navigation\r\n  highlightNextItem(): void {\r\n    if (this.disabled) return;\r\n\r\n    const maxIndex = this.getOptionsLength() - 1;\r\n    if (this.highlightedIndex < maxIndex) {\r\n      this.highlightedIndex++;\r\n      this.scrollToHighlightedItem();\r\n    }\r\n  }\r\n\r\n  highlightPreviousItem(): void {\r\n    if (this.disabled) return;\r\n\r\n    if (this.highlightedIndex > 0) {\r\n      this.highlightedIndex--;\r\n      this.scrollToHighlightedItem();\r\n    }\r\n  }\r\n\r\n  scrollToHighlightedItem(): void {\r\n    if (this.disabled) return;\r\n\r\n    setTimeout(() => {\r\n      const listElement = this.el.nativeElement.querySelector('.options-list');\r\n      const optionElement = listElement?.querySelector(`li:nth-child(${this.highlightedIndex + 1})`);\r\n      if (listElement && optionElement) {\r\n        const optionTop = optionElement.offsetTop;\r\n        const optionBottom = optionTop + optionElement.offsetHeight;\r\n        const listTop = listElement.scrollTop;\r\n        const listBottom = listTop + listElement.offsetHeight;\r\n\r\n        if (optionTop < listTop) {\r\n          listElement.scrollTop = optionTop;\r\n        } else if (optionBottom > listBottom) {\r\n          listElement.scrollTop = optionBottom - listElement.offsetHeight;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  getOptionsLength(): number {\r\n    return this.filteredOptions.length + (this.showSelectAll && this.multiSelect ? 1 : 0);\r\n  }\r\n\r\n  // Open/close the options list\r\n  openOptionsList(): void {\r\n    if (this.disabled) return;\r\n\r\n    // Resetar os filtros quando abrir a lista\r\n    if (this.searchTerm === '') {\r\n      this.filteredOptions = [...this.options];\r\n    }\r\n    this.isOptionsListVisible = true;\r\n    this.highlightedIndex = 0;\r\n    this.onOpen.emit();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  closeOptionsList(): void {\r\n    if (this.disabled) return;\r\n\r\n    this.isOptionsListVisible = false;\r\n    this.highlightedIndex = -1;\r\n    this.onClose.emit();\r\n  }\r\n\r\n  toggleOptionsList(): void {\r\n    if (this.disabled) return;\r\n\r\n    if (this.isOptionsListVisible) {\r\n      this.closeOptionsList();\r\n    } else {\r\n      this.openOptionsList();\r\n    }\r\n  }\r\n\r\n  onInputFocus(): void {\r\n    if (this.disabled) return;\r\n\r\n    this.openOptionsList();\r\n    this.onModelTouched();\r\n  }\r\n\r\n  // Selection logic\r\n  toggleSelection(option: any, event?: MouseEvent): void {\r\n    if (this.disabled) return;\r\n\r\n    // Se recebemos um evento, impedir a propagação padrão\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n\r\n    // Garantir que estamos trabalhando com o objeto correto\r\n    const targetOption = this.options.find(opt => opt.value === option.value);\r\n\r\n    if (!targetOption) {\r\n      console.warn('Option not found:', option);\r\n      return;\r\n    }\r\n\r\n    if (this.multiSelect) {\r\n      const index = this.selectedValues.findIndex(item => item.value === targetOption.value);\r\n      if (index > -1) {\r\n        // Remove do array de selecionados\r\n        this.selectedValues.splice(index, 1);\r\n      } else {\r\n        // Adiciona ao array de selecionados\r\n        this.selectedValues.push(targetOption);\r\n      }\r\n\r\n      // Importante: force a detecção de mudanças após a alteração\r\n      this.updateSelectAllState();\r\n      this.cdr.detectChanges();\r\n    } else {\r\n      this.selectedValues = [targetOption];\r\n      this.closeOptionsList();\r\n    }\r\n\r\n    this.updateDisplayValue();\r\n\r\n    // Notifica o FormControl\r\n    const valueToEmit = this.multiSelect ? this.selectedValues : (this.selectedValues.length > 0 ? this.selectedValues[0].value : null);\r\n    this.onModelChange(valueToEmit);\r\n    this.onModelTouched();\r\n\r\n    // Emite evento para componente pai\r\n    this.onChange.emit(this.selectedValues);\r\n  }\r\n\r\n  isOptionSelected(option: any): boolean {\r\n    return this.selectedValues.some(item => item.value === option.value);\r\n  }\r\n\r\n  toggleSelectAll(event?: MouseEvent): void {\r\n    if (this.disabled) return;\r\n\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n\r\n    if (this.selectAllChecked) {\r\n      this.selectedValues = [];\r\n      this.selectAllChecked = false;\r\n    } else {\r\n      this.selectedValues = [...this.filteredOptions];\r\n      this.selectAllChecked = true;\r\n    }\r\n\r\n    this.cdr.detectChanges(); // Force a detecção de mudanças\r\n    this.updateDisplayValue();\r\n\r\n    // Notifica o FormControl\r\n    this.onModelChange(this.selectedValues);\r\n    this.onModelTouched();\r\n\r\n    // Emite evento para componente pai\r\n    this.onChange.emit(this.selectedValues);\r\n\r\n    if (!this.multiSelect) {\r\n      this.closeOptionsList();\r\n    }\r\n  }\r\n\r\n  updateSelectAllState(): void {\r\n    if (this.disabled) return;\r\n\r\n    if (this.filteredOptions.length === 0) {\r\n      this.selectAllChecked = false;\r\n      return;\r\n    }\r\n\r\n    if (this.selectedValues.length === 0) {\r\n      this.selectAllChecked = false;\r\n    } else if (this.filteredOptions.every(option =>\r\n      this.selectedValues.some(selected => selected.value === option.value)\r\n    )) {\r\n      this.selectAllChecked = true;\r\n    } else {\r\n      // Estado intermediário - alguns selecionados, mas não todos\r\n      this.selectAllChecked = false;\r\n    }\r\n  }\r\n\r\n  // Search functionality\r\n  onSearchChange(event: Event): void {\r\n    if (this.disabled) return;\r\n\r\n    const target = event.target as HTMLInputElement;\r\n    this.searchTerm = target.value.toLowerCase();\r\n\r\n    this.filteredOptions = this.options.filter(option =>\r\n      option.label.toLowerCase().includes(this.searchTerm)\r\n    );\r\n\r\n    // Reset highlight position\r\n    this.highlightedIndex = 0;\r\n\r\n    // Se não tiver a lista aberta, abre\r\n    if (!this.isOptionsListVisible) {\r\n      this.openOptionsList();\r\n    }\r\n\r\n    // Update select all state based on filtered options\r\n    this.updateSelectAllState();\r\n  }\r\n\r\n  // Display value formatting\r\n  updateDisplayValue(): void {\r\n    if (this.selectedValues.length === 0) {\r\n      this.displayValue = '';\r\n      return;\r\n    }\r\n\r\n    if (this.multiSelect) {\r\n      if (this.selectedValues.length === 1) {\r\n        // Quando há apenas um item selecionado\r\n        this.displayValue = this.selectedValues[0].label;\r\n      } else {\r\n        // Quando há múltiplos itens: primeiro item + (número dos demais)\r\n        this.displayValue = `${this.selectedValues[0].label} + (${this.selectedValues.length - 1})`;\r\n      }\r\n    } else {\r\n      // Para seleção única\r\n      this.displayValue = this.selectedValues[0].label;\r\n    }\r\n  }\r\n\r\n  // Click outside to close\r\n  @HostListener('document:click', ['$event'])\r\n  onClick(event: MouseEvent): void {\r\n    const clickedInside = this.el.nativeElement.contains(event.target);\r\n    if (!clickedInside && this.isOptionsListVisible) {\r\n      this.closeOptionsList();\r\n    }\r\n  }\r\n\r\n  getFullSelectedText(): string {\r\n    if (this.selectedValues.length === 0) {\r\n      return '';\r\n    }\r\n\r\n    return this.selectedValues.map(v => v.label).join(', ');\r\n  }\r\n\r\n  showTooltip(event: MouseEvent): void {\r\n    if (this.disabled) return;\r\n\r\n    if ((this.isTextTruncated() || this.selectedValues.length > 1) && this.selectedValues.length > 0) {\r\n      const containerElement = this.el.nativeElement.querySelector('.select-container');\r\n      const rect = containerElement.getBoundingClientRect();\r\n\r\n      // Calcula posição melhor\r\n      this.tooltipPosition = {\r\n        top: rect.height, // Logo abaixo do container\r\n        left: rect.width / 2 // Centralizado\r\n      };\r\n\r\n      this.isTooltipVisible = true;\r\n      this.cdr.detectChanges();\r\n    }\r\n  }\r\n\r\n  hideTooltip(): void {\r\n    this.isTooltipVisible = false;\r\n  }\r\n\r\n  isTextTruncated(): boolean {\r\n    const inputElement = this.el.nativeElement.querySelector('.select-input');\r\n    if (inputElement) {\r\n      // Certifique-se de que há um pequeno buffer para considerarmos truncado\r\n      return (inputElement.scrollWidth > inputElement.clientWidth + 2);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  // Implementação ControlValueAccessor\r\n  writeValue(value: any): void {\r\n    if (value === null || value === undefined) {\r\n      this.selectedValues = [];\r\n    } else if (Array.isArray(value)) {\r\n      this.selectedValues = this.options.filter(option =>\r\n        value.some((val: any) => {\r\n          if (typeof val === 'object' && val !== null) {\r\n            return val.value === option.value;\r\n          } else {\r\n            return val === option.value;\r\n          }\r\n        })\r\n      );\r\n    } else {\r\n      const selectedOption = this.options.find(option =>\r\n        option.value === value ||\r\n        (typeof value === 'object' && value !== null && JSON.stringify(option.value) === JSON.stringify(value))\r\n      );\r\n      this.selectedValues = selectedOption ? [selectedOption] : [];\r\n    }\r\n\r\n    this.updateDisplayValue();\r\n    this.updateSelectAllState();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onModelChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onModelTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n\r\n    if (isDisabled) {\r\n      // Ensure the dropdown is closed when disabled\r\n      this.isOptionsListVisible = false;\r\n    }\r\n\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  // Implementação do Validator\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    if (this.required) {\r\n      const value = control.value;\r\n      if (value === null || value === undefined ||\r\n        (Array.isArray(value) && value.length === 0) ||\r\n        value === '') {\r\n        return { required: true };\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","<div\r\n  [fxLayout]=\"labelInline ? 'row' : 'column'\"\r\n  [fxLayoutAlign]=\"labelInline ? 'center center' : ''\"\r\n  [ngClass]=\"{'pagination-select': type === 'pagination'}\">\r\n\r\n  <label\r\n    *ngIf=\"label\"\r\n    class=\"input-label\"\r\n    [for]=\"inputId\"\r\n    [class.required]=\"required\">\r\n    {{ label }}\r\n  </label>\r\n\r\n  <div class=\"select-container\">\r\n    <div\r\n      class=\"input-with-icon\"\r\n      [ngClass]=\"{'pagination-input': type === 'pagination'}\"\r\n      [class.disabled]=\"disabled\"\r\n      role=\"combobox\"\r\n      [attr.aria-expanded]=\"isOptionsListVisible && !disabled\"\r\n      [attr.aria-haspopup]=\"!disabled\"\r\n      [attr.aria-owns]=\"'list-' + inputId\"\r\n      [attr.aria-required]=\"required\"\r\n      [attr.aria-disabled]=\"disabled\"\r\n      (mouseenter)=\"!disabled && showTooltip($event)\"\r\n      (mouseleave)=\"hideTooltip()\">\r\n      <i class=\"fa fa-search search-icon\" *ngIf=\"showSearchIcon\" aria-hidden=\"true\"></i>\r\n      <input\r\n        [id]=\"inputId\"\r\n        type=\"text\"\r\n        [placeholder]=\"placeholder\"\r\n        [attr.aria-label]=\"ariaLabel || label || 'Select'\"\r\n        [attr.aria-describedby]=\"ariaDescribedBy\"\r\n        [attr.aria-autocomplete]=\"'list'\"\r\n        [attr.aria-controls]=\"'list-' + inputId\"\r\n        [value]=\"displayValue\"\r\n        [disabled]=\"disabled\"\r\n        (input)=\"onSearchChange($event)\"\r\n        (focus)=\"onInputFocus()\"\r\n        (keydown)=\"handleKeyDown($event)\"\r\n        class=\"select-input\"\r\n        [class.has-search-icon]=\"showSearchIcon\"\r\n        [class.disabled]=\"disabled\"\r\n        [class.required]=\"required\" />\r\n      <button\r\n        type=\"button\"\r\n        class=\"toggle-button\"\r\n        tabindex=\"-1\"\r\n        [disabled]=\"disabled\"\r\n        (click)=\"toggleOptionsList()\"\r\n        aria-hidden=\"true\">\r\n        <i class=\"fa\" [ngClass]=\"isOptionsListVisible ? 'fa-caret-up' : 'fa-caret-down'\"></i>\r\n      </button>\r\n    </div>\r\n\r\n    <!-- Tooltip customizado -->\r\n    <div *ngIf=\"isTooltipVisible && !disabled\"\r\n         class=\"custom-tooltip\"\r\n         [style.top.px]=\"tooltipPosition.top\"\r\n         [style.left.px]=\"tooltipPosition.left\">\r\n      {{ getFullSelectedText() }}\r\n    </div>\r\n\r\n    <ul\r\n      *ngIf=\"isOptionsListVisible && !disabled\"\r\n      [id]=\"'list-' + inputId\"\r\n      role=\"listbox\"\r\n      [attr.aria-multiselectable]=\"multiSelect\"\r\n      [attr.aria-labelledby]=\"inputId\"\r\n      class=\"options-list\"\r\n      [ngClass]=\"{'pagination-options': type === 'pagination'}\"\r\n      tabindex=\"-1\">\r\n      <li *ngIf=\"showSelectAll && multiSelect\"\r\n          role=\"option\"\r\n          class=\"select-all-option\"\r\n          [class.selected]=\"selectAllChecked\"\r\n          (click)=\"toggleSelectAll($event)\"\r\n          (keydown)=\"handleItemKeyDown($event, null)\">\r\n        <div class=\"option-content\">\r\n          <div class=\"checkbox-wrapper\">\r\n            <input\r\n              type=\"checkbox\"\r\n              [id]=\"'select-all-' + inputId\"\r\n              [checked]=\"selectAllChecked\"\r\n              tabindex=\"-1\"\r\n              aria-hidden=\"true\" />\r\n            <span class=\"checkbox-label\">\r\n              {{ selectAllChecked ? 'Desselecionar todos' : 'Selecionar todos' }}\r\n            </span>\r\n          </div>\r\n        </div>\r\n      </li>\r\n      <li *ngFor=\"let option of filteredOptions; let i = index\"\r\n          role=\"option\"\r\n          [id]=\"'option-' + inputId + '-' + i\"\r\n          [attr.aria-selected]=\"isOptionSelected(option)\"\r\n          [class.selected]=\"isOptionSelected(option)\"\r\n          [class.highlighted]=\"highlightedIndex === i\"\r\n          (click)=\"toggleSelection(option, $event)\"\r\n          (keydown)=\"handleItemKeyDown($event, option)\">\r\n        <div class=\"option-content\">\r\n          <div class=\"checkbox-wrapper\" *ngIf=\"multiSelect\">\r\n            <input\r\n              type=\"checkbox\"\r\n              [id]=\"'option-checkbox-' + inputId + '-' + i\"\r\n              [checked]=\"isOptionSelected(option)\"\r\n              tabindex=\"-1\"\r\n              aria-hidden=\"true\"\r\n              (click)=\"$event.stopPropagation()\" />\r\n            <span class=\"checkbox-label\">{{ option.label }}</span>\r\n          </div>\r\n          <span *ngIf=\"!multiSelect\">{{ option.label }}</span>\r\n        </div>\r\n      </li>\r\n      <li *ngIf=\"filteredOptions.length === 0\"\r\n          class=\"empty-state\"\r\n          role=\"option\"\r\n          aria-disabled=\"true\">\r\n        Nenhum item encontrado.\r\n      </li>\r\n    </ul>\r\n  </div>\r\n\r\n  <div\r\n    *ngIf=\"feedbackMessage\"\r\n    [ngClass]=\"feedbackState\"\r\n    [id]=\"'feedback-' + inputId\"\r\n    aria-live=\"polite\">\r\n    {{ feedbackMessage }}\r\n  </div>\r\n</div>\r\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { SelectType } from '../../enums/select-type.enum';\r\nimport { PaginationType } from '../../enums/pagination-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-pagination',\r\n  templateUrl: './pagination.component.html',\r\n  styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit, OnChanges {\r\n  @Input() data: any[] = [];\r\n  @Input() itemsPerPageOptions = [\r\n    { value: '10', label: '10' },\r\n    { value: '20', label: '20' },\r\n    { value: '30', label: '30' }\r\n  ];\r\n  @Input() allPages: number = 1;\r\n  @Input() itemsPerPage: number = 10;\r\n  @Input() allItems: number = 0;\r\n  @Input() currentPage: number = 1;\r\n  @Input() type: PaginationType = PaginationType.Standard;  // Valor padrão\r\n\r\n  @Output() pageChange = new EventEmitter<number>();\r\n  @Output() itemsPerPageChange = new EventEmitter<number>();\r\n\r\n  displayedData: any[] = [];\r\n  pagesArray: any[] = [];\r\n  visiblePages: (number | string)[] = [];\r\n  maxVisiblePages = 5;\r\n\r\n  currentItemsPerPageValue: string = '10';\r\n  currentPageSelectValue: string = '1';\r\n\r\n  SelectType = SelectType;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  isStandardType(): boolean {\r\n    return this.type === PaginationType.Standard;\r\n  }\r\n\r\n  isContextualType(): boolean {\r\n    return this.type === PaginationType.Contextual;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.updatePagesArray();\r\n    this.updatePaginationData();\r\n    this.currentItemsPerPageValue = this.itemsPerPage.toString();\r\n    this.currentPageSelectValue = this.currentPage.toString();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['data'] || changes['itemsPerPage'] || changes['currentPage']) {\r\n      this.updatePaginationData();\r\n    }\r\n\r\n    if (changes['allPages']) {\r\n      this.updatePagesArray();\r\n    }\r\n\r\n    if (changes['currentPage']) {\r\n      this.currentPageSelectValue = this.currentPage.toString();\r\n    }\r\n    if (changes['itemsPerPage']) {\r\n      this.currentItemsPerPageValue = this.itemsPerPage.toString();\r\n    }\r\n  }\r\n\r\n  private updatePaginationData(): void {\r\n    this.allItems = this.data.length;\r\n    this.allPages = Math.ceil(this.allItems / this.itemsPerPage);\r\n    this.currentPage = Math.min(this.currentPage, this.allPages || 1);\r\n\r\n    this.updatePagesArray();\r\n    this.updateDisplayedData();\r\n    this.updateVisiblePages();\r\n  }\r\n\r\n  private updatePagesArray(): void {\r\n    this.pagesArray = Array.from({ length: this.allPages }, (_, i) => ({\r\n      value: (i + 1).toString(),\r\n      label: (i + 1).toString()\r\n    }));\r\n  }\r\n\r\n  private updateDisplayedData(): void {\r\n    const startIndex = (this.currentPage - 1) * this.itemsPerPage;\r\n    const endIndex = startIndex + this.itemsPerPage;\r\n    this.displayedData = this.data.slice(startIndex, endIndex);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private updateVisiblePages(): void {\r\n    this.visiblePages = [];\r\n    if (this.allPages <= this.maxVisiblePages) {\r\n      for (let i = 1; i <= this.allPages; i++) {\r\n        this.visiblePages.push(i);\r\n      }\r\n    } else {\r\n      this.visiblePages.push(1);\r\n      let startPage = Math.max(2, this.currentPage - 1);\r\n      let endPage = Math.min(this.allPages - 1, this.currentPage + 1);\r\n      if (this.currentPage <= 3) endPage = 4;\r\n      if (this.currentPage >= this.allPages - 2) startPage = this.allPages - 3;\r\n      if (startPage > 2) this.visiblePages.push('...');\r\n      for (let i = startPage; i <= endPage; i++) {\r\n        this.visiblePages.push(i);\r\n      }\r\n      if (endPage < this.allPages - 1) this.visiblePages.push('...');\r\n      this.visiblePages.push(this.allPages);\r\n    }\r\n  }\r\n\r\n  changeItemsPerPage(selected: any[]): void {\r\n    if (selected && selected.length > 0) {\r\n      const value = Number(selected[0].value);\r\n      this.itemsPerPage = value;\r\n      this.currentItemsPerPageValue = value.toString();\r\n      this.itemsPerPageChange.emit(value);\r\n\r\n      this.currentPage = 1;\r\n      this.currentPageSelectValue = '1';\r\n      this.pageChange.emit(1);\r\n\r\n      this.allPages = Math.ceil(this.allItems / this.itemsPerPage);\r\n      this.updatePagesArray();\r\n      this.updateDisplayedData();\r\n      this.updateVisiblePages();\r\n    }\r\n  }\r\n\r\n  goToPage(selection: any): void {\r\n    let selectedPage: number;\r\n\r\n    if (typeof selection === 'number' || typeof selection === 'string') {\r\n      selectedPage = Number(selection);\r\n    } else if (Array.isArray(selection) && selection.length > 0) {\r\n      selectedPage = Number(selection[0].value);\r\n    } else {\r\n      return;\r\n    }\r\n\r\n    if (selectedPage >= 1 && selectedPage <= this.allPages) {\r\n      this.currentPage = selectedPage;\r\n      this.currentPageSelectValue = selectedPage.toString();\r\n      this.pageChange.emit(this.currentPage);\r\n      this.updateDisplayedData();\r\n      this.updateVisiblePages();\r\n    }\r\n  }\r\n\r\n  prevPage(): void {\r\n    if (this.currentPage > 1) {\r\n      this.currentPage--;\r\n      this.currentPageSelectValue = this.currentPage.toString();\r\n      this.pageChange.emit(this.currentPage);\r\n      this.updateDisplayedData();\r\n      this.updateVisiblePages();\r\n    }\r\n  }\r\n\r\n  nextPage(): void {\r\n    if (this.currentPage < this.allPages) {\r\n      this.currentPage++;\r\n      this.currentPageSelectValue = this.currentPage.toString();\r\n      this.pageChange.emit(this.currentPage);\r\n      this.updateDisplayedData();\r\n      this.updateVisiblePages();\r\n    }\r\n  }\r\n}\r\n","<div class=\"part pages-part d-flex justify-content-center\" *ngIf=\"isStandardType()\">\r\n  <ul class=\"pagination-items\">\r\n    <li>\r\n      <button class=\"br-button circle\" type=\"button\" aria-label=\"Voltar página\" (click)=\"prevPage()\" [disabled]=\"currentPage === 1\">\r\n        <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\r\n      </button>\r\n    </li>\r\n\r\n    <li *ngFor=\"let page of visiblePages\">\r\n      <button class=\"br-button circle\"\r\n              type=\"button\"\r\n              [class.active]=\"page === currentPage\"\r\n              (click)=\"goToPage(page)\">\r\n        <span *ngIf=\"page !== '...'\">{{ page }}</span>\r\n        <span *ngIf=\"page === '...'\">...</span>\r\n      </button>\r\n    </li>\r\n\r\n    <li>\r\n      <button class=\"br-button circle\" type=\"button\" aria-label=\"Página seguinte\" (click)=\"nextPage()\" [disabled]=\"currentPage === allPages\">\r\n        <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\r\n      </button>\r\n    </li>\r\n  </ul>\r\n</div>\r\n\r\n<ng-container *ngIf=\"isContextualType()\">\r\n  <nav class=\"br-pagination\" aria-label=\"paginação\" [attr.data-total]=\"allItems\"\r\n       [attr.data-current]=\"currentPage\" [attr.data-per-page]=\"itemsPerPage\">\r\n    <div class=\"part\">\r\n      <div class=\"pagination-per-page\">\r\n        <p class=\"mx-3 mb-0 d-flex align-items-center\" style=\"font-size: 14px; font-weight: 400;\">\r\n          Exibir\r\n        </p>\r\n        <cfc-select\r\n          style=\"max-width: 80px;\"\r\n          id=\"pagination-per-page\"\r\n          [options]=\"itemsPerPageOptions\"\r\n          [showSearchIcon]=\"false\"\r\n          [multiSelect]=\"false\"\r\n          [placeholder]=\"itemsPerPage.toString()\"\r\n          [type]=\"SelectType.pagination\"\r\n          (onChange)=\"changeItemsPerPage($event)\">\r\n        </cfc-select>\r\n      </div>\r\n\r\n      <div class=\"divider-vertical\"></div>\r\n\r\n      <div class=\"pagination-information d-sm-flex\">\r\n        {{ currentPage }} - {{ allPages }} de {{ allItems }} itens\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"part\">\r\n      <div class=\"pagination-per-page pagination-select-wrapper\">\r\n        <p class=\"mr-3 mb-0 d-flex align-items-center\" style=\"font-size: 14px; font-weight: 400;\">\r\n          Página\r\n        </p>\r\n        <cfc-select\r\n          style=\"max-width: 80px;\"\r\n          ariaLabel=\"Exibir Página\"\r\n          id=\"go-to-selection\"\r\n          [options]=\"pagesArray\"\r\n          [showSearchIcon]=\"false\"\r\n          [multiSelect]=\"false\"\r\n          [placeholder]=\"currentPage.toString()\"\r\n          [type]=\"SelectType.pagination\"\r\n          (onChange)=\"goToPage($event)\">\r\n        </cfc-select>\r\n      </div>\r\n\r\n      <div class=\"divider-vertical\"></div>\r\n\r\n      <div class=\"pagination-arrows ml-auto ml-sm-0 mr-1\">\r\n        <button class=\"br-button circle\" type=\"button\" aria-label=\"Voltar página\" (click)=\"prevPage()\" [disabled]=\"currentPage === 1\">\r\n          <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\r\n        </button>\r\n        <button class=\"br-button circle\" type=\"button\" aria-label=\"Página seguinte\" (click)=\"nextPage()\" [disabled]=\"currentPage === allPages\">\r\n          <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </nav>\r\n</ng-container>\r\n","// radio.component.ts\r\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { RadioOption } from '../../models/radio.model'\r\n\r\n@Component({\r\n  selector: 'cfc-radio',\r\n  templateUrl: './radio.component.html',\r\n  styleUrl: './radio.component.scss',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => RadioComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class RadioComponent implements ControlValueAccessor {\r\n  @Input() options: RadioOption[] = [];\r\n  @Input() label: string = '';\r\n  @Input() helperText: string = '';\r\n  @Input() name: string = 'radio-group-' + Math.random().toString(36).substring(2);\r\n  @Input() horizontal: boolean = false;\r\n  @Input() invalid: boolean = false;\r\n  @Input() valid: boolean = false;\r\n  @Input() errorMessage: string = '';\r\n  @Input() successMessage: string = '';\r\n  @Input() disabled: boolean = false;\r\n\r\n  @Output() selectionChange = new EventEmitter<any>();\r\n\r\n  value: any = null;\r\n  focusedIndex: number | null = null;\r\n\r\n  // ControlValueAccessor implementation\r\n  onChange: any = () => {};\r\n  onTouched: any = () => {};\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  // Component methods\r\n  onSelect(option: RadioOption): void {\r\n    if (this.disabled || option.disabled) {\r\n      return;\r\n    }\r\n    \r\n    this.value = option.value;\r\n    this.onChange(this.value);\r\n    this.onTouched();\r\n    this.selectionChange.emit(this.value);\r\n  }\r\n\r\n  setFocus(index: number): void {\r\n    this.focusedIndex = index;\r\n  }\r\n\r\n  clearFocus(): void {\r\n    this.focusedIndex = null;\r\n  }\r\n\r\n  isSelected(option: RadioOption): boolean {\r\n    return this.value === option.value;\r\n  }\r\n\r\n  getAriaInvalid(): boolean {\r\n    return this.invalid;\r\n  }\r\n\r\n  trackByFn(index: number, item: RadioOption): any {\r\n    return item.value || index;\r\n  }\r\n}","<!-- radio.component.html -->\r\n<div class=\"cfc-radio-group\" [class.cfc-radio--horizontal]=\"horizontal\" [class.cfc-radio--disabled]=\"disabled\">\r\n  <!-- Label and helper text (optional) -->\r\n  <div class=\"cfc-radio-header\" *ngIf=\"label || helperText\">\r\n    <label class=\"cfc-radio-label\" *ngIf=\"label\">{{ label }}</label>\r\n    <div class=\"cfc-radio-helper-text\" *ngIf=\"helperText\">{{ helperText }}</div>\r\n  </div>\r\n\r\n  <!-- Radio options list -->\r\n  <div class=\"cfc-radio-options\" [attr.aria-invalid]=\"getAriaInvalid()\" role=\"radiogroup\" [attr.aria-labelledby]=\"label ? 'radio-label-' + name : null\">\r\n    <div \r\n      *ngFor=\"let option of options; let i = index; trackBy: trackByFn\" \r\n      class=\"cfc-radio-item\"\r\n      [class.cfc-radio-item--disabled]=\"option.disabled || disabled\"\r\n    >\r\n      <div class=\"cfc-radio-container\" \r\n        [class.cfc-radio--selected]=\"isSelected(option)\"\r\n        [class.cfc-radio--focused]=\"focusedIndex === i\"\r\n        [class.cfc-radio--invalid]=\"invalid && isSelected(option)\"\r\n        [class.cfc-radio--valid]=\"valid && isSelected(option)\"\r\n        (click)=\"onSelect(option)\"\r\n        (keydown.space)=\"$event.preventDefault(); onSelect(option)\"\r\n        (focus)=\"setFocus(i)\"\r\n        (blur)=\"clearFocus()\"\r\n        tabindex=\"0\"\r\n        role=\"radio\"\r\n        [attr.aria-checked]=\"isSelected(option)\"\r\n        [attr.aria-disabled]=\"option.disabled || disabled\"\r\n      >\r\n        <div class=\"cfc-radio-outer-circle\">\r\n          <div class=\"cfc-radio-inner-circle\" *ngIf=\"isSelected(option)\"></div>\r\n        </div>\r\n      </div>\r\n      <label class=\"cfc-radio-label\" (click)=\"onSelect(option)\" [class.cfc-radio-label--disabled]=\"option.disabled || disabled\">{{ option.label }}</label>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- Feedback messages -->\r\n  <div class=\"cfc-radio-feedback\" *ngIf=\"invalid && errorMessage\">\r\n    <div class=\"cfc-radio-error-message\">\r\n      <svg class=\"cfc-radio-icon-error\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-7v2h2v-2h-2zm0-8v6h2V7h-2z\" fill=\"currentColor\"/>\r\n      </svg>\r\n      {{ errorMessage }}\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"cfc-radio-feedback\" *ngIf=\"valid && successMessage\">\r\n    <div class=\"cfc-radio-success-message\">\r\n      <svg class=\"cfc-radio-icon-success\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.997-6l7.07-7.071-1.414-1.414-5.656 5.657-2.829-2.829-1.414 1.414L11.003 16z\" fill=\"currentColor\"/>\r\n      </svg>\r\n      {{ successMessage }}\r\n    </div>\r\n  </div>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-scrim',\r\n  templateUrl: './scrim.component.html',\r\n  styleUrl: './scrim.component.scss'\r\n})\r\nexport class ScrimComponent {\r\n\r\n  @Input() isVisible = true;\r\n  @Input() isClosable = true;\r\n\r\n  @HostBinding('style.display') display = 'block';\r\n\r\n  open(): void {\r\n    this.isVisible = true;\r\n    this.display = 'block';\r\n  }\r\n\r\n  close(): void {\r\n    this.isVisible = false;\r\n    this.display = 'none';\r\n  }\r\n\r\n}\r\n","<div\r\n  class=\"full-screen-overlay\"\r\n  *ngIf=\"isVisible\"\r\n  (click)=\"isClosable ? close() : null\">\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-skiplink',\r\n  templateUrl: './skiplink.component.html',\r\n  styleUrl: './skiplink.component.scss'\r\n})\r\nexport class SkiplinkComponent {\r\n\r\n}\r\n","<br-skiplink>skiplink</br-skiplink>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-slider',\r\n  templateUrl: './slider.component.html',\r\n  styleUrl: './slider.component.scss'\r\n})\r\nexport class SliderComponent {\r\n\r\n}\r\n","<br-slider label=\"slider\" min=\"0\" max=\"100\"> </br-slider>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-switch',\r\n  templateUrl: './switch.component.html',\r\n  styleUrl: './switch.component.scss',\r\n})\r\nexport class SwitchComponent {\r\n  @Input() label?: string = '';\r\n  @Input() labelEnable?: string = '';\r\n  @Input() labelDisable?: string = '';\r\n  @Input() withIcon?: boolean = false;\r\n  @Input() density: 'small' | 'medium' | 'large' = 'medium';\r\n  @Input() value: boolean = false;\r\n  @Input() labelPosition?: 'top' | 'right';\r\n\r\n  @Output() change: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  id: number = Math.floor(Math.random() * 1000000);\r\n\r\n  constructor() {\r\n    console.log(`Switch initialized with value: ${this.value}`);\r\n  }\r\n  toggleSwitch(event: Event): void {;\r\n    this.value = (event.target as HTMLInputElement).checked;\r\n    this.change.emit(this.value);\r\n    console.log(`Switch toggled: ${this.value}`);\r\n  }\r\n}\r\n","<div class=\"br-switch\" [ngClass]=\"{\r\n  'small': density === 'small',\r\n  'medium': density === 'medium',\r\n  'large': density === 'large',\r\n  'icon': withIcon === true,\r\n  'top': labelPosition === 'top',\r\n  'right': labelPosition === 'right',\r\n}\" role=\"presentation\">\r\n  <input\r\n    [attr.id]=\"id\"\r\n    type=\"checkbox\"\r\n    name=\"switch-default\"\r\n    [checked]=\"value == true\"\r\n    role=\"switch\"\r\n    (change)=\"toggleSwitch($event)\"\r\n  />\r\n  <label *ngIf=\"label\" [attr.for]=\"id\">{{ label }}</label>\r\n  <div\r\n    *ngIf=\"labelEnable && labelDisable\"\r\n    class=\"switch-data\"\r\n    [attr.data-enabled]=\"labelEnable\"\r\n    [attr.data-disabled]=\"labelDisable\"\r\n  ></div>\r\n</div>\r\n","export enum IllustrationType {\r\n  externalUrl = 'externalUrl',\r\n  requirementNotFound = 'requirementNotFound'\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { IllustrationType } from '../../enums/illustration-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-illustration-state',\r\n  templateUrl: './illustration-state.component.html',\r\n  styleUrl: './illustration-state.component.scss'\r\n})\r\nexport class IllustrationStateComponent {\r\n  // @Input() illustration!: IllustrationType;\r\n  @Input() illustrationUrl: string = '';\r\n  @Input() primaryText!: string;\r\n  @Input() secondaryText?: string;\r\n  @Input() suportText?: string;\r\n\r\n  illustrations = IllustrationType;\r\n\r\n  // get illustrationUrl(): string {\r\n  //   switch (this.illustration) {\r\n  //     case IllustrationType.requirementNotFound:\r\n  //       return 'node_modules/cfc-ds/assets/illustrations/error19.png';\r\n  //     case IllustrationType.externalUrl:\r\n  //       return this.illustrationUrl;\r\n  //     default:\r\n  //       return '';\r\n  //   }\r\n  // }\r\n\r\n}\r\n","<div\r\n  fxFlex=\"grow\"\r\n  fxFlex.gt-sm=\"grow\"\r\n  fxLayout=\"row\"\r\n  fxLayout.lt-sm=\"column\"\r\n  fxLayoutAlign=\"center center\"\r\n  class=\"mx-2 gap-3\">\r\n  <div\r\n    class=\"m-3\"\r\n    fxFlex=\"40%\">\r\n    <img\r\n      [src]=\"illustrationUrl\"\r\n      alt=\"imagem de erro\"\r\n      style=\"object-fit: cover;\"\r\n      />\r\n  </div>\r\n\r\n  <div\r\n    fxFlex.gt-sm=\"60%\"\r\n    fxLayout=\"column\"\r\n    fxLayoutAlign=\"start start\"\r\n    fxLayoutAlign.lt-sm=\"center center\">\r\n    <section\r\n      class=\"text-support-03\">\r\n      <p\r\n        class=\"text-up-06 text-semi-bold my-3 text-blue-warm-60 text-left\">\r\n        {{ primaryText }}\r\n      </p>\r\n    </section>\r\n    <section\r\n      *ngIf=\"secondaryText\"\r\n      class=\"text-secondary-06\">\r\n      <p\r\n        class=\"text-up-03 text-medium text-left my-3\">\r\n        {{ secondaryText }}\r\n      </p>\r\n    </section>\r\n    <section\r\n      *ngIf=\"suportText\">\r\n      <p\r\n        class=\"my-3 text-left text-sm-justify\">\r\n        {{ suportText }}\r\n      </p>\r\n    </section>\r\n  </div>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Columns } from '../../models/table.model';\r\n\r\n@Component({\r\n  selector: 'cfc-table',\r\n  templateUrl: './table.component.html',\r\n  styleUrl: './table.component.scss',\r\n})\r\nexport class TableComponent implements OnInit, AfterViewInit {\r\n  @Input() columns!: Columns[];\r\n  @Input() lines!: any;\r\n  @Input() customTable!: TemplateRef<any>;\r\n  @Input() pagination: any = { totalElements: 0 };\r\n  @Input() hasCheckbox: boolean = true;\r\n  @Output() selectedLines = new EventEmitter();\r\n\r\n  selectLines: any[] = [];\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initializeTable();\r\n  }\r\n\r\n  initializeTable(): void {\r\n    const tableList = [];\r\n    const tables = Array.from(window.document.querySelectorAll('.br-table'));\r\n\r\n    for (const [index, brTable] of tables.entries()) {\r\n      tableList.push(\r\n        new (window as any).core.BRTable('br-table', brTable, index)\r\n      );\r\n    }\r\n  }\r\n\r\n  getNestedValue(obj: any, path: string): any {\r\n    return path.split('.').reduce((acc, part) => acc && acc[part], obj);\r\n  }\r\n\r\n\r\n  selectAllCheckbox() {\r\n    const mainCheckbox = document.querySelector(\r\n      '.checked-all'\r\n    ) as HTMLInputElement;\r\n    const checkboxes = document.querySelectorAll('.checkbox-item');\r\n    const bar = document.querySelector('.selected-bar');\r\n    const countElement = document.querySelector('.count');\r\n    const textElement = document.querySelector('.text');\r\n    if (mainCheckbox.checked) {\r\n      if (countElement) {\r\n        countElement.innerHTML = String(checkboxes.length);\r\n      }\r\n      if (textElement) {\r\n        textElement.innerHTML = String('itens selecionados');\r\n      }\r\n      if (bar) {\r\n        bar.classList.add('show');\r\n      }\r\n    } else {\r\n      if (countElement) {\r\n        countElement.innerHTML = String(0);\r\n      }\r\n      if (bar) {\r\n        bar.classList.remove('show');\r\n      }\r\n    }\r\n\r\n    checkboxes.forEach((checkbox) => {\r\n      if (checkbox instanceof HTMLInputElement) {\r\n        checkbox.checked = mainCheckbox.checked;\r\n        const tr = checkbox.closest('tr');\r\n        if (tr) {\r\n          tr.classList.toggle('is-selected', checkbox.checked);\r\n        }\r\n      }\r\n    });\r\n\r\n    if (this.selectLines.length > 0) {\r\n      this.selectLines = [];\r\n    }\r\n\r\n    this.lines.forEach((line: any) => {\r\n      if (mainCheckbox.checked) {\r\n        this.selectLines.push(line);\r\n      } else {\r\n        const itemIndex = this.selectLines.indexOf(line);\r\n        this.selectLines.splice(itemIndex, 1);\r\n      }\r\n    });\r\n    console.log(this.selectLines);\r\n  }\r\n\r\n  selectCheckbox(line: any) {\r\n    const mainCheckbox = document.querySelector(\r\n      '.checked-all'\r\n    ) as HTMLInputElement;\r\n    const bar = document.querySelector('.selected-bar');\r\n    if (bar) {\r\n      bar.classList.add('show');\r\n    }\r\n    mainCheckbox.checked = false;\r\n    const itemIndex = this.selectLines.indexOf(line);\r\n    if (itemIndex > -1) {\r\n      this.selectLines.splice(itemIndex, 1);\r\n    } else {\r\n      this.selectLines.push(line);\r\n    }\r\n    this.selectedLines.emit(this.selectLines);\r\n    console.log(this.selectLines);\r\n  }\r\n}\r\n","\r\n<div class=\"br-table\" data-selection=\"data-selection\">\r\n  <div class=\"table-header\">\r\n    <div class=\"selected-bar\">\r\n      <div class=\"info\">\r\n        <span class=\"count\">0</span><span class=\"text\">item selecionado</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  @if (lines.length > 0) {\r\n  <table>\r\n    <thead>\r\n      <tr>\r\n        @if(hasCheckbox){\r\n        <th class=\"column-checkbox\" scope=\"col\">\r\n          <div class=\"br-checkbox hidden-label\">\r\n            <input\r\n              id=\"check-all-90050\"\r\n              name=\"check-all-90050\"\r\n              type=\"checkbox\"\r\n              aria-label=\"Selecionar tudo\"\r\n              data-parent=\"check-01-90050\"\r\n              class=\"checked-all\"\r\n              (change)=\"selectAllCheckbox()\"\r\n            />\r\n            <label for=\"check-all-90050\">Selecionar todas as linhas</label>\r\n          </div>\r\n        </th>\r\n        } @for (column of columns; track $index) {\r\n        <th scope=\"col\">{{ column.label }}</th>\r\n        }\r\n      </tr>\r\n    </thead>\r\n    <tbody>\r\n      @for (line of lines; track $index) {\r\n      <tr>\r\n        @if(hasCheckbox){\r\n        <td>\r\n          <div class=\"br-checkbox hidden-label\">\r\n            <input\r\n              [attr.id]=\"'check-line-' + $index + '-90050'\"\r\n              [attr.name]=\"'check-line-' + $index + '-90050'\"\r\n              type=\"checkbox\"\r\n              [attr.aria-label]=\"'Selecionar linha' + $index\"\r\n              data-child=\"check-01-90050\"\r\n              class=\"checkbox-item\"\r\n              (change)=\"selectCheckbox(line)\"\r\n            />\r\n            <label [attr.for]=\"'check-line-' + $index + '-90050'\"\r\n              >Selecionar linha {{ $index }}</label\r\n            >\r\n          </div>\r\n        </td>\r\n        } @for (column of columns; track $index) {\r\n        <td [attr.data-th]=\"'Título coluna ' + $index\">\r\n          @if(!column.customCell){\r\n          <ng-container>\r\n            {{ getNestedValue(line, column.key) }}\r\n          </ng-container>\r\n\r\n          } @if(column.customCell) {\r\n          <ng-container\r\n            *ngTemplateOutlet=\"\r\n              customTable;\r\n              context: {\r\n                $implicit: line,\r\n                column: column,\r\n              }\r\n            \"\r\n          >\r\n          </ng-container>\r\n          }\r\n        </td>\r\n        }\r\n      </tr>\r\n      }\r\n    </tbody>\r\n  </table>\r\n }\r\n</div>\r\n@if (lines.length === 0) {\r\n<cfc-illustration-state\r\n  illustrationUrl=\"https://cdngovbr-ds.estaleiro.serpro.gov.br/design-system/images/logo-positive.png\"\r\n  primaryText=\"Não foram encontrados registros para essa consulta.\"\r\n  secondaryText=\"Nenhum resultado encontrado.\"\r\n  suportText=\"Não há informações para exibir no momento.\"\r\n></cfc-illustration-state>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-tag',\r\n  templateUrl: './tag.component.html',\r\n  styleUrl: './tag.component.scss'\r\n})\r\nexport class TagComponent {\r\n  @Input() label!: string;\r\n  @Input() type: 'text' | 'status' | 'counter' | 'icon' = 'text';\r\n  @Input() backgroundColor: string= 'bg-gray-50';\r\n  @Input() density: 'small' | 'medium' | 'large' = 'medium';\r\n\r\n}\r\n","<ng-container *ngIf=\"type === 'text'\">\r\n  <div class=\"d-flex align-items-center\">\r\n    <span class=\"br-tag\" aria-describedby=\"tag-text01\"\r\n      ><i class=\"fas fa-car\" aria-hidden=\"true\"></i\r\n      ><span id=\"tag-text01\">{{ label }}</span></span\r\n    >\r\n  </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"type === 'status'\">\r\n  <div class=\"d-flex align-items-center mt-1\">\r\n    <span\r\n      class=\"br-tag status\"\r\n      [ngClass]=\"[\r\n        backgroundColor,\r\n        density === 'small' ? 'small' : '',\r\n        density === 'medium' ? 'medium' : '',\r\n        density === 'large' ? 'large' : ''\r\n      ]\"\r\n      aria-describedby=\"tag-status-01\"\r\n    ></span\r\n    ><span class=\"ml-1\" id=\"tag-status-01\">{{label}}</span\r\n    >\r\n  </div>\r\n</ng-container>\r\n","export enum TooltipPlace {\r\n  top = \"top\",\r\n  right = \"right\",\r\n  bottom = \"bottom\",\r\n  left = \"left\"\r\n}\r\n","export enum CheckboxOptionState {\r\n  default = \"default\",\r\n  disabled = \"disabled\",\r\n  invalid = \"invalid\",\r\n  valid = \"valid\"\r\n}\r\n","export enum CheckboxOptionType {\r\n  withRightLabel = \"withRightLabel\",\r\n  withAboveLabel = \"withAboveLabel\",\r\n  withLeftLabel = \"withLeftLabel\",\r\n  withBelowLabel = \"withBelowLabel\",\r\n  withoutLabel = \"wiyhoutLabel\"\r\n}\r\n","export enum LoadingDensity {\r\n  medium = \"medium\",\r\n  small = \"small\"\r\n}\r\n","export enum ItemType {\r\n  default = 'default',\r\n  button = 'button',\r\n  link = 'link'\r\n}\r\n","// collapse.component.ts\r\nimport { Component, ElementRef, Input, OnInit, ViewChild, AfterViewInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-collapse',\r\n  templateUrl: './collapse.component.html',\r\n  styleUrls: ['./collapse.component.scss'],\r\n})\r\nexport class CollapseComponent implements OnInit, AfterViewInit {\r\n  @ViewChild('collapseDiv', { static: true }) collapseDiv!: ElementRef;\r\n\r\n  @Input() title: string = '';\r\n  @Input() expanded: boolean = false;\r\n  @Input() direction: 'down' | 'up' | 'right' | 'left' = 'down';\r\n  @Input() icon: string = '';\r\n  @Input() customClass: string = '';\r\n  @Input() heightLimit: number | null = null;\r\n  @Input() indentLevel: number = 0;\r\n  @Input() buttonOnly: boolean = false;\r\n\r\n  @Output() stateChange = new EventEmitter<boolean>();\r\n\r\n  isExpanded: boolean = false; // Usar uma variável booleana simples\r\n  contentHeight = 'auto';\r\n\r\n  // Chevron icons based on direction\r\n  get chevronIcon(): string {\r\n    if (this.icon) return this.icon;\r\n\r\n    switch (this.direction) {\r\n      case 'down':\r\n        return this.isExpanded ? 'chevron-up' : 'chevron-down';\r\n      case 'up':\r\n        return this.isExpanded ? 'chevron-down' : 'chevron-up';\r\n      case 'right':\r\n        return this.isExpanded ? 'chevron-left' : 'chevron-right';\r\n      case 'left':\r\n        return this.isExpanded ? 'chevron-right' : 'chevron-left';\r\n      default:\r\n        return this.isExpanded ? 'chevron-up' : 'chevron-down';\r\n    }\r\n  }\r\n\r\n  // Calculate indentation style\r\n  get indentStyle() {\r\n    return this.indentLevel ? { paddingLeft: `${this.indentLevel * 16}px` } : {};\r\n  }\r\n\r\n  // Calculate max height for content if heightLimit is set\r\n  get contentStyle() {\r\n    if (this.heightLimit && this.isExpanded) {\r\n      return {\r\n        maxHeight: `${this.heightLimit}px`,\r\n        overflowY: 'auto'\r\n      };\r\n    }\r\n    return {};\r\n  }\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {\r\n    this.isExpanded = this.expanded;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // Set initial state\r\n    if (this.expanded) {\r\n      this.open();\r\n    }\r\n\r\n    // Handle any elements with data-bs-toggle attribute\r\n    const triggers = this.collapseDiv.nativeElement.querySelectorAll('[data-bs-toggle=\"collapse\"]');\r\n    triggers.forEach((trigger: HTMLElement) => {\r\n      trigger.addEventListener('click', () => this.toggle());\r\n    });\r\n  }\r\n\r\n  toggle(): void {\r\n    this.isExpanded = !this.isExpanded;\r\n    this.stateChange.emit(this.isExpanded);\r\n  }\r\n\r\n  open(): void {\r\n    this.isExpanded = true;\r\n    this.stateChange.emit(true);\r\n  }\r\n\r\n  close(): void {\r\n    this.isExpanded = false;\r\n    this.stateChange.emit(false);\r\n  }\r\n}","<div #collapseDiv class=\"cfc-collapse {{customClass}}\">\r\n  <div *ngIf=\"!buttonOnly\" class=\"cfc-collapse-trigger\"\r\n       [ngClass]=\"{'expanded': isExpanded}\"\r\n       [ngStyle]=\"indentStyle\"\r\n       (click)=\"toggle()\">\r\n    <ng-container *ngTemplateOutlet=\"titleContent\"></ng-container>\r\n    <cfc-icon [iconName]=\"chevronIcon\" ></cfc-icon>\r\n  </div>\r\n\r\n  <div *ngIf=\"buttonOnly\" class=\"cfc-collapse-header\" [ngStyle]=\"indentStyle\">\r\n    <ng-container *ngTemplateOutlet=\"titleContent\"></ng-container>\r\n    <button class=\"cfc-collapse-button\" (click)=\"toggle()\">\r\n      <cfc-icon [iconName]=\"chevronIcon\" ></cfc-icon>\r\n    </button>\r\n  </div>\r\n\r\n  <div class=\"cfc-collapse-content\" [ngClass]=\"{'expanded': isExpanded}\" [ngStyle]=\"contentStyle\">\r\n    <div class=\"cfc-collapse-content-inner\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #titleContent>\r\n  <ng-content select=\"[collapse-title]\"></ng-content>\r\n  <span *ngIf=\"title\">{{title}}</span>\r\n</ng-template>","import { \r\n  Component, \r\n  Input, \r\n  Output, \r\n  EventEmitter, \r\n  ElementRef, \r\n  ViewChild, \r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-item',\r\n  templateUrl: './item.component.html',\r\n  styleUrls: ['./item.component.scss']\r\n})\r\nexport class ItemComponent implements AfterViewInit, OnChanges {\r\n  @ViewChild('expandedContent') expandedContent!: ElementRef;\r\n\r\n  @Input() interactive = false;\r\n  @Input() disabled = false;\r\n  @Input() selected = false;\r\n  @Input() active = false;\r\n  @Input() dragged = false;\r\n  @Input() hasDivider = false;\r\n  @Input() expandable = false;\r\n  @Input() expanded = false;\r\n  @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n  @Input() density: 'high' | 'medium' | 'low' = 'medium';\r\n  @Input() allowMediaBleeding = false;\r\n  @Input() iconPosition: 'start' | 'end' = 'end';\r\n\r\n  @Output() selectedChange = new EventEmitter<boolean>();\r\n  @Output() expandedChange = new EventEmitter<boolean>();\r\n  @Output() itemClick = new EventEmitter<MouseEvent>();\r\n\r\n  isExpanded = false;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private cdr: ChangeDetectorRef\r\n  ) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['expanded']) {\r\n      this.isExpanded = this.expanded;\r\n      \r\n      // Aguarde a próxima renderização para manipular o DOM\r\n      setTimeout(() => {\r\n        if (this.expandedContent && this.expandable) {\r\n          if (this.isExpanded) {\r\n            this.open();\r\n          } else {\r\n            this.close();\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.isExpanded = this.expanded;\r\n    \r\n    // Aguarde a próxima renderização para manipular o DOM\r\n    setTimeout(() => {\r\n      if (this.expandable && this.expandedContent) {\r\n        if (this.isExpanded) {\r\n          this.open();\r\n        } else {\r\n          this.close();\r\n        }\r\n        this.cdr.detectChanges();\r\n      }\r\n    });\r\n  }\r\n\r\n  toggleExpanded(event: MouseEvent): void {\r\n    if (this.expandable && !this.disabled) {\r\n      event.stopPropagation(); // Impede propagação para evitar o clique no item\r\n      this.isExpanded = !this.isExpanded;\r\n      this.expanded = this.isExpanded;\r\n      \r\n      if (this.isExpanded) {\r\n        this.open();\r\n      } else {\r\n        this.close();\r\n      }\r\n      \r\n      this.expandedChange.emit(this.isExpanded);\r\n    }\r\n  }\r\n\r\n  open(): void {\r\n    if (this.expandedContent && this.expandedContent.nativeElement) {\r\n      const content = this.expandedContent.nativeElement;\r\n      const contentHeight = content.scrollHeight;\r\n      \r\n      // Ajuste explícito da altura para iniciar a transição\r\n      content.style.height = contentHeight + 'px';\r\n      content.classList.add('expanded');\r\n      \r\n      // Após a transição, defina para 'auto' para permitir redimensionamento\r\n      setTimeout(() => {\r\n        if (content.classList.contains('expanded')) {\r\n          content.style.height = 'auto';\r\n        }\r\n      }, 200);\r\n    }\r\n  }\r\n\r\n  close(): void {\r\n    if (this.expandedContent && this.expandedContent.nativeElement) {\r\n      const content = this.expandedContent.nativeElement;\r\n      \r\n      // Defina a altura exata atual para iniciar a partir dela\r\n      const height = content.offsetHeight;\r\n      content.style.height = height + 'px';\r\n      \r\n      // Force um reflow antes de mudar para 0\r\n      void content.offsetHeight;\r\n      \r\n      // Feche o conteúdo\r\n      content.style.height = '0';\r\n      content.classList.remove('expanded');\r\n    }\r\n  }\r\n\r\n  handleClick(event: MouseEvent): void {\r\n    if (!this.disabled && this.interactive) {\r\n      this.itemClick.emit(event);\r\n    }\r\n  }\r\n\r\n  toggleSelected(event: MouseEvent): void {\r\n    if (!this.disabled) {\r\n      event.stopPropagation();\r\n      this.selected = !this.selected;\r\n      this.selectedChange.emit(this.selected);\r\n    }\r\n  }\r\n\r\n  // Verifica se há conteúdo em áreas específicas usando contentProjection\r\n  get hasLeadingContent(): boolean {\r\n    const element = this.elementRef.nativeElement;\r\n    return !!element.querySelector('[cfc-item-leading]');\r\n  }\r\n\r\n  get hasTrailingContent(): boolean {\r\n    const element = this.elementRef.nativeElement;\r\n    return !!element.querySelector('[cfc-item-trailing]');\r\n  }\r\n\r\n  get hasExpandedContent(): boolean {\r\n    const element = this.elementRef.nativeElement;\r\n    return !!element.querySelector('[cfc-item-expanded]');\r\n  }\r\n  \r\n  // Verifica a posição do ícone de expansão\r\n  get showIconAtStart(): boolean {\r\n    return this.iconPosition === 'start';\r\n  }\r\n  \r\n  get showIconAtEnd(): boolean {\r\n    return this.iconPosition === 'end';\r\n  }\r\n}","<div class=\"cfc-item\" \r\n     [class.interactive]=\"interactive && !disabled\" \r\n     [class.selected]=\"selected\" \r\n     [class.active]=\"active\" \r\n     [class.disabled]=\"disabled\"\r\n     [class.dragged]=\"dragged\"\r\n     [class.has-divider]=\"hasDivider\"\r\n     [class.vertical]=\"orientation === 'vertical'\"\r\n     [class.horizontal]=\"orientation === 'horizontal'\"\r\n     [class.density-high]=\"density === 'high'\"\r\n     [class.density-medium]=\"density === 'medium'\"\r\n     [class.density-low]=\"density === 'low'\"\r\n     [class.allow-media-bleeding]=\"allowMediaBleeding\"\r\n     (click)=\"handleClick($event)\">\r\n  \r\n  <!-- Ícone de expansão (posição inicial) -->\r\n  <div *ngIf=\"expandable && showIconAtStart\" \r\n       class=\"cfc-item-expand-icon start\"\r\n       [class.expanded]=\"isExpanded\"\r\n       (click)=\"toggleExpanded($event)\">\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n      <path d=\"M7 10l5 5 5-5z\"/>\r\n    </svg>\r\n  </div>\r\n  \r\n  <!-- Conteúdo principal -->\r\n  <div class=\"cfc-item-content\">\r\n    <!-- Leading content -->\r\n    <div class=\"cfc-item-leading\" *ngIf=\"hasLeadingContent\">\r\n      <ng-content select=\"[cfc-item-leading]\"></ng-content>\r\n    </div>\r\n    \r\n    <!-- Primary content -->\r\n    <div class=\"cfc-item-primary\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n    \r\n    <!-- Trailing content -->\r\n    <div class=\"cfc-item-trailing\" *ngIf=\"hasTrailingContent\">\r\n      <ng-content select=\"[cfc-item-trailing]\"></ng-content>\r\n    </div>\r\n    \r\n    <!-- Ícone de expansão (posição final) -->\r\n    <div *ngIf=\"expandable && showIconAtEnd\" \r\n         class=\"cfc-item-expand-icon end\"\r\n         [class.expanded]=\"isExpanded\"\r\n         (click)=\"toggleExpanded($event)\">\r\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n        <path d=\"M7 10l5 5 5-5z\"/>\r\n      </svg>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Conteúdo expansível -->\r\n  <div *ngIf=\"expandable\" \r\n       class=\"cfc-item-expanded-wrapper\" \r\n       [class.expanded]=\"isExpanded\"\r\n       #expandedContent>\r\n    <div class=\"cfc-item-expanded-content\">\r\n      <ng-content select=\"[cfc-item-expanded]\"></ng-content>\r\n    </div>\r\n  </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\ninterface LoadingState {\r\n  isLoading: boolean;\r\n  isFullScreen: boolean;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class LoadingService {\r\n\r\n  isLoading$ = new BehaviorSubject<LoadingState>({ isLoading: false, isFullScreen: false });\r\n\r\n  private loadingStack: LoadingState[] = [];\r\n\r\n  show(isFullScreen: boolean = false): void {\r\n    this.loadingStack.push({ isLoading: true, isFullScreen });\r\n    this.updateLoadingState();\r\n  }\r\n\r\n  hide(): void {\r\n    this.loadingStack.pop();\r\n    this.updateLoadingState();\r\n  }\r\n\r\n  private updateLoadingState(): void {\r\n    const currentState = this.loadingStack[this.loadingStack.length - 1] || { isLoading: false, isFullScreen: false };\r\n    this.isLoading$.next(currentState);\r\n  }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { LoadingService } from '../../services/loading.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoadingDensity } from '../../enums/loading-density.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-loading',\r\n  templateUrl: './loading.component.html',\r\n  styleUrls: ['./loading.component.scss']\r\n})\r\nexport class LoadingComponent implements OnInit, OnDestroy {\r\n\r\n  @Input() density: LoadingDensity = LoadingDensity.medium;\r\n  @Input() progress?: number;\r\n  @Input() minValue: number = 0;\r\n  @Input() maxValue: number = 100;\r\n\r\n  isFullScreen = true;\r\n\r\n  private loadingSubscription: Subscription | undefined;\r\n\r\n  constructor(private loadingService: LoadingService) {}\r\n\r\n  ngOnInit(): void {\r\n    // this.loadingSubscription = this.loadingService.isLoading$.subscribe(\r\n    //   ({ isLoading, isFullScreen }) => {\r\n    //     this.isFullScreen = isFullScreen;\r\n    //     if (isLoading) {\r\n    //     } else {\r\n    //     }\r\n    //   }\r\n    // );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    // this.loadingSubscription?.unsubscribe();\r\n  }\r\n}\r\n","<div\r\n  class=\"br-loading\"\r\n  role=\"progressbar\"\r\n  [ariaLabel]=\"progress ? 'Carregando em ' + progress + '%' : 'Carregando...'\"\r\n  [attr.data-progress]=\"progress\"\r\n  [attr.aria-valuemin]=\"progress ? minValue : undefined\"\r\n  [attr.aria-valuemax]=\"progress ? maxValue : undefined\"\r\n  [ngClass]=\"density\">\r\n  <ng-container *ngIf=\"progress\">\r\n    <div class=\"br-loading-mask full\">\r\n      <div class=\"br-loading-fill\"></div>\r\n    </div>\r\n    <div class=\"br-loading-mask\">\r\n      <div class=\"br-loading-fill\"></div>\r\n    </div>\r\n  </ng-container>\r\n</div>\r\n","import {Component, EventEmitter, forwardRef, Input, OnInit, Output} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'cfc-textarea',\r\n  templateUrl: './textarea.component.html',\r\n  styleUrl: './textarea.component.scss',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => TextareaComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class TextareaComponent implements ControlValueAccessor, OnInit  {\r\n  @Input() label = '';\r\n  @Input() labelPosition: 'top' | 'left' = 'top';\r\n  @Input() placeholder = '';\r\n  @Input() helperText = '';\r\n  @Input() maxLength: number | null = null;\r\n  @Input() required = false;\r\n  @Input() isDisabled = false;\r\n  @Input() resize: 'both' | 'horizontal' | 'vertical' | 'none' = 'both';\r\n  @Input() density: 'low' | 'medium' | 'high' = 'medium';\r\n  @Input() state: 'default' | 'error' | 'success' | 'warning' | 'info' = 'default';\r\n  @Input() stateMessage = '';\r\n  @Input() showCharCount = false;\r\n  @Input() limitType: 'max' | 'counter' = 'max';\r\n  @Input() rows = 3;\r\n  @Input() cols = 50;\r\n\r\n  @Output() textChange = new EventEmitter<string>();\r\n\r\n  value = '';\r\n  focused = false;\r\n  touched = false;\r\n\r\n  // Para o contador de caracteres\r\n  get remainingChars(): number {\r\n    if (!this.maxLength) return 0;\r\n    return this.maxLength - (this.value ? this.value.length : 0);\r\n  }\r\n\r\n  get charCount(): number {\r\n    return this.value ? this.value.length : 0;\r\n  }\r\n\r\n  // Configuração de acessibilidade\r\n  get ariaDescribedBy(): string {\r\n    const ids: string[] = [];\r\n    if (this.helperText) ids.push('helper-text');\r\n    if (this.stateMessage) ids.push('state-message');\r\n    if (this.showCharCount) ids.push('char-count');\r\n    return ids.join(' ');\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.limitType === 'max' && !this.maxLength) {\r\n      console.warn('Máximo de caracteres não definido com limitType=\"max\"');\r\n    }\r\n  }\r\n\r\n  // Implementação de ControlValueAccessor\r\n  onChange: any = () => {};\r\n  onTouched: any = () => {};\r\n\r\n  writeValue(value: string): void {\r\n    this.value = value || '';\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  onInput(event: any): void {\r\n    this.value = event.target.value;\r\n    this.onChange(this.value);\r\n    this.textChange.emit(this.value);\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.focused = false;\r\n    if (!this.touched) {\r\n      this.touched = true;\r\n      this.onTouched();\r\n    }\r\n  }\r\n\r\n  onFocus(): void {\r\n    this.focused = true;\r\n  }\r\n}\r\n","<!-- textarea.component.html -->\r\n<div\r\n  class=\"textarea-container\"\r\n  [class.label-left]=\"labelPosition === 'left'\"\r\n  [ngClass]=\"['density-' + density, 'state-' + state]\">\r\n\r\n  <label *ngIf=\"label\" [for]=\"'textarea-' + label\" class=\"textarea-label\">\r\n    {{ label }}\r\n    <span *ngIf=\"required\" class=\"required-indicator\">*</span>\r\n    <span *ngIf=\"!required\" class=\"optional-indicator\">(opcional)</span>\r\n  </label>\r\n\r\n  <div class=\"textarea-wrapper\" [class.focused]=\"focused\">\r\n    <textarea\r\n      [id]=\"'textarea-' + label\"\r\n      [placeholder]=\"placeholder\"\r\n      [attr.rows]=\"rows\"\r\n      [attr.cols]=\"cols\"\r\n      [disabled]=\"isDisabled\"\r\n      [style.resize]=\"resize\"\r\n      [attr.maxlength]=\"maxLength ? maxLength : null\"\r\n      [attr.aria-describedby]=\"ariaDescribedBy\"\r\n      [attr.aria-required]=\"required\"\r\n      [attr.aria-invalid]=\"state === 'error'\"\r\n      (input)=\"onInput($event)\"\r\n      (blur)=\"onBlur()\"\r\n      (focus)=\"onFocus()\"\r\n      [value]=\"value\">\r\n    </textarea>\r\n    <div *ngIf=\"resize !== 'none'\" class=\"resize-icon\"></div>\r\n  </div>\r\n\r\n  <div class=\"textarea-footer\">\r\n    <div *ngIf=\"stateMessage\" [id]=\"'state-message'\" class=\"state-message\">\r\n      <span *ngIf=\"state === 'error'\" class=\"icon error-icon\">⚠</span>\r\n      <span *ngIf=\"state === 'success'\" class=\"icon success-icon\">✓</span>\r\n      <span *ngIf=\"state === 'warning'\" class=\"icon warning-icon\">⚠</span>\r\n      <span *ngIf=\"state === 'info'\" class=\"icon info-icon\">ℹ</span>\r\n      {{ stateMessage }}\r\n    </div>\r\n    <div *ngIf=\"helperText\" [id]=\"'helper-text'\" class=\"helper-text\">{{ helperText }}</div>\r\n\r\n    <div *ngIf=\"showCharCount\" [id]=\"'char-count'\" class=\"char-counter\">\r\n      <ng-container *ngIf=\"limitType === 'max'\">\r\n        Restam {{ remainingChars }} caracteres\r\n      </ng-container>\r\n      <ng-container *ngIf=\"limitType === 'counter'\">\r\n        {{ charCount }} caracteres\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-tooltip',\r\n  templateUrl: './tooltip.component.html',\r\n  styleUrl: './tooltip.component.scss'\r\n})\r\nexport class TooltipComponent {\r\n  @Input() tooltipText: string = '';\r\n  @Input() type: 'success' | 'error' | 'info' | 'warning' = 'info';\r\n  isVisible: boolean = false;\r\n\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n  @HostListener('mouseenter') onMouseEnter() {\r\n    this.isVisible = true;\r\n  }\r\n\r\n  @HostListener('mouseleave') onMouseLeave() {\r\n    this.isVisible = false;\r\n  }\r\n}\r\n","<span class=\"tooltip-container\">\r\n    <ng-content></ng-content>\r\n    <div class=\"tooltip\" [class]=\"type\" *ngIf=\"isVisible\">\r\n        <div class=\"tooltip-arrow\"></div>\r\n        {{ tooltipText }}\r\n    </div>\r\n</span>","\r\n\r\n\r\n\r\n\r\n\r\n\r\n    \r\n    import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\n    import { FormGroup } from '@angular/forms';\r\n    \r\n    export interface UploadConfig {\r\n      id: string;\r\n      label?: string;\r\n      multiple: boolean;\r\n      acceptedFileTypes?: string[];\r\n      maxFileSize?: number; // em bytes\r\n      helperText?: string;\r\n      required?: boolean;\r\n      maxFiles?: number;\r\n      showFileList?: boolean;\r\n      messages?: {\r\n        success?: string;\r\n        error?: string;\r\n        fileTypeError?: string;\r\n        fileSizeError?: string;\r\n        maxFilesError?: string;\r\n      };\r\n    }\r\n    \r\n    interface FileMessage {\r\n      type: 'success' | 'error' | 'warning';\r\n      text: string;\r\n    }\r\n    \r\n    @Component({\r\n      selector: 'cfc-upload',\r\n      templateUrl: './upload.component.html',\r\n      styleUrl: './upload.component.scss'\r\n    })\r\n    export class UploadComponent {\r\n      @Input() config!: UploadConfig;\r\n      @Input() parentForm!: FormGroup;\r\n      @Output() filesChanged = new EventEmitter<File[]>();\r\n      \r\n      @ViewChild('fileInput') fileInput!: ElementRef;\r\n      \r\n      files: File[] = [];\r\n      isDragging = false;\r\n      isInvalid = false;\r\n      uploading = false;\r\n      message: FileMessage | null = null;\r\n      \r\n      get acceptedFileTypesString(): string {\r\n        return this.config?.acceptedFileTypes?.join(',') || '';\r\n      }\r\n      \r\n      constructor() { }\r\n      \r\n      ngOnInit(): void {\r\n        if (!this.config) {\r\n          console.error('A configuração do componente Upload é obrigatória');\r\n        }\r\n      }\r\n      \r\n      openFileSelector(): void {\r\n        this.fileInput.nativeElement.click();\r\n      }\r\n      \r\n      onDragOver(event: DragEvent): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.isDragging = true;\r\n      }\r\n      \r\n      onDragLeave(event: DragEvent): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.isDragging = false;\r\n      }\r\n      \r\n      onDrop(event: DragEvent): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.isDragging = false;\r\n        \r\n        if (event.dataTransfer?.files) {\r\n          this.handleFiles(event.dataTransfer.files);\r\n        }\r\n      }\r\n      \r\n      onFileSelected(event: Event): void {\r\n        const input = event.target as HTMLInputElement;\r\n        if (input.files) {\r\n          this.handleFiles(input.files);\r\n        }\r\n      }\r\n      \r\n      handleFiles(fileList: FileList): void {\r\n        if (!this.config) return;\r\n        \r\n        // Verificar se é permitido múltiplos arquivos\r\n        if (!this.config.multiple && fileList.length > 1) {\r\n          this.showMessage({\r\n            type: 'error',\r\n            text: this.config.messages?.error || 'É permitido o envio de apenas um arquivo'\r\n          });\r\n          return;\r\n        }\r\n        \r\n        // Verificar número máximo de arquivos\r\n        if (this.config.maxFiles && this.files.length + fileList.length > this.config.maxFiles) {\r\n          this.showMessage({\r\n            type: 'error',\r\n            text: this.config.messages?.maxFilesError || \r\n                  `É permitido o envio de no máximo ${this.config.maxFiles} arquivos`\r\n          });\r\n          return;\r\n        }\r\n        \r\n        // Validar e processar cada arquivo\r\n        const newFiles: File[] = [];\r\n        let hasInvalidFiles = false;\r\n        \r\n        this.uploading = true;\r\n        \r\n        // Array para armazenar promessas de processamento de arquivos\r\n        const fileProcessingPromises: Promise<void>[] = [];\r\n      \r\n        for (let i = 0; i < fileList.length; i++) {\r\n          const file = fileList[i];\r\n          const isValid = this.validateFile(file);\r\n          \r\n          if (isValid) {\r\n            // Criar uma promessa para cada arquivo\r\n            const filePromise = new Promise<void>((resolve) => {\r\n              const reader = new FileReader();\r\n              \r\n              reader.onload = () => {\r\n                // O arquivo foi lido completamente\r\n                if (!this.config.multiple) {\r\n                  // Se não permite múltiplos arquivos, substitui o arquivo existente\r\n                  if (this.files.length > 0) {\r\n                    this.showMessage({\r\n                      type: 'warning',\r\n                      text: 'O arquivo enviado anteriormente foi substituído'\r\n                    });\r\n                    this.files = [file];\r\n                    newFiles.push(file);\r\n                  } else {\r\n                    this.files.push(file);\r\n                    newFiles.push(file);\r\n                  }\r\n                } else {\r\n                  this.files.push(file);\r\n                  newFiles.push(file);\r\n                }\r\n                resolve();\r\n              };\r\n              \r\n              // Em caso de erro na leitura\r\n              reader.onerror = () => {\r\n                hasInvalidFiles = true;\r\n                this.showMessage({\r\n                  type: 'error',\r\n                  text: `Erro ao processar o arquivo ${file.name}`\r\n                });\r\n                resolve();\r\n              };\r\n              \r\n              // Inicia a leitura do arquivo\r\n              reader.readAsArrayBuffer(file);\r\n            });\r\n            \r\n            fileProcessingPromises.push(filePromise);\r\n          } else {\r\n            hasInvalidFiles = true;\r\n          }\r\n        }\r\n        \r\n        // Aguardar o processamento de todos os arquivos\r\n        Promise.all(fileProcessingPromises)\r\n          .then(() => {\r\n            this.uploading = false;\r\n            \r\n            if (newFiles.length > 0 && !hasInvalidFiles) {\r\n              this.showMessage({\r\n                type: 'success',\r\n                text: this.config?.messages?.success || 'Campo preenchido corretamente'\r\n              });\r\n            }\r\n            \r\n            this.filesChanged.emit(this.files);\r\n          })\r\n          .catch(error => {\r\n            this.uploading = false;\r\n            this.showMessage({\r\n              type: 'error',\r\n              text: 'Erro no processamento dos arquivos'\r\n            });\r\n            console.error('File processing error:', error);\r\n          });\r\n      }\r\n      \r\n      validateFile(file: File): boolean {\r\n        if (!this.config) return false;\r\n        \r\n        // Validar tipo de arquivo\r\n        if (this.config.acceptedFileTypes && this.config.acceptedFileTypes.length > 0) {\r\n          const fileNameParts = file.name.split('.');\r\n          const fileExtension = fileNameParts.length > 1 ? fileNameParts.pop()?.toLowerCase() : '';\r\n          const fileType = file.type;\r\n          \r\n          const isValidType = this.config.acceptedFileTypes.some(type => {\r\n            if (type.startsWith('.')) {\r\n              // Validação por extensão\r\n              return fileExtension ? `.${fileExtension}` === type : false;\r\n            } else {\r\n              // Validação por MIME type\r\n              return fileType === type || (type.includes('*') && fileType.startsWith(type.replace('*', '')));\r\n            }\r\n          });\r\n          \r\n          if (!isValidType) {\r\n            this.showMessage({\r\n              type: 'error',\r\n              text: this.config.messages?.fileTypeError || \r\n                    `O arquivo ${file.name} possui formato inválido`\r\n            });\r\n            return false;\r\n          }\r\n        }\r\n        \r\n        // Validar tamanho do arquivo\r\n        if (this.config.maxFileSize && file.size > this.config.maxFileSize) {\r\n          this.showMessage({\r\n            type: 'error',\r\n            text: this.config.messages?.fileSizeError || \r\n                  `O arquivo ${file.name} excede o tamanho máximo permitido`\r\n          });\r\n          return false;\r\n        }\r\n        \r\n        return true;\r\n      }\r\n      \r\n      removeFile(file: File): void {\r\n        const index = this.files.indexOf(file);\r\n        if (index !== -1) {\r\n          this.files.splice(index, 1);\r\n          this.filesChanged.emit(this.files);\r\n        }\r\n      }\r\n      \r\n      openFile(file: File): void {\r\n        // Abrir o arquivo em uma nova janela/guia do navegador\r\n        const url = URL.createObjectURL(file);\r\n        window.open(url, '_blank');\r\n      }\r\n      \r\n      getTruncatedName(name: string): string {\r\n        // Truncar o nome se for muito longo (por exemplo, 25 caracteres)\r\n        const maxLength = 25;\r\n        if (name.length <= maxLength) {\r\n          return name;\r\n        }\r\n        \r\n        const extension = name.split('.').pop() || '';\r\n        const fileName = name.substring(0, name.length - extension.length - 1);\r\n        \r\n        return `${fileName.substring(0, maxLength - extension.length - 4)}...${extension}`;\r\n      }\r\n      \r\n      formatFileSize(bytes: number): string {\r\n        if (bytes === 0) return '0 B';\r\n        \r\n        const k = 1024;\r\n        const sizes = ['B', 'KB', 'MB', 'GB'];\r\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n        \r\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\r\n      }\r\n      \r\n      showMessage(message: FileMessage): void {\r\n        this.message = message;\r\n        this.isInvalid = message.type === 'error';\r\n        \r\n        // Limpar a mensagem após 5 segundos\r\n        setTimeout(() => {\r\n          this.message = null;\r\n          if (message.type === 'error') {\r\n            this.isInvalid = false;\r\n          }\r\n        }, 5000);\r\n      }\r\n    }\r\n    ","<div class=\"upload-container\" [formGroup]=\"parentForm\" *ngIf=\"config\">\r\n    <!-- Label (opcional) -->\r\n    <label *ngIf=\"config.label\" [for]=\"config.id\" class=\"upload-label\">{{ config.label }}</label>\r\n\r\n    <!-- Área de upload -->\r\n    <div class=\"upload-area\" [class.dragging]=\"isDragging\" [class.invalid]=\"isInvalid\" (dragover)=\"onDragOver($event)\"\r\n        (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\" (click)=\"openFileSelector()\">\r\n\r\n        <!-- Ícone de upload -->\r\n        <i class=\"fa fa-upload upload-icon\"></i>\r\n\r\n        <!-- Placeholder -->\r\n        <span class=\"upload-placeholder\">\r\n            {{ config.multiple ? 'Selecione o(s) arquivo(s)' : 'Selecione o arquivo' }}\r\n        </span>\r\n\r\n        <!-- Input file oculto -->\r\n        <input type=\"file\" [id]=\"config.id\" class=\"file-input\" [multiple]=\"config.multiple\"\r\n            [accept]=\"acceptedFileTypesString\" (change)=\"onFileSelected($event)\" #fileInput>\r\n    </div>\r\n\r\n    <!-- Loading durante upload -->\r\n    <div *ngIf=\"uploading\" class=\"upload-loading\">\r\n        <div class=\"loading-spinner\"></div>\r\n        <span>Carregando...</span>\r\n    </div>\r\n\r\n    <!-- Mensagem de erro/sucesso -->\r\n    <div *ngIf=\"message\" class=\"upload-message\" [ngClass]=\"message.type\">\r\n        <i [class]=\"'fa ' + (message.type === 'error' ? 'fa-exclamation-circle' : 'fa-check-circle')\"></i>\r\n        {{ message.text }}\r\n    </div>\r\n\r\n    <!-- Texto auxiliar -->\r\n    <div *ngIf=\"config.helperText\" class=\"upload-helper-text\">\r\n        {{ config.helperText }}\r\n    </div>\r\n\r\n    <!-- Lista de arquivos -->\r\n    <div *ngIf=\"config.showFileList && files.length > 0\" class=\"file-list\">\r\n        <div *ngFor=\"let file of files\" class=\"file-item\">\r\n            <span class=\"file-name\" (click)=\"openFile(file)\">{{ getTruncatedName(file.name) }}</span>\r\n            <span class=\"file-size\">{{ formatFileSize(file.size) }}</span>\r\n            <button class=\"delete-button\" (click)=\"removeFile(file)\">\r\n                <i class=\"fa fa-trash\"></i>\r\n            </button>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'cfc-wizard-step',\n  templateUrl: './wizard-step.component.html',\n  styleUrls: ['./wizard-step.component.scss']\n})\nexport class WizardStepComponent {\n  @Input() label!: string;\n  @Input() optional = false;\n  @Input() disabled = false;\n  @Input() validated = false;\n\n  // Estados internos\n  isActive = false;\n  isCompleted = false;\n  \n  @ViewChild('content', { static: true }) contentTemplate!: TemplateRef<any>;\n}","<ng-template #content>\n  <ng-content></ng-content>\n</ng-template>","// wizard.component.ts\r\n// Adicione uma nova propriedade para controlar a orientação\r\nimport { Component, ContentChildren, QueryList, Output, EventEmitter, Input, HostListener, OnInit } from '@angular/core';\r\nimport { WizardStepComponent } from './wizardStep/wizard-step.component';\r\n\r\n@Component({\r\n  selector: 'cfc-wizard',\r\n  templateUrl: './wizard.component.html',\r\n  styleUrls: ['./wizard.component.scss']\r\n})\r\nexport class WizardComponent implements OnInit {\r\n  @ContentChildren(WizardStepComponent) stepsQuery!: QueryList<WizardStepComponent>;\r\n  steps: WizardStepComponent[] = [];\r\n  \r\n  @Input() currentStepIndex = 0;\r\n  @Input() showCancelButton = true;\r\n  @Input() alwaysShowBackButton = false;\r\n  @Input() isFirstStepDisabled = false;\r\n  @Input() isNextButtonDisabled = false;\r\n  @Input() isFinishButtonDisabled = false;\r\n  \r\n  @Input() cancelText = 'Cancelar';\r\n  @Input() backText = 'Voltar';\r\n  @Input() nextText = 'Avançar';\r\n  @Input() finishText = 'Concluir';\r\n  \r\n  // Nova propriedade para forçar o modo móvel\r\n  @Input() forceMobileMode: boolean | null = null;\r\n  \r\n  // Nova propriedade para controlar a orientação do wizard\r\n  @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n  \r\n  // Propriedade para armazenar o estado atual do modo móvel\r\n  isMobileView = false;\r\n  \r\n  @Output() stepChange = new EventEmitter<number>();\r\n  @Output() wizardCancel = new EventEmitter<void>();\r\n  @Output() wizardComplete = new EventEmitter<void>();\r\n\r\n  get isLastStep(): boolean {\r\n    return this.currentStepIndex === this.steps.length - 1;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.checkMobileView();\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this.stepsQuery.changes.subscribe(() => {\r\n      this.updateSteps();\r\n    });\r\n    \r\n    this.updateSteps();\r\n  }\r\n\r\n  // Método para detectar modo móvel quando a janela é redimensionada\r\n  @HostListener('window:resize')\r\n  onResize() {\r\n    this.checkMobileView();\r\n  }\r\n  \r\n  // Verifica se deve usar o modo móvel\r\n  checkMobileView() {\r\n    // Se forceMobileMode for fornecido, usa esse valor\r\n    // Caso contrário, faz detecção automática baseada na largura da tela\r\n    if (this.forceMobileMode !== null) {\r\n      this.isMobileView = this.forceMobileMode;\r\n    } else {\r\n      this.isMobileView = window.innerWidth <= 576; // Breakpoint padrão para mobile\r\n    }\r\n  }\r\n\r\n  updateSteps() {\r\n    this.steps = this.stepsQuery.toArray();\r\n    this.updateActiveStep();\r\n  }\r\n\r\n  next() {\r\n    if (this.currentStepIndex < this.steps.length - 1) {\r\n      this.currentStepIndex++;\r\n      this.updateActiveStep();\r\n      this.stepChange.emit(this.currentStepIndex);\r\n    }\r\n  }\r\n\r\n  previous() {\r\n    if (this.currentStepIndex > 0) {\r\n      this.currentStepIndex--;\r\n      this.updateActiveStep();\r\n      this.stepChange.emit(this.currentStepIndex);\r\n    }\r\n  }\r\n\r\n  finish() {\r\n    this.wizardComplete.emit();\r\n  }\r\n\r\n  onCancel() {\r\n    this.wizardCancel.emit();\r\n  }\r\n\r\n  updateActiveStep() {\r\n    this.steps.forEach((step, index) => {\r\n      step.isActive = index === this.currentStepIndex;\r\n      step.isCompleted = index < this.currentStepIndex;\r\n    });\r\n  }\r\n\r\n  goToStep(index: number) {\r\n    if (index >= 0 && index < this.steps.length) {\r\n      this.currentStepIndex = index;\r\n      this.updateActiveStep();\r\n      this.stepChange.emit(this.currentStepIndex);\r\n    }\r\n  }\r\n}","<!-- wizard.component.html -->\r\n<div class=\"wizard-container\" \r\n     [ngClass]=\"{\r\n       'mobile-view': isMobileView,\r\n       'vertical-layout': orientation === 'vertical'\r\n     }\">\r\n  \r\n  <!-- wizard.component.html (parte do layout vertical) -->\r\n  <ng-container *ngIf=\"orientation === 'vertical'\">\r\n    <div class=\"wizard-layout-vertical\">\r\n      <!-- Painel vertical de etapas -->\r\n      <div class=\"wizard-steps-panel-vertical\">\r\n        <div class=\"steps-container-vertical\">\r\n          <!-- Linha conectora contínua principal -->\r\n          <div class=\"vertical-connector-line\"></div>\r\n          \r\n          <ng-container *ngFor=\"let step of steps; let i = index; let last = last\">\r\n            <div class=\"step-item-vertical\" \r\n                [class.active]=\"i === currentStepIndex\"\r\n                [class.completed]=\"i < currentStepIndex\"\r\n                [class.disabled]=\"i > currentStepIndex\"\r\n                (click)=\"i <= currentStepIndex && goToStep(i)\">\r\n              <div class=\"step-label-vertical\">{{ step.label }}</div>\r\n              <div class=\"step-circle-vertical\">{{ i + 1 }}</div>\r\n            </div>\r\n          </ng-container>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- Área de conteúdo vertical -->\r\n      <div class=\"wizard-content-area-vertical\">\r\n        <ng-container *ngFor=\"let step of steps; let i = index\">\r\n          <div class=\"step-content\" [hidden]=\"i !== currentStepIndex\">\r\n            <ng-container *ngTemplateOutlet=\"step.contentTemplate\"></ng-container>\r\n          </div>\r\n        </ng-container>\r\n        \r\n        <!-- Navegação na parte inferior -->\r\n        <div class=\"wizard-navigation-container\">\r\n          <div class=\"wizard-navigation-content\">\r\n            <!-- Cancelar -->\r\n            <button \r\n              class=\"wizard-cancel-button\" \r\n              *ngIf=\"showCancelButton\" \r\n              (click)=\"onCancel()\">\r\n              {{ cancelText }}\r\n            </button>\r\n            \r\n            <div class=\"wizard-navigation-buttons\">\r\n              <button \r\n                class=\"wizard-back-button\"\r\n                [disabled]=\"currentStepIndex === 0\"\r\n                *ngIf=\"currentStepIndex > 0 || alwaysShowBackButton\"\r\n                (click)=\"previous()\">\r\n                {{ backText }}\r\n              </button>\r\n              \r\n              <button \r\n                class=\"wizard-next-button\"\r\n                [disabled]=\"isNextButtonDisabled\"\r\n                *ngIf=\"!isLastStep\"\r\n                (click)=\"next()\">\r\n                {{ nextText }}\r\n              </button>\r\n              \r\n              <button \r\n                class=\"wizard-finish-button\"\r\n                [disabled]=\"isFinishButtonDisabled\"\r\n                *ngIf=\"isLastStep\"\r\n                (click)=\"finish()\">\r\n                {{ finishText }}\r\n              </button>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n  \r\n  <!-- Layout horizontal (mantido como estava) -->\r\n  <ng-container *ngIf=\"orientation === 'horizontal'\">\r\n    <!-- Painel de etapas -->\r\n    <div class=\"wizard-steps-panel\" [ngClass]=\"{'hidden-xs': isMobileView && steps.length > 4}\">\r\n      <div class=\"steps-container\">\r\n        <!-- Componente Step -->\r\n        <ng-container *ngFor=\"let step of steps; let i = index; let last = last\">\r\n          <div class=\"step-item\" \r\n               [class.active]=\"i === currentStepIndex\"\r\n               [class.completed]=\"i < currentStepIndex\"\r\n               [class.disabled]=\"i > currentStepIndex\">\r\n            <div class=\"step-circle\">{{ i + 1 }}</div>\r\n            <div class=\"step-label\">{{ step.label }}</div>\r\n          </div>\r\n          <div class=\"step-connector\" *ngIf=\"!last\"></div>\r\n        </ng-container>\r\n      </div>\r\n    </div>\r\n    \r\n    <!-- Área de Conteúdo -->\r\n    <div class=\"wizard-content-area\">\r\n      <ng-container *ngFor=\"let step of steps; let i = index\">\r\n        <div class=\"step-content\" [hidden]=\"i !== currentStepIndex\">\r\n          <ng-container *ngTemplateOutlet=\"step.contentTemplate\"></ng-container>\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n    \r\n    <!-- Barra de Navegação -->\r\n    <div class=\"wizard-navigation-container\" [ngClass]=\"{'mobile-navigation': isMobileView}\">\r\n      <div class=\"wizard-navigation-content\">\r\n        <!-- Link Cancelar -->\r\n        <button \r\n          class=\"wizard-cancel-button\" \r\n          *ngIf=\"showCancelButton\" \r\n          (click)=\"onCancel()\">\r\n          {{ cancelText }}\r\n        </button>\r\n        \r\n        <div class=\"wizard-navigation-buttons\">\r\n          <!-- Modo Desktop: Botões regulares -->\r\n          <ng-container *ngIf=\"!isMobileView\">\r\n            <button \r\n              class=\"wizard-back-button\"\r\n              [disabled]=\"currentStepIndex === 0\"\r\n              *ngIf=\"currentStepIndex > 0 || alwaysShowBackButton\"\r\n              (click)=\"previous()\">\r\n              {{ backText }}\r\n            </button>\r\n            \r\n            <button \r\n              class=\"wizard-next-button\"\r\n              [disabled]=\"isNextButtonDisabled\"\r\n              *ngIf=\"!isLastStep\"\r\n              (click)=\"next()\">\r\n              {{ nextText }}\r\n            </button>\r\n            \r\n            <button \r\n              class=\"wizard-finish-button\"\r\n              [disabled]=\"isFinishButtonDisabled\"\r\n              *ngIf=\"isLastStep\"\r\n              (click)=\"finish()\">\r\n              {{ finishText }}\r\n            </button>\r\n          </ng-container>\r\n          \r\n          <!-- Modo Mobile: Botões circulares -->\r\n          <ng-container *ngIf=\"isMobileView\">\r\n            <!-- Botão voltar circular -->\r\n            <button \r\n              class=\"wizard-mobile-button wizard-mobile-back-button\"\r\n              [disabled]=\"currentStepIndex === 0\"\r\n              *ngIf=\"currentStepIndex > 0 || alwaysShowBackButton\"\r\n              (click)=\"previous()\">\r\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\r\n                <path d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n              </svg>\r\n            </button>\r\n            \r\n            <!-- Botão avançar circular -->\r\n            <button \r\n              class=\"wizard-mobile-button wizard-mobile-next-button\"\r\n              [disabled]=\"isNextButtonDisabled\"\r\n              *ngIf=\"!isLastStep\"\r\n              (click)=\"next()\">\r\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\r\n                <path d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n              </svg>\r\n            </button>\r\n            \r\n            <!-- Botão concluir circular -->\r\n            <button \r\n              class=\"wizard-mobile-button wizard-mobile-finish-button\"\r\n              [disabled]=\"isFinishButtonDisabled\"\r\n              *ngIf=\"isLastStep\"\r\n              (click)=\"finish()\">\r\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\r\n                <path d=\"M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z\"/>\r\n              </svg>\r\n            </button>\r\n          </ng-container>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n</div>","import {\r\n  Component,\r\n  Input,\r\n} from '@angular/core';\r\nimport { LogoViewMode } from '../../../enums/logo-view-mode.enum';\r\nimport { ButtonType } from '../../../enums/button-type.enum';\r\nimport { ButtonDensity } from '../../../enums/button-density.enum';\r\nimport { SignInType } from '../../../enums/sign-in-type.enum';\r\nimport { SignInDensity } from '../../../enums/sign-in-density.enum';\r\nimport { AvatarDensity } from '../../../enums/avatar-density.enum';\r\nimport { TooltipPlace } from '../../../enums/tooltip-place.enum';\r\nimport { BreadcrumbLink } from '../../../models/breadcrumb.model';\r\nimport { HeaderViewMode } from '../../../enums/header-view-mode.enum';\r\nimport { InputState } from '../../../enums/input-state.enum';\r\nimport { InputDensity } from '../../../enums/input-density.enum';\r\nimport { AvatarType } from '../../../enums/avatar-type.enum';\r\nimport { DividerMode } from '../../../enums/divider-mode.enum';\r\nimport { DividerType } from '../../../enums/divider-type.enum';\r\nimport { DividerAxis } from '../../../enums/divider-axis.enum';\r\nimport { DividerDensity } from '../../../enums/divider-density.enum';\r\nimport { SignInMode } from '../../../enums/sign-in-mode.enum';\r\nimport { TimerType } from '../../../enums/timer-type.enum';\r\nimport { MessageType } from '../../../enums/message-type.enum';\r\nimport { MessageState } from '../../../enums/message-state.enum';\r\nimport { CheckboxOptionState } from '../../../enums/checkbox-option-state.enum';\r\nimport { CheckboxOptionType } from '../../../enums/checkbox-option-type.enum';\r\nimport { CheckboxOption } from '../../../models/checkbox.model';\r\nimport { LoadingDensity } from '../../../enums/loading-density.enum';\r\nimport { ComponentType } from '../../../models/components.model';\r\nimport { ItemType } from '../../../enums/item-type.enum';\r\nimport { IllustrationType } from '../../../enums/illustration-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-test-component',\r\n  templateUrl: './test-component.component.html',\r\n  styleUrl: './test-component.component.scss',\r\n})\r\nexport class TestComponentComponent {\r\n[x: string]: any;\r\n\r\n  // inputs and outputs\r\n  @Input() selectedComponent: ComponentType = {\r\n    id: 0,\r\n    name: '',\r\n    clickEventName: 'setComponent',\r\n    isAlready: false\r\n  };\r\n\r\n  // cfc-avatar\r\n  avatarType: AvatarType = AvatarType.icon;\r\n  avatarName = 'avatar'\r\n  avatarDensity: AvatarDensity = AvatarDensity.medium;\r\n  avatarImageUrl = 'https://picsum.photos/id/823/400';\r\n\r\n  avatarTypes: AvatarType[] = Object.values(AvatarType);\r\n  avatarDensities: AvatarDensity[] = Object.values(AvatarDensity);\r\n  avatarTooltipPlaces: TooltipPlace[] = Object.values(TooltipPlace);\r\n\r\n  // cfc-breadcrumb\r\n  breadcrumbLabel = 'breadcrumb';\r\n  breadcrumbLinks: BreadcrumbLink[] = [\r\n    {\r\n      label: 'Página Inicial',\r\n      url: '/',\r\n      target: '_blank',\r\n      home: true\r\n    },\r\n    {\r\n      label: 'Página Ancestral 01',\r\n      url: '#',\r\n      target: '_blank'\r\n    },\r\n    {\r\n      label: 'Página Ancestral 02',\r\n      url: '#',\r\n      target: '_blank'\r\n    },\r\n    {\r\n      label: 'Página Atual',\r\n      active: true\r\n    }\r\n  ];\r\n\r\n  breadcrumbLinksString = JSON.stringify(this.breadcrumbLinks, null, 2);\r\n\r\n  updateBreadCrumbLinks(): void {\r\n    this.breadcrumbLinks = JSON.parse(this.breadcrumbLinksString);\r\n  }\r\n\r\n  // cfc-button\r\n  buttonLabel = 'button';\r\n  buttonType: ButtonType = ButtonType.tertiary;\r\n  buttonSubmit = false;\r\n  buttonCircle = false;\r\n  buttonDensity: ButtonDensity = ButtonDensity.middle;\r\n  buttonDisabled = false;\r\n  buttonBlock = false;\r\n  buttonIcon = 'clock';\r\n  buttonActive = false;\r\n  buttonInverted = false;\r\n  buttonLoading = false;\r\n\r\n  buttonTypes: ButtonType[] = Object.values(ButtonType);\r\n  buttonDensities: ButtonDensity[] = Object.values(ButtonDensity);\r\n\r\n  buttonClickEvent = () => alert('button event dispared!');\r\n\r\n  // cfc-card\r\n  cardDisabled = false;\r\n  cardHover = false;\r\n\r\n  // cfc-checkbox-option\r\n  checkboxOptionState: CheckboxOptionState = CheckboxOptionState.default;\r\n  checkboxOptionType: CheckboxOptionType = CheckboxOptionType.withRightLabel;\r\n  checkboxOptionChecked: boolean = false;\r\n  checkboxOptionOption: CheckboxOption = {\r\n    label: 'OPÇÃO1',\r\n    value: 'opção 1',\r\n    checked: false\r\n  };\r\n\r\n  checkboxOptionStates: CheckboxOptionState[] = Object.values(CheckboxOptionState);\r\n  checkboxOptionTypes: CheckboxOptionType[] = Object.values(CheckboxOptionType);\r\n\r\n  // cfc-divider\r\n  dividerMode: DividerMode = DividerMode.line;\r\n  dividerType: DividerType = DividerType.primary;\r\n  dividerAxis: DividerAxis = DividerAxis.horizontal;\r\n  dividerDensity: DividerDensity = DividerDensity.small;\r\n\r\n  dividerModes: DividerMode[] = Object.values(DividerMode);\r\n  dividerTypes: DividerType[] = Object.values(DividerType);\r\n  dividerAxises: DividerAxis[] = Object.values(DividerAxis);\r\n  dividerDensities: DividerDensity[] = Object.values(DividerDensity);\r\n\r\n  // cfc-footer\r\n  footerProjectName = 'EPC'\r\n  footerProjectVersion: string = '1.0.0';\r\n\r\n  // cfc-header\r\n  headerTitle = 'Testando Header';\r\n  headerDescription = 'Esse é apenas um teste';\r\n  headerUserName = 'Ana Freitas';\r\n  headerHasMenu = false;\r\n  headerHasTimer = true;\r\n  headerHasBookIcon = true;\r\n  headerTimeOut = 30;\r\n  headerTimeCritical = 20;\r\n  headerLogoViewMode: LogoViewMode = LogoViewMode.default\r\n  headerViewMode: HeaderViewMode = HeaderViewMode.default;\r\n\r\n  headerViewModes: HeaderViewMode[] = Object.values(HeaderViewMode);\r\n  headerLogoViewModes: LogoViewMode[] = Object.values(LogoViewMode);\r\n\r\n  headerClickEvent: () => void = () => alert('logo is clicked');\r\n\r\n  // cfc-icon\r\n  iconName = 'home';\r\n  iconFamilyName = 'fas';\r\n  iconClassName = '';\r\n  iconSize = '20px';\r\n  iconColor = 'blue';\r\n\r\n  // cfc-input\r\n  inputLabel = 'input-label';\r\n  inputType = 'text';\r\n  inputPlaceholder = 'placeholder';\r\n  inputState: InputState = InputState.info;\r\n  inputDensity: InputDensity = InputDensity.medium;\r\n  inputDisabled = false;\r\n  inputButtonIcon = 'clock';\r\n  inputIsPassword = false;\r\n  inputLabelInline = false;\r\n  inputIcon = 'user';\r\n  inputValue = 'value';\r\n\r\n  inputStates: InputState[] = Object.values(InputState);\r\n  inputDensities: InputDensity[] = Object.values(InputDensity);\r\n\r\n  inputOnChange: () => void = () => alert('input value is changed');\r\n  inputOnInput: () => void = () => alert('input value is submited');\r\n  inputOnIconClicked: () => void = () => alert('input icon os clicked');\r\n  inputOnIconSubmited: () => void = () => alert('input icon submited the value');\r\n\r\n  // cfc-item\r\n  itemType: ItemType = ItemType.default;\r\n  itemDisabled = false;\r\n  itemSelected = false;\r\n  itemHasDivider = true;\r\n  itemContent = 'Item 1';\r\n  itemUrl = 'https://www.google.com';\r\n\r\n  itemTypes: ItemType[] = Object.values(ItemType);\r\n\r\n  // cfc-loading\r\n  loadingDensity: LoadingDensity = LoadingDensity.medium;\r\n  loadingProgress?: number;\r\n\r\n  loadingDensities: LoadingDensity[] = Object.values(LoadingDensity);\r\n\r\n  // cfc-logo\r\n  logoWidth = 100;\r\n  logoIsClickable = false;\r\n  logoViewMode: LogoViewMode = LogoViewMode.default;\r\n\r\n  logoViewModes: LogoViewMode[] = Object.values(LogoViewMode);\r\n\r\n  logoClickEvent?: () => void = () => alert('a logo está clicável');\r\n\r\n  // cfc-menu\r\n  menuItems: any [] = [\r\n    {\r\n      id: 1,\r\n      iconName: 'folder',\r\n      name: 'Capacitadora',\r\n      list: [\r\n        {\r\n          iconName: 'laptop',\r\n          name: 'Gerenciamento',\r\n          url: 'capacitadora/gerenciamento',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'comment',\r\n          name: 'Homologação',\r\n          url: 'capacitadora/homologacao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      id: 2,\r\n      iconName: 'folder',\r\n      name: 'Minhas Atividades',\r\n      list: [\r\n        {\r\n          iconName: 'list',\r\n          name: 'Curso',\r\n          url: 'minhas-atividades/curso',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Evento',\r\n          url: 'minhas-atividades/evento',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Docência e Orientação',\r\n          url: 'minhas-atividades/docencia',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Participação em bancas',\r\n          url: 'minhas-atividades/bancas',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Comissão',\r\n          url: 'minhas-atividades/comissao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Curso Exterior',\r\n          url: 'minhas-atividades/curso-exterior',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Produção Intelectual',\r\n          url: 'minhas-atividades/producao-intelectual',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'list',\r\n          name: 'Pós, Grad. e Extensão',\r\n          url: 'minhas-atividades/pos-graduacao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      id: 3,\r\n      iconName: 'folder',\r\n      name: 'Homologacao',\r\n      list: [\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Curso',\r\n          url: 'homologacao/curso',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Evento',\r\n          url: 'homologacao/evento',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Docência e Orientação',\r\n          url: 'homologacao/docencia',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Participacao em bancas',\r\n          url: 'homologacao/banca',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Comissão',\r\n          url: 'homologacao/comissao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Curso Exterior',\r\n          url: 'homologacao/exterior',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Produção Intelectual',\r\n          url: 'homologacao/producao-intelectual',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'clone',\r\n          name: 'Pós, Grad. e Extensão',\r\n          url: 'homologacao/pos-graduacao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'book',\r\n          name: 'Câmara Plenária',\r\n          url: 'homologacao/camara-plenaria',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      id: 4,\r\n      iconName: 'folder',\r\n      name: 'Cadastros',\r\n      list: [\r\n        {\r\n          iconName: 'user-plus',\r\n          name: 'Abrangência',\r\n          url: 'cadastro/abrangencia',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'calendar-check',\r\n          name: 'Área',\r\n          url: 'cadastro/area',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'book',\r\n          name: 'Área Temática',\r\n          url: 'cadastro/area-tematica',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'calendar-check',\r\n          name: 'Critério de Avaliação',\r\n          url: 'cadastro/criterio-avaliacao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'calendar-check',\r\n          name: 'Formação Acadêmica',\r\n          url: 'cadastro/formacao-academica',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'calendar-check',\r\n          name: 'Instituição',\r\n          url: 'cadastro/instituicao',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'calendar-check',\r\n          name: 'Instrutor',\r\n          url: 'cadastro/instrutor',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'bars',\r\n          name: 'Modalidade',\r\n          url: 'cadastro/modalidade',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'briefcase',\r\n          name: 'Público Alvo',\r\n          url: 'cadastro/publico-alvo',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      id: 5,\r\n      iconName: 'folder',\r\n      name: 'Prestação de Contas',\r\n      list: [\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Atividades',\r\n          url: 'prestacao/atividades',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Profissionais',\r\n          url: 'prestacao/profissionais',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        // {\r\n        //   iconName: 'wallet',\r\n        //   name: 'Rel. Profissionais 2017',\r\n        //   url: '#',\r\n        //   clickEventlabel: 'navigate',\r\n        // },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Atividades Físico',\r\n          url: 'prestacao/atividades-fisico',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      id: 6,\r\n      iconName: 'folder',\r\n      name: 'Relatório Gerencial',\r\n      list: [\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Prestação de Conta',\r\n          url: 'relatorio/prestacao-conta',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Atividades Julgadas',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Atividades por Atas',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Prof. CNAI e CNPC',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Part. por Curso',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Turma por Curso',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Curso por Capac.',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Part. por Evento',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Evento por Cap',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Edição de Evento',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'wallet',\r\n          name: 'Rel. Edição de Evento',\r\n          url: '#',\r\n          clickEventlabel: 'navigate',\r\n        },\r\n        {\r\n          iconName: 'folder',\r\n          name: 'Relatório de Gestor',\r\n          list: [\r\n            {\r\n              iconName: 'wallet',\r\n              name: 'Ativ. Aguard. Análise',\r\n              url: '#',\r\n              clickEventlabel: 'navigate',\r\n            },\r\n            {\r\n              iconName: 'wallet',\r\n              name: 'Ativ. em Análise',\r\n              url: '#',\r\n              clickEventlabel: 'navigate',\r\n            },\r\n            {\r\n              iconName: 'wallet',\r\n              name: 'Ativ. Julg. Membro',\r\n              url: '#',\r\n              clickEventlabel: 'navigate',\r\n            },\r\n          ],\r\n        },\r\n      ],\r\n    },\r\n  ];\r\n\r\n  // cfc-message\r\n  messageType: MessageType = MessageType.feedback;\r\n  messageState: MessageState = MessageState.warning;\r\n  messageMessage = 'Mensagem de alerta.';\r\n  messageDescription = 'Descrição da mensagem de alerta';\r\n\r\n  messageTypes: MessageType[] = Object.values(MessageType);\r\n  messageStates: MessageState[] = Object.values(MessageState);\r\n\r\n  // cfc-select\r\n  selectLabel = 'Select Label';\r\n  selectPlaceholder = 'selecione o item'\r\n  selectFeedbackMessage = 'feedback auxiliar de controle'\r\n  selectFeedbackState: MessageState = MessageState.warning;\r\n\r\n  // cfc-sign-in\r\n  signInLabel = 'cfc label';\r\n  signInType: SignInType = SignInType.primary;\r\n  signInDensity: SignInDensity = SignInDensity.middle;\r\n  signInMode: SignInMode = SignInMode.internal;\r\n  signInDisabled = false;\r\n  signInBlock = false;\r\n  signInCircle = false;\r\n  signInExternalLabel = 'gov.br';\r\n  signInExternalImageUrl = 'https://upload.wikimedia.org/wikipedia/commons/c/c1/Google_%22G%22_logo.svg';\r\n\r\n  signInTypes: SignInType[] = Object.values(SignInType);\r\n  signInDensities: SignInDensity[] = Object.values(SignInDensity);\r\n  signInModes: SignInMode[] = Object.values(SignInMode);\r\n\r\n  // cfc-template-error\r\n  illustrations = IllustrationType;\r\n\r\n  // cfc-timer\r\n  timerType: TimerType = TimerType.primary;\r\n  timer = 120;\r\n  timerCritical = 115;\r\n\r\n  timerTypes: TimerType[] = Object.values(TimerType);\r\n\r\n  onTimeEvent = () => {\r\n    this.timer--;\r\n  };\r\n  onTimeOutEvent = () => {\r\n    alert('encerrou a contagem regressiva');\r\n    window.location.reload();\r\n  };\r\n\r\n}\r\n","<ng-container *ngIf=\"selectedComponent.name; else noComponentSelected\">\r\n  <div\r\n    fxFlex=\"grow\"\r\n    fxLayout=\"column\"\r\n    fxLayoutAlign=\"stretch center\"\r\n    fxLayoutGap=\"1rem\">\r\n\r\n    <h2 style=\"font-weight: 700;\">cfc-{{ selectedComponent.name }}</h2>\r\n\r\n    <cfc-avatar\r\n      *ngIf=\"selectedComponent.name === 'avatar'\"\r\n      [type]=\"avatarType\"\r\n      [name]=\"avatarName\"\r\n      [density]=\"avatarDensity\"\r\n      [imageUrl]=\"avatarImageUrl\"\r\n    ></cfc-avatar>\r\n\r\n    <cfc-breadcrumb\r\n      *ngIf=\"selectedComponent.name === 'breadcrumb'\"\r\n      [label]=\"breadcrumbLabel\"\r\n    ></cfc-breadcrumb>\r\n\r\n    <cfc-button\r\n      *ngIf=\"selectedComponent.name === 'button'\"\r\n      [label]=\"buttonLabel\"\r\n      [type]=\"buttonType\"\r\n      [submit]=\"buttonSubmit\"\r\n      [circle]=\"buttonCircle\"\r\n      [density]=\"buttonDensity\"\r\n      [disabled]=\"buttonDisabled\"\r\n      [block]=\"buttonBlock\"\r\n      [icon]=\"buttonIcon\"\r\n      [active]=\"buttonActive\"\r\n      [inverted]=\"buttonInverted\"\r\n      [loading]=\"buttonLoading\"\r\n      (click)=\"buttonClickEvent()\"\r\n    ></cfc-button>\r\n\r\n    <cfc-card\r\n      *ngIf=\"selectedComponent.name === 'card'\"\r\n      [disabled]=\"cardDisabled\"\r\n      [hover]=\"cardHover\"\r\n    ></cfc-card>\r\n\r\n    <cfc-carousel\r\n      *ngIf=\"selectedComponent.name === 'carousel'\"\r\n    ></cfc-carousel>\r\n\r\n    <cfc-collapse\r\n      *ngIf=\"selectedComponent.name === 'collapse'\"\r\n    ></cfc-collapse>\r\n\r\n    <cfc-cookie-bar\r\n      *ngIf=\"selectedComponent.name === 'cookie-bar'\"\r\n    ></cfc-cookie-bar>\r\n\r\n    <cfc-datetimer-picker\r\n      *ngIf=\"selectedComponent.name === 'datetimer-picker'\"\r\n    ></cfc-datetimer-picker>\r\n\r\n    <div *ngIf=\"selectedComponent.name === 'divider'\"\r\n      [fxLayout]=\"dividerAxis === 'horizontal' ? 'column' : 'row'\">\r\n      <div>Uma coisa</div>\r\n      <cfc-divider\r\n        [mode]=\"dividerMode\"\r\n        [type]=\"dividerType\"\r\n        [axis]=\"dividerAxis\"\r\n        [density]=\"dividerDensity\"\r\n      ></cfc-divider>\r\n      <div>Ou outra</div>\r\n    </div>\r\n\r\n    <cfc-footer\r\n      *ngIf=\"selectedComponent.name === 'footer'\"\r\n      [projectName]=\"footerProjectName\"\r\n      [projectVersion]=\"footerProjectVersion\"\r\n    ></cfc-footer>\r\n\r\n    <cfc-header\r\n      *ngIf=\"selectedComponent.name === 'header'\"\r\n      [title]=\"headerTitle\"\r\n      [description]=\"headerDescription\"\r\n      [userName]=\"headerUserName\"\r\n      [viewMode]=\"headerViewMode\"\r\n      [hasMenu]=\"headerHasMenu\"\r\n      [hasTimer]=\"headerHasTimer\"\r\n      [hasBookIcon]=\"headerHasBookIcon\"\r\n      [logoViewMode]=\"headerLogoViewMode\"\r\n      [timeLogout]=\"headerTimeOut\"\r\n      [timeCritical]=\"headerTimeCritical\"\r\n      (criticalTimeEvent)=\"headerClickEvent()\"\r\n    ></cfc-header>\r\n\r\n    <cfc-icon\r\n      *ngIf=\"selectedComponent.name === 'icon'\"\r\n      [iconName]=\"iconName\"\r\n      [familyName]=\"iconFamilyName\"\r\n      [className]=\"iconClassName\"\r\n      [size]=\"iconSize\"\r\n      [color]=\"iconColor\"\r\n    ></cfc-icon>\r\n\r\n    <cfc-input\r\n      *ngIf=\"selectedComponent.name === 'input'\"\r\n      [disabled]=\"inputDisabled\"\r\n      [density]=\"inputDensity\"\r\n      [isPassword]=\"inputIsPassword\"\r\n      [label]=\"inputLabel\"\r\n      [type]=\"inputType\"\r\n      [buttonIcon]=\"inputButtonIcon\"\r\n      [placeholder]=\"inputPlaceholder\"\r\n      [labelInline]=\"inputLabelInline\"\r\n      [state]=\"inputState\"\r\n      [icon]=\"inputIcon\"\r\n      (onChange)=\"inputOnChange()\"\r\n      (onInput)=\"inputOnInput()\"\r\n      (onIconClicked)=\"inputOnIconClicked()\"\r\n      (onIconSubmited)=\"inputOnIconSubmited()\"\r\n    ></cfc-input>\r\n\r\n    <cfc-item\r\n      *ngIf=\"selectedComponent.name === 'item'\"\r\n      [type]=\"itemType\"\r\n      [disabled]=\"itemDisabled\"\r\n      [selected]=\"itemSelected\"\r\n      [hasDivider]=\"itemHasDivider\"\r\n      [url]=\"itemUrl\">\r\n      <span default>\r\n        {{ itemContent }}\r\n      </span>\r\n      <span button>\r\n        {{ itemContent }}\r\n      </span>\r\n      <span link>\r\n        {{ itemContent }}\r\n      </span>\r\n    </cfc-item>\r\n\r\n    <cfc-loading\r\n      *ngIf=\"selectedComponent.name === 'loading'\"\r\n      [density]=\"loadingDensity\"\r\n      [progress]=\"loadingProgress\"\r\n    ></cfc-loading>\r\n\r\n    <cfc-list\r\n      *ngIf=\"selectedComponent.name === 'list'\"\r\n      [title]=\"'Minha Lista'\">\r\n      <cfc-list-item>\r\n        Item 1\r\n      </cfc-list-item>\r\n      <cfc-list-item>\r\n        Item 2\r\n      </cfc-list-item>\r\n      <cfc-list-item>\r\n        <strong>Item 3 com conteúdo personalizado</strong>\r\n      </cfc-list-item>\r\n    </cfc-list>\r\n\r\n    <cfc-logo\r\n      *ngIf=\"selectedComponent.name === 'logo'\"\r\n      [width]=\"logoWidth\"\r\n      [viewMode]=\"logoViewMode\"\r\n      [isClickable]=\"logoIsClickable\"\r\n      (clickEvent)=\"logoClickEvent\"\r\n    ></cfc-logo>\r\n\r\n    <cfc-magic-button\r\n      *ngIf=\"selectedComponent.name === 'magic-button'\"\r\n    ></cfc-magic-button>\r\n\r\n    <cfc-menu\r\n      *ngIf=\"selectedComponent.name === 'menu'\"\r\n      [menuItems]=\"menuItems\"\r\n    ></cfc-menu>\r\n\r\n    <cfc-message\r\n      #message\r\n      [hidden]=\"selectedComponent.name !== 'message'\"\r\n      [type]=\"messageType\"\r\n      [state]=\"messageState\"\r\n      [message]=\"messageMessage\"\r\n      [description]=\"messageDescription\"\r\n    ></cfc-message>\r\n\r\n    <cfc-modal\r\n      *ngIf=\"selectedComponent.name === 'modal'\"\r\n    ></cfc-modal>\r\n\r\n    <cfc-notification\r\n      *ngIf=\"selectedComponent.name === 'notification'\"\r\n    ></cfc-notification>\r\n\r\n    <cfc-notification-panel\r\n      *ngIf=\"selectedComponent.name === 'notification-panel'\"\r\n    ></cfc-notification-panel>\r\n\r\n    <cfc-page-content\r\n      *ngIf=\"selectedComponent.name === 'page-content'\"\r\n    ></cfc-page-content>\r\n\r\n    <cfc-pagination\r\n      *ngIf=\"selectedComponent.name === 'pagination'\"\r\n    ></cfc-pagination>\r\n\r\n    <cfc-radio\r\n      *ngIf=\"selectedComponent.name === 'radio'\"\r\n    ></cfc-radio>\r\n\r\n    <cfc-scrim\r\n      *ngIf=\"selectedComponent.name === 'scrim'\"\r\n    ></cfc-scrim>\r\n\r\n    <cfc-select\r\n      *ngIf=\"selectedComponent.name === 'select'\"\r\n      [placeholder]=\"selectPlaceholder\"\r\n      [label]=\"selectLabel\"\r\n      [feedbackMessage]=\"selectFeedbackMessage\"\r\n      [feedbackState]=\"selectFeedbackState\"\r\n    ></cfc-select>\r\n\r\n    <cfc-sign-in\r\n      *ngIf=\"selectedComponent.name === 'sign-in'\"\r\n      [label]=\"signInLabel\"\r\n      [type]=\"signInType\"\r\n      [density]=\"signInDensity\"\r\n      [mode]=\"signInMode\"\r\n      [disabled]=\"signInDisabled\"\r\n      [block]=\"signInBlock\"\r\n      [circle]=\"signInCircle\"\r\n      [externalImageUrl]=\"signInExternalImageUrl\"\r\n      [externalLabel]=\"signInExternalLabel\"\r\n    ></cfc-sign-in>\r\n\r\n    <cfc-skiplink\r\n      *ngIf=\"selectedComponent.name === 'skiplink'\"\r\n    ></cfc-skiplink>\r\n\r\n    <cfc-slider\r\n      *ngIf=\"selectedComponent.name === 'slider'\"\r\n    ></cfc-slider>\r\n\r\n    <cfc-switch\r\n      *ngIf=\"selectedComponent.name === 'switch'\"\r\n    ></cfc-switch>\r\n\r\n    <cfc-tab\r\n      *ngIf=\"selectedComponent.name === 'tab'\"\r\n    ></cfc-tab>\r\n\r\n    <cfc-table\r\n      *ngIf=\"selectedComponent.name === 'table'\"\r\n    ></cfc-table>\r\n\r\n    <cfc-tag\r\n      *ngIf=\"selectedComponent.name === 'tag'\"\r\n    ></cfc-tag>\r\n\r\n    <cfc-template-error\r\n      *ngIf=\"selectedComponent.name === 'template-error'\"\r\n      illustrationUrl=\"assets/illustrations/error19.png\"\r\n      [principalText]=\"'Lorem Ipsum'\"\r\n      [secondaryText]=\"'Lorem Ipsum'\"\r\n      [suportText]=\"'Lorem Ipsum'\"\r\n    ></cfc-template-error>\r\n\r\n    <cfc-textarea\r\n      *ngIf=\"selectedComponent.name === 'textarea'\"\r\n    ></cfc-textarea>\r\n\r\n    <cfc-timer\r\n      *ngIf=\"selectedComponent.name === 'timer'\"\r\n      [type]=\"timerType\"\r\n      [initialTime]=\"timer\"\r\n      [criticalTime]=\"timerCritical\"\r\n      (timeEvent)=\"onTimeEvent()\"\r\n      (timeOutEvent)=\"onTimeOutEvent()\"\r\n    ></cfc-timer>\r\n\r\n    <cfc-tooltip\r\n      *ngIf=\"selectedComponent.name === 'tooltip'\"\r\n    ></cfc-tooltip>\r\n\r\n    <cfc-upload\r\n      *ngIf=\"selectedComponent.name === 'upload'\"\r\n    ></cfc-upload>\r\n\r\n    <cfc-wizard\r\n      *ngIf=\"selectedComponent.name === 'wizard'\"\r\n    ></cfc-wizard>\r\n\r\n    <div style=\"width: 100%;\">\r\n      <cfc-divider></cfc-divider>\r\n    </div>\r\n\r\n    <form\r\n      fxLayout=\"row\"\r\n      fxLayoutAlign=\"center center\"\r\n      fxLayoutGap=\"0.5rem\">\r\n\r\n      <!-- avatar -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'avatar'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"avatarType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of avatarTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"name\">\r\n                name\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"avatarName\"\r\n                name=\"name\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"density\">\r\n                density\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"density\"\r\n                [(ngModel)]=\"avatarDensity\"\r\n                name=\"density\">\r\n                <option\r\n                  *ngFor=\"let density of avatarDensities\"\r\n                  [value]=\"density\">\r\n                  {{ density }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"imageUrl\">\r\n                imageUrl\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 300px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"avatarImageUrl\"\r\n                name=\"imageUrl\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- breadcrumb -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'breadcrumb'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"label\">\r\n                label\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"breadcrumbLabel\"\r\n                name=\"label\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- button -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'button'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"label\">\r\n                label\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"buttonLabel\"\r\n                name=\"label\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"buttonType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of buttonTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"density\">\r\n                density\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"density\"\r\n                [(ngModel)]=\"buttonDensity\"\r\n                name=\"density\">\r\n                <option\r\n                  *ngFor=\"let density of buttonDensities\"\r\n                  [value]=\"density\">\r\n                  {{ density }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"icon\">\r\n                icon\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"buttonIcon\"\r\n                name=\"icon\">\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"circle\">\r\n                circle\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"circle\"\r\n                [(ngModel)]=\"buttonCircle\"\r\n                name=\"circle\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  circle\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not circle\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"submit\">\r\n                submit\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"submit\"\r\n                [(ngModel)]=\"buttonSubmit\"\r\n                name=\"submit\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  submit\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not submit\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"disabled\">\r\n                disabled\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"disabled\"\r\n                [(ngModel)]=\"buttonDisabled\"\r\n                name=\"disabled\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  disabled\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  enabled\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"block\">\r\n                block\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"block\"\r\n                [(ngModel)]=\"buttonBlock\"\r\n                name=\"block\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  block\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not block\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"inverted\">\r\n                inverted\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"inverted\"\r\n                [(ngModel)]=\"buttonInverted\"\r\n                name=\"inverted\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  inverted\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not inverted\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"actived\">\r\n                active\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"active\"\r\n                [(ngModel)]=\"buttonActive\"\r\n                name=\"active\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  actived\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  inactived\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"loading\">\r\n                loading\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"loading\"\r\n                [(ngModel)]=\"buttonLoading\"\r\n                name=\"loading\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  loading\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not loading\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- checkbox-option -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'checkbox-option'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"state\">\r\n                state\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"state\"\r\n                [(ngModel)]=\"checkboxOptionState\"\r\n                name=\"state\">\r\n                <option\r\n                  *ngFor=\"let state of checkboxOptionStates\"\r\n                  [value]=\"state\">\r\n                  {{ state }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <!-- <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"checkboxOptionType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of checkboxOptionTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div> -->\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"option\">\r\n                option\r\n              </label>\r\n              <textarea\r\n                class=\"test-component__input\"\r\n                style=\"height: 90px; white-space: pre-wrap; font-family: monospace;\"\r\n                id=\"option\"\r\n                name=\"option\"\r\n                readonly>\r\n{\r\n  name: {{ checkboxOptionOption.label }},\r\n  value: {{ checkboxOptionOption.value }}\r\n}</textarea>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"checkedChange\">\r\n                checkedChange\r\n              </label>\r\n              <textarea\r\n                class=\"test-component__input\"\r\n                style=\"height: 70px; width: 220px; white-space: pre-wrap; font-family: monospace;\"\r\n                type=\"text\"\r\n                name=\"checkedChange\"\r\n                readonly>\r\n{{ checkboxOptionChecked }}\r\n{{ checkboxOptionOption.value }}{{ !checkboxOptionChecked ? ' não' : '' }} selecionada.</textarea>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- divider -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'divider'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"mode\">\r\n                mode\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"mode\"\r\n                [(ngModel)]=\"dividerMode\"\r\n                name=\"mode\">\r\n                <option\r\n                  *ngFor=\"let mode of dividerModes\"\r\n                  [value]=\"mode\">\r\n                  {{ mode }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"dividerType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of dividerTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"axis\">\r\n                axis\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"axis\"\r\n                [(ngModel)]=\"dividerAxis\"\r\n                name=\"axis\">\r\n                <option\r\n                  *ngFor=\"let axis of dividerAxises\"\r\n                  [value]=\"axis\">\r\n                  {{ axis }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"density\">\r\n                density\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"density\"\r\n                [(ngModel)]=\"dividerDensity\"\r\n                name=\"density\">\r\n                <option\r\n                  *ngFor=\"let density of dividerDensities\"\r\n                  [value]=\"density\">\r\n                  {{ density }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- header -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'header'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"title\">\r\n                title\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"headerTitle\"\r\n                name=\"title\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"description\">\r\n                description\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"headerDescription\"\r\n                name=\"description\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"viewMode\">\r\n                viewMode\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                [(ngModel)]=\"headerViewMode\"\r\n                name=\"viewMode\">\r\n                <option\r\n                  *ngFor=\"let viewMode of headerViewModes\"\r\n                  [value]=\"viewMode\">\r\n                  {{ viewMode }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"userName\">\r\n                userName\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"headerUserName\"\r\n                name=\"userName\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"timeOut\">\r\n                timeOut\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"number\"\r\n                [(ngModel)]=\"headerTimeOut\"\r\n                name=\"timeOut\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"logoMode\">\r\n                logoMode\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                [(ngModel)]=\"headerLogoViewMode\"\r\n                name=\"logoMode\">\r\n                <option\r\n                  *ngFor=\"let logoMode of headerLogoViewModes\"\r\n                  [value]=\"logoMode\">\r\n                  {{ logoMode }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- icon -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'icon'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"iconName\">\r\n                iconName\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"iconName\"\r\n                name=\"iconName\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"familyName\">\r\n                familyName\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"iconFamilyName\"\r\n                name=\"familyName\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"className\">\r\n                className\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"iconClassName\"\r\n                name=\"className\">\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"size\">\r\n                size\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"iconSize\"\r\n                name=\"size\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"color\">\r\n                color\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"iconColor\"\r\n                name=\"color\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- input -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'input'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"label\">\r\n                label\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"inputLabel\"\r\n                name=\"label\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"state\">\r\n                state\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"state\"\r\n                [(ngModel)]=\"inputState\"\r\n                name=\"state\">\r\n                <option\r\n                  *ngFor=\"let type of inputStates\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"density\">\r\n                density\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"density\"\r\n                [(ngModel)]=\"inputDensity\"\r\n                name=\"density\">\r\n                <option\r\n                  *ngFor=\"let density of inputDensities\"\r\n                  [value]=\"density\">\r\n                  {{ density }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"placeholder\">\r\n                placeholder\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"inputPlaceholder\"\r\n                name=\"placeholder\">\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"ispassword\">\r\n                ispassword\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"ispassword\"\r\n                [(ngModel)]=\"inputIsPassword\"\r\n                name=\"ispassword\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  ispassword\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not ispassword\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"disabled\">\r\n                disabled\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"disabled\"\r\n                [(ngModel)]=\"inputDisabled\"\r\n                name=\"disabled\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  disabled\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  enabled\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"labelInline\">\r\n                labelInline\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"labelInline\"\r\n                [(ngModel)]=\"inputLabelInline\"\r\n                name=\"labelInline\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  row\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  column\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"iconButton\">\r\n                iconButton\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"inputButtonIcon\"\r\n                name=\"iconButton\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"iconButton\">\r\n                icon\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"inputIcon\"\r\n                name=\"icon\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- item -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'item'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"content\">\r\n                content\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"itemContent\"\r\n                name=\"content\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"itemType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of itemTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"disabled\">\r\n                disabled\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"disabled\"\r\n                [(ngModel)]=\"itemDisabled\"\r\n                name=\"disabled\">\r\n                <option\r\n                  [value]=\"false\">\r\n                  enabled\r\n                </option>\r\n                <option\r\n                  [value]=\"true\">\r\n                  disabled\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"url\">\r\n                url\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"itemUrl\"\r\n                name=\"url\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"selected\">\r\n                selected\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"selected\"\r\n                [(ngModel)]=\"itemSelected\"\r\n                name=\"selected\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  selected\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not selected\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"hasDivider\">\r\n                hasDivider\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"hasDivider\"\r\n                [(ngModel)]=\"itemHasDivider\"\r\n                name=\"hasDivider\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  divider\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not divider\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- loading -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'loading'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\">\r\n          <label\r\n            for=\"density\">\r\n            density\r\n          </label>\r\n          <select\r\n            class=\"test-component__input\"\r\n            [(ngModel)]=\"loadingDensity\"\r\n            name=\"density\">\r\n            <option\r\n              *ngFor=\"let density of loadingDensities\"\r\n              [value]=\"density\">\r\n              {{ density }}\r\n            </option>\r\n          </select>\r\n        </div>\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\">\r\n          <label\r\n            for=\"progress\">\r\n            progress\r\n          </label>\r\n          <input\r\n            class=\"test-component__input\"\r\n            style=\"width: 100px !important;\"\r\n            type=\"number\"\r\n            [(ngModel)]=\"loadingProgress\"\r\n            name=\"progress\">\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- logo -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'logo'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\">\r\n          <label\r\n            for=\"viewMode\">\r\n            viewMode\r\n          </label>\r\n          <select\r\n            class=\"test-component__input\"\r\n            [(ngModel)]=\"logoViewMode\"\r\n            name=\"viewMode\">\r\n            <option\r\n              *ngFor=\"let viewMode of logoViewModes\"\r\n              [value]=\"viewMode\">\r\n              {{ viewMode }}\r\n            </option>\r\n          </select>\r\n        </div>\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\">\r\n          <label\r\n            for=\"width\">\r\n            width\r\n          </label>\r\n          <input\r\n            class=\"test-component__input\"\r\n            style=\"width: 100px !important;\"\r\n            type=\"number\"\r\n            [(ngModel)]=\"logoWidth\"\r\n            name=\"width\">\r\n        </div>\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\">\r\n          <label\r\n            for=\"clickEvent\">\r\n            clickEvent\r\n          </label>\r\n          <select\r\n            class=\"test-component__input\"\r\n            id=\"logoIsClickable\"\r\n            [(ngModel)]=\"logoIsClickable\"\r\n            name=\"clickEvent\">\r\n            <option\r\n              [value]=\"true\">\r\n              clicável\r\n            </option>\r\n            <option\r\n              [value]=\"false\">\r\n              não clicável\r\n            </option>\r\n          </select>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- message -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'message'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"messageType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of messageTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"state\">\r\n                state\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"state\"\r\n                [(ngModel)]=\"messageState\"\r\n                name=\"state\">\r\n                <option\r\n                  *ngFor=\"let state of messageStates\"\r\n                  [value]=\"state\">\r\n                  {{ state }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"message\">\r\n                message\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 200px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"messageMessage\"\r\n                name=\"message\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"description\">\r\n                description\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 200px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"messageDescription\"\r\n                name=\"description\">\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <cfc-button (click)=\"message.openMessage()\" label=\"open\"></cfc-button>\r\n            <cfc-button (click)=\"message.closeMessage()\" label=\"close\"></cfc-button>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- sign-in -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'sign-in'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"label\">\r\n                label\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"signInLabel\"\r\n                name=\"label\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"signInType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of signInTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"density\">\r\n                density\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"density\"\r\n                [(ngModel)]=\"signInDensity\"\r\n                name=\"density\">\r\n                <option\r\n                  *ngFor=\"let density of signInDensities\"\r\n                  [value]=\"density\">\r\n                  {{ density }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"mode\">\r\n                mode\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"mode\"\r\n                [(ngModel)]=\"signInMode\"\r\n                name=\"mode\">\r\n                <option\r\n                  *ngFor=\"let mode of signInModes\"\r\n                  [value]=\"mode\">\r\n                  {{ mode }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"hasDivider\">\r\n                disabled\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"disabled\"\r\n                [(ngModel)]=\"signInDisabled\"\r\n                name=\"disabled\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  disabled\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  enabled\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"block\">\r\n                block\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"block\"\r\n                [(ngModel)]=\"signInBlock\"\r\n                name=\"block\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  block\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not block\r\n                </option>\r\n              </select>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"circle\">\r\n                circle\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"circle\"\r\n                [(ngModel)]=\"signInCircle\"\r\n                name=\"circle\">\r\n                <option\r\n                  [value]=\"true\">\r\n                  circle\r\n                </option>\r\n                <option\r\n                  [value]=\"false\">\r\n                  not circle\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"externalImageUrl\">\r\n                externalImageUrl\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 300px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"signInExternalImageUrl\"\r\n                name=\"externalImageUrl\">\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"externalLabel\">\r\n                externalLabel\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                type=\"text\"\r\n                [(ngModel)]=\"signInExternalLabel\"\r\n                name=\"externalLabel\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- timer -->\r\n      <ng-container *ngIf=\"selectedComponent.name === 'timer'\">\r\n        <div\r\n          fxLayout=\"column\"\r\n          fxLayoutAlign=\"center center\"\r\n          fxLayoutGap=\"0.5rem\">\r\n          <div fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"type\">\r\n                type\r\n              </label>\r\n              <select\r\n                class=\"test-component__input\"\r\n                id=\"type\"\r\n                [(ngModel)]=\"timerType\"\r\n                name=\"type\">\r\n                <option\r\n                  *ngFor=\"let type of timerTypes\"\r\n                  [value]=\"type\">\r\n                  {{ type }}\r\n                </option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n          <div fxLayout=\"row\"\r\n            fxLayoutAlign=\"center center\"\r\n            fxLayoutGap=\"0.5rem\">\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"timer\">\r\n                timer\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                [(ngModel)]=\"timer\"\r\n                name=\"timer\"\r\n                readonly>\r\n            </div>\r\n            <div\r\n              fxLayout=\"column\"\r\n              fxLayoutAlign=\"center center\">\r\n              <label\r\n                for=\"timerCritical\">\r\n                timerCritical\r\n              </label>\r\n              <input\r\n                class=\"test-component__input\"\r\n                style=\"width: 100px !important;\"\r\n                [(ngModel)]=\"timerCritical\"\r\n                name=\"timerCritical\"\r\n                readonly>\r\n            </div>\r\n          </div>\r\n          <div\r\n            fxLayout=\"column\"\r\n            fxLayoutAlign=\"center center\">\r\n            <label\r\n              for=\"timer\">\r\n              timer\r\n            </label>\r\n            <textarea\r\n              class=\"test-component__input\"\r\n              style=\"width: 400px !important; height: max-content;\"\r\n              type=\"number\"\r\n              name=\"timer\"\r\n              readonly>\r\n              timeEvent dispared in {{ timer }} seconds.\r\n            </textarea>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n    </form>\r\n  </div>\r\n</ng-container>\r\n\r\n<ng-template #noComponentSelected>\r\n  <div>\r\n    <h4\r\n      style=\"text-align: center;\">\r\n      Nenhum componente selecionado ainda\r\n    </h4>\r\n  </div>\r\n</ng-template>\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n} from '@angular/core';\r\nimport { ComponentType } from '../../models/components.model';\r\n\r\n@Component({\r\n  selector: 'cfc-test-page',\r\n  templateUrl: './test-page.component.html',\r\n  styleUrls: ['./test-page.component.scss'],\r\n})\r\nexport class TestPageComponent {\r\n\r\n  selectedComponent: ComponentType = {\r\n    id: 0,\r\n    name: '',\r\n    clickEventName: 'setComponent',\r\n    isAlready: false\r\n  };\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef\r\n  ) {}\r\n\r\n  onSelectComponent(component: ComponentType): void {\r\n    this.selectedComponent = component;\r\n  }\r\n\r\n}\r\n","<div fxLayout=\"row\">\r\n  <aside class=\"test-page__aside-menu\">\r\n    <cfc-components-list\r\n      (selectedComponent)=\"onSelectComponent($event)\"\r\n    ></cfc-components-list>\r\n  </aside>\r\n\r\n  <main\r\n    class=\"test-page__component-section\"\r\n    fxLayout=\"column\"\r\n    fxLayoutAlign=\"stretch center\">\r\n    <div fxLayoutAlign=\"start start\" style=\"width: 100%; margin-bottom: 1rem;\">\r\n      <cfc-breadcrumb></cfc-breadcrumb>\r\n    </div>\r\n    <cfc-test-component\r\n      [selectedComponent]='selectedComponent'\r\n    ></cfc-test-component>\r\n  </main>\r\n</div>\r\n","// wizard-navigation.component.ts\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'cfc-wizard-navigation',\n  templateUrl: './wizard-navigation.component.html',\n  styleUrls: ['./wizard-navigation.component.scss']\n})\nexport class WizardNavigationComponent {\n  @Input() showCancelButton = true;\n  @Input() isFirstStep = false;\n  @Input() isLastStep = false;\n  @Input() alwaysShowBackButton = false;\n  @Input() disableBack = false;\n  @Input() disableNext = false;\n  @Input() disableFinish = false;\n  \n  // Propriedade para controlar o modo móvel\n  @Input() isMobile = false;\n  \n  @Input() cancelText = 'Cancelar';\n  @Input() backText = 'Voltar';\n  @Input() nextText = 'Avançar';\n  @Input() finishText = 'Concluir';\n  \n  @Output() cancel = new EventEmitter<void>();\n  @Output() back = new EventEmitter<void>();\n  @Output() next = new EventEmitter<void>();\n  @Output() finish = new EventEmitter<void>();\n  \n  onCancel(): void {\n    this.cancel.emit();\n  }\n  \n  onBack(): void {\n    this.back.emit();\n  }\n  \n  onNext(): void {\n    this.next.emit();\n  }\n  \n  onFinish(): void {\n    this.finish.emit();\n  }\n}","<!-- wizard-navigation.component.html -->\n<div class=\"wizard-navigation-bar\" [ngClass]=\"{'mobile-navigation': isMobile}\">\n  <!-- Link Cancelar -->\n  <div class=\"cancel-area\">\n    <a *ngIf=\"showCancelButton\" \n       class=\"cancel-link\" \n       (click)=\"onCancel()\">\n      {{ cancelText }}\n    </a>\n  </div>\n  \n  <!-- Botões de navegação -->\n  <div class=\"navigation-buttons\">\n    <!-- Botão Voltar -->\n    <button \n      *ngIf=\"!isFirstStep || alwaysShowBackButton\" \n      [disabled]=\"isFirstStep || disableBack\"\n      [ngClass]=\"isMobile ? 'mobile-back-button' : 'back-button'\"\n      (click)=\"onBack()\">\n      <ng-container *ngIf=\"!isMobile\">\n        {{ backText }}\n      </ng-container>\n      <ng-container *ngIf=\"isMobile\">\n        <!-- Seta para esquerda -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n          <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\n        </svg>\n      </ng-container>\n    </button>\n    \n    <!-- Botão Avançar -->\n    <button \n      *ngIf=\"!isLastStep\" \n      [disabled]=\"disableNext\"\n      [ngClass]=\"isMobile ? 'mobile-next-button' : 'next-button'\"\n      (click)=\"onNext()\">\n      <ng-container *ngIf=\"!isMobile\">\n        {{ nextText }}\n      </ng-container>\n      <ng-container *ngIf=\"isMobile\">\n        <!-- Seta para direita -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n          <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n        </svg>\n      </ng-container>\n    </button>\n    \n    <!-- Botão Concluir -->\n    <button \n      *ngIf=\"isLastStep\" \n      [disabled]=\"disableFinish\"\n      [ngClass]=\"isMobile ? 'mobile-next-button' : 'finish-button'\"\n      (click)=\"onFinish()\">\n      <ng-container *ngIf=\"!isMobile\">\n        {{ finishText }}\n      </ng-container>\n      <ng-container *ngIf=\"isMobile\">\n        <!-- Check mark ou seta para direita -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n          <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n        </svg>\n      </ng-container>\n    </button>\n  </div>\n</div>","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/pt-br';\r\nimport localeData from 'dayjs/plugin/localeData';\r\n\r\ndayjs.extend(localeData);\r\n\r\n@Injectable()\r\nexport class DayjsDateAdapter extends DateAdapter<dayjs.Dayjs> {\r\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) public override locale: string) {\r\n    super();\r\n    dayjs.locale(locale);\r\n  }\r\n\r\n  getYear(date: dayjs.Dayjs): number {\r\n    return date.year();\r\n  }\r\n\r\n  getMonth(date: dayjs.Dayjs): number {\r\n    return date.month();\r\n  }\r\n\r\n  getDate(date: dayjs.Dayjs): number {\r\n    return date.date();\r\n  }\r\n\r\n  getDayOfWeek(date: dayjs.Dayjs): number {\r\n    return date.day();\r\n  }\r\n\r\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    return style === 'long'\r\n      ? dayjs.months()\r\n      : dayjs.monthsShort();\r\n  }\r\n\r\n  getDateNames(): string[] {\r\n    const dateNames: string[] = [];\r\n    for (let i = 1; i <= 31; i++) {\r\n      dateNames.push(String(i));\r\n    }\r\n    return dateNames;\r\n  }\r\n\r\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    return style === 'long'\r\n      ? dayjs.weekdays()\r\n      : dayjs.weekdaysShort();\r\n  }\r\n\r\n  getYearName(date: dayjs.Dayjs): string {\r\n    return date.format('YYYY');\r\n  }\r\n\r\n  getFirstDayOfWeek(): number {\r\n    return 0;\r\n  }\r\n\r\n  getNumDaysInMonth(date: dayjs.Dayjs): number {\r\n    return date.daysInMonth();\r\n  }\r\n\r\n  clone(date: dayjs.Dayjs): dayjs.Dayjs {\r\n    return date.clone();\r\n  }\r\n\r\n  createDate(year: number, month: number, date: number): dayjs.Dayjs {\r\n    // Corrigido: usar o método dayjs() para criar a data\r\n    return dayjs(new Date(year, month, date));\r\n  }\r\n\r\n  today(): dayjs.Dayjs {\r\n    return dayjs();\r\n  }\r\n\r\n  parse(value: unknown, parseFormat: string | string[] | undefined): dayjs.Dayjs | null {\r\n    if (value && typeof value === 'string') {\r\n      return dayjs(value, parseFormat);\r\n    } else if (value instanceof Date) {\r\n      return dayjs(value);\r\n    } else if (typeof value === 'number') {\r\n      return dayjs(value);\r\n    } else if (dayjs.isDayjs(value)) {\r\n      return dayjs(value).locale(this.locale);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  format(date: dayjs.Dayjs, displayFormat: string | undefined): string {\r\n    if (!this.isValid(date)) {\r\n      throw Error('DayjsDateAdapter: Cannot format invalid date.');\r\n    }\r\n    return date.locale(this.locale).format(displayFormat);\r\n  }\r\n\r\n  addCalendarYears(date: dayjs.Dayjs, years: number): dayjs.Dayjs {\r\n    return date.add(years, 'year');\r\n  }\r\n\r\n  addCalendarMonths(date: dayjs.Dayjs, months: number): dayjs.Dayjs {\r\n    return date.add(months, 'month');\r\n  }\r\n\r\n  addCalendarDays(date: dayjs.Dayjs, days: number): dayjs.Dayjs {\r\n    return date.add(days, 'day');\r\n  }\r\n\r\n  toIso8601(date: dayjs.Dayjs): string {\r\n    return date.toISOString();\r\n  }\r\n\r\n  override deserialize(value: unknown): dayjs.Dayjs | null {\r\n    let date;\r\n    if (value instanceof Date) {\r\n      date = dayjs(value);\r\n    }\r\n    if (typeof value === 'string') {\r\n      if (!value) {\r\n        return null;\r\n      }\r\n      date = dayjs(value).locale(this.locale);\r\n    }\r\n    if (date && this.isValid(date)) {\r\n      return date;\r\n    }\r\n    return super.deserialize(value);\r\n  }\r\n\r\n  isDateInstance(obj: unknown): boolean {\r\n    return dayjs.isDayjs(obj);\r\n  }\r\n\r\n  isValid(date: dayjs.Dayjs): boolean {\r\n    return date && date.isValid();\r\n  }\r\n\r\n  invalid(): dayjs.Dayjs {\r\n    return dayjs(null);\r\n  }\r\n}\r\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[cfcDirectiveController]'\r\n})\r\nexport class ControllerDirective implements OnChanges {\r\n  @Input() directiveName?: string;\r\n  @Input() directiveNames?: string[];\r\n  @Input() applyDirective?: boolean;\r\n  @Input() applyDirectives?: boolean[];\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n  ) { }\r\n\r\n  ngOnChanges(): void {\r\n    this.controlDirectives();\r\n  }\r\n\r\n  private controlDirectives(): void {\r\n    if (this.applyDirective && this.directiveName) {\r\n      this.updateDirective(this.applyDirective, this.directiveName);\r\n    } else {\r\n      this.updateDirectives();\r\n    }\r\n\r\n  }\r\n\r\n  private updateDirective(directiveFlag: string | boolean, directiveName: string): void {\r\n    if ((typeof directiveFlag === 'boolean' && directiveFlag) || (typeof directiveFlag === 'string' && directiveFlag === 'true')) {\r\n      this.el.nativeElement.setAttribute(directiveName, '');\r\n    } else {\r\n      this.el.nativeElement.removeAttribute(directiveName);\r\n    }\r\n  }\r\n\r\n  private updateDirectives(): void {\r\n    if (!this.directiveNames) return;\r\n    if (Array.isArray(this.directiveNames)) {\r\n      this.directiveNames.forEach((directiveName: string, index: number) => {\r\n        if (this.applyDirectives && Array.isArray(this.applyDirectives)) {\r\n          this.updateDirective(this.applyDirectives[index], directiveName);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AvatarDensity } from '../../../../enums/avatar-density.enum';\r\nimport { AvatarType } from '../../../../enums/avatar-type.enum';\r\n\r\n@Component({\r\n  selector: 'cfc-card-header',\r\n  templateUrl: './card-header.component.html',\r\n  styleUrl: './card-header.component.scss'\r\n})\r\nexport class CardHeaderComponent {\r\n  @Input() avatarType?: AvatarType;\r\n  @Input() avatarUrl?: string;\r\n  @Input() avatarName?: string;\r\n  @Input() title!: string;\r\n  @Input() subtitle!: string;\r\n\r\n  avatarDensities: typeof AvatarDensity = AvatarDensity;\r\n}\r\n","<div class=\"card-header\">\r\n  <div class=\"d-flex\">\r\n    <cfc-avatar\r\n      *ngIf=\"avatarType\"\r\n      [type]=\"avatarType\"\r\n      [imageUrl]=\"avatarUrl\"\r\n      [density]=\"avatarDensities.medium\">\r\n    </cfc-avatar>\r\n    <div class=\"ml-3\">\r\n      <div class=\"text-weight-semi-bold text-up-02\">\r\n        {{ title }}\r\n      </div>\r\n      <div>\r\n        {{ subtitle }}\r\n      </div>\r\n    </div>\r\n    <div class=\"ml-auto\">\r\n      <cfc-button\r\n        [circle]=\"true\"\r\n        icon=\"ellipsis-v\"\r\n      ></cfc-button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cfc-card-footer',\r\n  templateUrl: './card-footer.component.html',\r\n  styleUrl: './card-footer.component.scss'\r\n})\r\nexport class CardFooterComponent {\r\n  @Input() buttonLabel!: string;\r\n}\r\n","<div class=\"card-footer\">\r\n  <div class=\"d-flex\">\r\n    <div>\r\n      <cfc-button\r\n        [label]=\"buttonLabel\"\r\n        [highlight]=\"true\"\r\n      ></cfc-button>\r\n    </div>\r\n    <div class=\"ml-auto\">\r\n      <cfc-button\r\n        [circle]=\"true\"\r\n        icon=\"share-alt\"\r\n      ></cfc-button>\r\n      <cfc-button\r\n        [circle]=\"true\"\r\n        icon=\"heart\"\r\n      ></cfc-button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[fullWidth]'\r\n})\r\nexport class FullWidthDirective {\r\n  @Input() isFullWidth = true;\r\n\r\n  constructor(private el: ElementRef) { }\r\n\r\n  @HostBinding('style.width')\r\n  get width(): string {\r\n    this.el.nativeElement.style.width = this.isFullWidth ? '100%' : '';\r\n    return this.isFullWidth ? '100%' : 'auto';\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective implements OnChanges {\r\n  @Input() enableClickOutside: boolean = true;\r\n\r\n  @Output() clickOutside: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  private unlisten: (() => void) | null = null;\r\n\r\n  constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\r\n\r\n  ngOnDestroy(): void {\r\n    this.disableClickListener();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['enableClickOutside']) {\r\n      if (this.enableClickOutside) {\r\n        this.enableClickListener();\r\n      } else {\r\n        this.disableClickListener();\r\n      }\r\n    }\r\n  }\r\n\r\n  private enableClickListener(): void {\r\n    this.unlisten = this.renderer.listen(\r\n      'document',\r\n      'click',\r\n      (event: Event) => {\r\n        this.onOutsideClick(event);\r\n      }\r\n    );\r\n  }\r\n\r\n  private disableClickListener(): void {\r\n    if (this.unlisten) {\r\n      this.unlisten();\r\n      this.unlisten = null;\r\n    }\r\n  }\r\n\r\n  private onOutsideClick(event: Event): void {\r\n    const targetElement = event.target as HTMLElement;\r\n    const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n\r\n    if (!clickedInside) {\r\n      this.clickOutside.emit();\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CheckboxOption } from '../../models/checkbox.model';\r\n\r\n\r\n\r\n@Component({\r\n  selector: 'cfc-checkbox',\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => CheckboxComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class CheckboxComponent implements ControlValueAccessor {\r\n  @Input() name?: string;\r\n  @Input() id?: string;\r\n  @Input() label?: string;\r\n  @Input() value!: any;\r\n  @Input() formControlName: string | number | null = null;\r\n  @Input() disabled = false;\r\n  @Input() inline = false;\r\n  @Input() options!: CheckboxOption[];\r\n\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n\r\n  onChange: (value: any) => void = () => {};\r\n  onTouched: () => void = () => {};\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  onChecked(event: Event) {\r\n    const checked = (event.target as HTMLInputElement).checked;\r\n  }\r\n}\r\n","<ng-container *ngIf=\"options.length > 0\"\r\n  ><div\r\n    [class.d-inline-block]=\"inline\"\r\n    [class.mr-5]=\"inline\"\r\n    [class.mb-2]=\"!inline\"\r\n    *ngFor=\"let option of options; index as i\"\r\n  >\r\n    <div class=\"br-checkbox\">\r\n      <input\r\n        [attr.id]=\"i\"\r\n        [name]=\"name\"\r\n        type=\"checkbox\"\r\n        [attr.aria-label]=\"option.label\"\r\n        [value]=\"option.value\"\r\n        (change)=\"onChecked($event)\"\r\n      />\r\n      <label [attr.for]=\"i\">{{ option.label }}</label>\r\n    </div>\r\n  </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"options.length === 0\">\r\n  <div\r\n    [class.d-inline-block]=\"inline\"\r\n    [class.mr-5]=\"inline\"\r\n    [class.mb-2]=\"!inline\"\r\n  >\r\n    <div class=\"br-checkbox\">\r\n      <input\r\n        [attr.id]=\"id\"\r\n        [name]=\"name\"\r\n        type=\"checkbox\"\r\n        [attr.aria-label]=\"label\"\r\n        [value]=\"value\"\r\n        (change)=\"onChecked($event)\"\r\n      />\r\n      <label [attr.for]=\"id\">{{ label }}</label>\r\n    </div>\r\n  </div>\r\n</ng-container>\r\n","// step.component.ts\nimport { Component, Input, Output, EventEmitter, TemplateRef } from '@angular/core';\nimport { StepItem } from '../../models/step-item.model';\n\nexport type StepStatus = 'completed' | 'current' | 'upcoming' | 'error';\nexport type StepPosition = 'right' | 'left' | 'top' | 'bottom';\nexport type StepIndicatorType = 'numeric' | 'icon' | 'custom' | 'empty';\nexport type StepTagType = 'alert' | 'error' | 'success' | 'none';\nexport type StepLayoutType = 'horizontal' | 'vertical'; // Nova propriedade de tipo de layout\n\n@Component({\n  selector: 'cfc-step',\n  templateUrl: './step.component.html',\n  styleUrls: ['./step.component.scss']\n})\nexport class StepComponent {\n  @Input() steps: StepItem[] = [];\n  @Input() labelPosition: StepPosition = 'bottom';  // Padrão para horizontal\n  @Input() indicatorType: StepIndicatorType = 'numeric';\n  @Input() showHiddenSteps = false;\n  @Input() currentStep = 1;\n  @Input() allowClickOnCompleted = true;\n  @Input() allowClickOnUpcoming = false;\n  @Input() type: StepLayoutType = 'horizontal';  // Nova propriedade para controlar o layout\n  @Output() stepClick = new EventEmitter<number>();\n\n  constructor() {}\n\n  onStepClick(stepId: number, step: StepItem): void {\n    if (this.isStepClickable(step)) {\n      this.stepClick.emit(stepId);\n    }\n  }\n\n  // Hover event handlers\n  onStepMouseEnter(step: StepItem): void {\n    if (!step.disabled) {\n      step.hovered = true;\n    }\n  }\n\n  onStepMouseLeave(step: StepItem): void {\n    step.hovered = false;\n  }\n\n  isStepClickable(step: StepItem): boolean {\n    if (step.disabled) {\n      return false;\n    }\n\n    if (this.isCurrentStep(step)) {\n      return false;\n    }\n\n    if (this.isCompletedStep(step) && this.allowClickOnCompleted) {\n      return true;\n    }\n\n    if (this.isUpcomingStep(step) && this.allowClickOnUpcoming) {\n      return true;\n    }\n\n    return false;\n  }\n\n  getStepCursorClass(step: StepItem): string {\n    return this.isStepClickable(step) ? 'clickable' : '';\n  }\n\n  isCompletedStep(step: StepItem): boolean {\n    return step.status === 'completed';\n  }\n\n  isCurrentStep(step: StepItem): boolean {\n    return step.status === 'current' || step.id === this.currentStep;\n  }\n\n  isUpcomingStep(step: StepItem): boolean {\n    return step.status === 'upcoming';\n  }\n\n  isErrorStep(step: StepItem): boolean {\n    return step.status === 'error' || (!!step.errorMessage && step.errorMessage.length > 0);\n  }\n\n  hasHiddenStepsBefore(): boolean {\n    if (!this.showHiddenSteps) {\n      return this.steps.some(step => step.id < this.currentStep && step.disabled);\n    }\n    return false;\n  }\n\n  hasHiddenStepsAfter(): boolean {\n    if (!this.showHiddenSteps) {\n      return this.steps.some(step => step.id > this.currentStep && step.disabled);\n    }\n    return false;\n  }\n\n  hasTag(step: StepItem): boolean {\n    return !!step.tagType && step.tagType !== 'none';\n  }\n\n  hasAlertTag(step: StepItem): boolean {\n    return step.tagType === 'alert';\n  }\n\n  hasErrorTag(step: StepItem): boolean {\n    return step.tagType === 'error';\n  }\n\n  hasSuccessTag(step: StepItem): boolean {\n    return step.tagType === 'success';\n  }\n\n  getTooltipMessage(step: StepItem): string {\n    if (step.errorMessage && step.errorMessage.length > 0) {\n      return step.errorMessage;\n    } else if (step.alertMessage && step.alertMessage.length > 0) {\n      return step.alertMessage;\n    } else if (step.tooltip && step.tooltip.length > 0) {\n      return step.tooltip;\n    }\n    return '';\n  }\n\n  shouldReplaceIndicatorWithTag(step: StepItem): boolean {\n    return this.indicatorType === 'empty' && this.hasTag(step);\n  }\n  \n  isCurrentStepWithTag(step: StepItem): boolean {\n    return this.isCurrentStep(step) && this.hasTag(step);\n  }\n\n  getPreviousStepStatus(currentId: number): StepStatus | null {\n    const previousStep = this.steps.find(step => step.id === currentId - 1);\n    return previousStep ? previousStep.status : null;\n  }\n\n  isLast(index: number): boolean {\n    return index === this.steps.length - 1;\n  }\n  \n  // Métodos auxiliares para verificar o tipo de layout\n  isHorizontal(): boolean {\n    return this.type === 'horizontal';\n  }\n  \n  isVertical(): boolean {\n    return this.type === 'vertical';\n  }\n  \n  // Método para obter a classe de tooltip baseado no layout\n  getTooltipClass(step: StepItem): string {\n    let baseClass = 'ds-step-tooltip';\n    \n    if (this.isVertical()) {\n      baseClass += ' ds-vertical-step-tooltip';\n    } else {\n      baseClass += ' ds-horizontal-step-tooltip';\n    }\n    \n    if (this.hasAlertTag(step)) {\n      baseClass += ' alert-tooltip';\n    } else if (this.hasErrorTag(step)) {\n      baseClass += ' error-tooltip';\n    } else {\n      baseClass += ' info-tooltip';\n    }\n    \n    return baseClass;\n  }\n  \n  // Método para selecionar a posição adequada do label com base no layout\n  getLabelClass(step: StepItem): string {\n    let baseClass = '';\n    \n    if (this.isVertical()) {\n      baseClass = this.labelPosition === 'left' \n        ? 'ds-vertical-step-label-left' \n        : 'ds-vertical-step-label-right';\n    } else {\n      baseClass = this.labelPosition === 'top' \n        ? 'ds-step-label-top' \n        : 'ds-step-label-bottom';\n    }\n    \n    if (this.isCompletedStep(step)) baseClass += ' completed';\n    if (this.isCurrentStep(step)) baseClass += ' current';\n    if (this.isUpcomingStep(step)) baseClass += ' upcoming';\n    if (this.isErrorStep(step)) baseClass += ' error';\n    if (step.hovered) baseClass += ' hovered';\n    \n    return baseClass;\n  }\n}","<!-- step.component.html -->\n<div class=\"ds-step-container\" \n     [class.ds-vertical-step-container]=\"isVertical()\"\n     [class.ds-horizontal-step-container]=\"isHorizontal()\"\n     [class.has-hidden-steps-before]=\"hasHiddenStepsBefore()\"\n     [class.has-hidden-steps-after]=\"hasHiddenStepsAfter()\">\n  \n  <!-- Layout Horizontal -->\n  <div *ngIf=\"isHorizontal()\" class=\"ds-step-timeline\">\n    <div class=\"ds-step-wrapper\" *ngFor=\"let step of steps; let i = index; let isFirst = first; let isLast = last\">\n      \n      <!-- Posicionamento de rótulos: topo -->\n      <div *ngIf=\"labelPosition === 'top'\" class=\"ds-step-label-top\"\n           [class.completed]=\"isCompletedStep(step)\"\n           [class.current]=\"isCurrentStep(step)\" \n           [class.upcoming]=\"isUpcomingStep(step)\"\n           [class.error]=\"isErrorStep(step)\"\n           [class.hovered]=\"step.hovered\"\n           (mouseenter)=\"onStepMouseEnter(step)\"\n           (mouseleave)=\"onStepMouseLeave(step)\">\n        {{ step.label }}\n      </div>\n      \n      <div class=\"ds-step-indicator-line-container\">\n        <!-- Timeline: linha à esquerda -->\n        <div *ngIf=\"!isFirst\" class=\"ds-step-line-left\"\n             [class.completed]=\"isCompletedStep(step) || (getPreviousStepStatus(step.id) === 'completed')\"\n             [class.current]=\"isCurrentStep(step)\">\n        </div>\n        \n        <!-- Indicador de Step -->\n        <div class=\"ds-step-indicator\" \n             [class.completed]=\"isCompletedStep(step)\" \n             [class.current]=\"isCurrentStep(step)\" \n             [class.upcoming]=\"isUpcomingStep(step)\"\n             [class.error]=\"isErrorStep(step)\"\n             [class.numeric]=\"indicatorType === 'numeric'\"\n             [class.icon]=\"indicatorType === 'icon'\"\n             [class.custom]=\"indicatorType === 'custom'\"\n             [class.empty]=\"indicatorType === 'empty'\"\n             [class.disabled]=\"step.disabled\"\n             [class.with-tag]=\"hasTag(step)\"\n             [class.current-with-tag]=\"isCurrentStepWithTag(step)\"\n             [class]=\"getStepCursorClass(step)\"\n             [class.replace-with-tag]=\"shouldReplaceIndicatorWithTag(step)\"\n             [class.hovered]=\"step.hovered\"\n             (mouseenter)=\"onStepMouseEnter(step)\"\n             (mouseleave)=\"onStepMouseLeave(step)\"\n             (click)=\"onStepClick(step.id, step)\">\n          \n          <!-- Conteúdo do indicador (somente exibido quando não substituído pela tag) -->\n          <ng-container *ngIf=\"!shouldReplaceIndicatorWithTag(step)\">\n            <!-- Indicador numérico (padrão) -->\n            <ng-container *ngIf=\"(indicatorType === 'numeric' || (indicatorType === 'icon' && !step.icon)) && !isErrorStep(step) && !isCompletedStep(step)\">\n              {{ step.id }}\n            </ng-container>\n            \n            <!-- Indicador com ícone personalizado -->\n            <ng-container *ngIf=\"indicatorType === 'icon' && step.icon && !isErrorStep(step) && !isCompletedStep(step)\">\n              <i class=\"ds-step-icon\" [class]=\"step.icon\"></i>\n            </ng-container>\n            \n            <!-- Indicador com conteúdo personalizado -->\n            <ng-container *ngIf=\"indicatorType === 'custom' && step.customContent && !isErrorStep(step) && !isCompletedStep(step)\">\n              <ng-container *ngTemplateOutlet=\"step.customContent\"></ng-container>\n            </ng-container>\n            \n            <!-- Ícone de conclusão (check) para steps completados -->\n            <ng-container *ngIf=\"isCompletedStep(step) && !isErrorStep(step)\">\n              <i class=\"ds-step-completed-icon\">✓</i>\n            </ng-container>\n            \n            <!-- Indicador com erro -->\n            <ng-container *ngIf=\"isErrorStep(step)\">\n              <i class=\"ds-step-error-icon\">✕</i>\n            </ng-container>\n          </ng-container>\n          \n          <!-- Tags para o indicador (alerta, erro, conclusão) -->\n          <div *ngIf=\"hasTag(step)\" \n               class=\"ds-step-tag\"\n               [class.alert-tag]=\"hasAlertTag(step)\"\n               [class.error-tag]=\"hasErrorTag(step)\"\n               [class.success-tag]=\"hasSuccessTag(step)\"\n               [class.full-indicator]=\"shouldReplaceIndicatorWithTag(step)\">\n            <i *ngIf=\"hasAlertTag(step)\" class=\"ds-tag-icon alert-icon\">⚠</i>\n            <i *ngIf=\"hasErrorTag(step)\" class=\"ds-tag-icon error-icon\">✕</i>\n            <i *ngIf=\"hasSuccessTag(step)\" class=\"ds-tag-icon success-icon\">✓</i>\n          </div>\n          \n          <!-- Tooltip para erro, alerta ou informação -->\n          <div *ngIf=\"getTooltipMessage(step)\" [class]=\"getTooltipClass(step)\">\n            <div *ngIf=\"hasAlertTag(step) || hasErrorTag(step)\" class=\"tooltip-title\">\n              {{ hasAlertTag(step) ? 'Atenção!' : 'Erro!' }}\n            </div>\n            <div class=\"tooltip-message\">{{ getTooltipMessage(step) }}</div>\n          </div>\n        </div>\n        \n        <!-- Timeline: linha à direita -->\n        <div *ngIf=\"!isLast\" class=\"ds-step-line-right\"\n             [class.completed]=\"isCompletedStep(step)\"\n             [class.current]=\"isCurrentStep(step)\">\n        </div>\n      </div>\n      \n      <!-- Posição do rótulo: abaixo (padrão) -->\n      <div *ngIf=\"labelPosition === 'bottom'\" class=\"ds-step-label-bottom\"\n           [class.completed]=\"isCompletedStep(step)\"\n           [class.current]=\"isCurrentStep(step)\" \n           [class.upcoming]=\"isUpcomingStep(step)\"\n           [class.error]=\"isErrorStep(step)\"\n           [class.hovered]=\"step.hovered\"\n           (mouseenter)=\"onStepMouseEnter(step)\"\n           (mouseleave)=\"onStepMouseLeave(step)\">\n        {{ step.label }}\n      </div>\n    </div>\n  </div>\n  \n  <!-- Layout Vertical -->\n  <div *ngIf=\"isVertical()\" class=\"ds-vertical-step-timeline\">\n    <div class=\"ds-vertical-step-wrapper\" *ngFor=\"let step of steps; let i = index; let isFirst = first; let isLast = last\">\n      \n      <!-- Posicionamento de rótulos: esquerda -->\n      <div *ngIf=\"labelPosition === 'left'\" class=\"ds-vertical-step-label-left\"\n           [class.completed]=\"isCompletedStep(step)\"\n           [class.current]=\"isCurrentStep(step)\" \n           [class.upcoming]=\"isUpcomingStep(step)\"\n           [class.error]=\"isErrorStep(step)\"\n           [class.hovered]=\"step.hovered\"\n           (mouseenter)=\"onStepMouseEnter(step)\"\n           (mouseleave)=\"onStepMouseLeave(step)\">\n        {{ step.label }}\n      </div>\n      \n      <div class=\"ds-vertical-step-indicator-line-container\">\n        <!-- Timeline: linha acima -->\n        <div *ngIf=\"!isFirst\" class=\"ds-vertical-step-line-top\"\n             [class.completed]=\"isCompletedStep(step) || (getPreviousStepStatus(step.id) === 'completed')\"\n             [class.current]=\"isCurrentStep(step)\">\n        </div>\n        \n        <!-- Indicador de Step -->\n        <div class=\"ds-vertical-step-indicator\" \n             [class.completed]=\"isCompletedStep(step)\" \n             [class.current]=\"isCurrentStep(step)\" \n             [class.upcoming]=\"isUpcomingStep(step)\"\n             [class.error]=\"isErrorStep(step)\"\n             [class.numeric]=\"indicatorType === 'numeric'\"\n             [class.icon]=\"indicatorType === 'icon'\"\n             [class.custom]=\"indicatorType === 'custom'\"\n             [class.empty]=\"indicatorType === 'empty'\"\n             [class.disabled]=\"step.disabled\"\n             [class.with-tag]=\"hasTag(step)\"\n             [class.current-with-tag]=\"isCurrentStepWithTag(step)\"\n             [class]=\"getStepCursorClass(step)\"\n             [class.replace-with-tag]=\"shouldReplaceIndicatorWithTag(step)\"\n             [class.hovered]=\"step.hovered\"\n             (mouseenter)=\"onStepMouseEnter(step)\"\n             (mouseleave)=\"onStepMouseLeave(step)\"\n             (click)=\"onStepClick(step.id, step)\">\n          \n          <!-- Conteúdo do indicador (somente exibido quando não substituído pela tag) -->\n          <ng-container *ngIf=\"!shouldReplaceIndicatorWithTag(step)\">\n            <!-- Indicador numérico (padrão) -->\n            <ng-container *ngIf=\"(indicatorType === 'numeric' || (indicatorType === 'icon' && !step.icon)) && !isErrorStep(step) && !isCompletedStep(step)\">\n              {{ step.id }}\n            </ng-container>\n            \n            <!-- Indicador com ícone personalizado -->\n            <ng-container *ngIf=\"indicatorType === 'icon' && step.icon && !isErrorStep(step) && !isCompletedStep(step)\">\n              <i class=\"ds-step-icon\" [class]=\"step.icon\"></i>\n            </ng-container>\n            \n            <!-- Indicador com conteúdo personalizado -->\n            <ng-container *ngIf=\"indicatorType === 'custom' && step.customContent && !isErrorStep(step) && !isCompletedStep(step)\">\n              <ng-container *ngTemplateOutlet=\"step.customContent\"></ng-container>\n            </ng-container>\n            \n            <!-- Ícone de conclusão (check) para steps completados -->\n            <ng-container *ngIf=\"isCompletedStep(step) && !isErrorStep(step)\">\n              <i class=\"ds-step-completed-icon\">✓</i>\n            </ng-container>\n            \n            <!-- Indicador com erro -->\n            <ng-container *ngIf=\"isErrorStep(step)\">\n              <i class=\"ds-step-error-icon\">✕</i>\n            </ng-container>\n          </ng-container>\n          \n          <!-- Tags para o indicador (alerta, erro, conclusão) -->\n          <div *ngIf=\"hasTag(step)\" \n               class=\"ds-step-tag\"\n               [class.alert-tag]=\"hasAlertTag(step)\"\n               [class.error-tag]=\"hasErrorTag(step)\"\n               [class.success-tag]=\"hasSuccessTag(step)\"\n               [class.full-indicator]=\"shouldReplaceIndicatorWithTag(step)\">\n            <i *ngIf=\"hasAlertTag(step)\" class=\"ds-tag-icon alert-icon\">⚠</i>\n            <i *ngIf=\"hasErrorTag(step)\" class=\"ds-tag-icon error-icon\">✕</i>\n            <i *ngIf=\"hasSuccessTag(step)\" class=\"ds-tag-icon success-icon\">✓</i>\n          </div>\n          \n          <!-- Tooltip para erro, alerta ou informação -->\n          <div *ngIf=\"getTooltipMessage(step)\" [class]=\"getTooltipClass(step)\">\n            <div *ngIf=\"hasAlertTag(step) || hasErrorTag(step)\" class=\"tooltip-title\">\n              {{ hasAlertTag(step) ? 'Atenção!' : 'Erro!' }}\n            </div>\n            <div class=\"tooltip-message\">{{ getTooltipMessage(step) }}</div>\n          </div>\n        </div>\n        \n        <!-- Timeline: linha abaixo -->\n        <div *ngIf=\"!isLast\" class=\"ds-vertical-step-line-bottom\"\n             [class.completed]=\"isCompletedStep(step)\"\n             [class.current]=\"isCurrentStep(step)\">\n        </div>\n      </div>\n      \n      <!-- Posição do rótulo: direita (padrão para vertical) -->\n      <div *ngIf=\"labelPosition === 'right'\" class=\"ds-vertical-step-label-right\"\n           [class.completed]=\"isCompletedStep(step)\"\n           [class.current]=\"isCurrentStep(step)\" \n           [class.upcoming]=\"isUpcomingStep(step)\"\n           [class.error]=\"isErrorStep(step)\"\n           [class.hovered]=\"step.hovered\"\n           (mouseenter)=\"onStepMouseEnter(step)\"\n           (mouseleave)=\"onStepMouseLeave(step)\">\n        {{ step.label }}\n      </div>\n    </div>\n  </div>\n</div>","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport {\r\n  DateAdapter,\r\n  MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AvatarComponent } from './components/avatar/avatar.component';\r\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\r\nimport { ButtonComponent } from './components/button/button.component';\r\nimport { CardComponent } from './components/card/card.component';\r\nimport { CarouselComponent } from './components/carousel/carousel.component';\r\nimport { CfcDsRootComponent } from './cfc-ds-root.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ComponentsListComponent } from './pages/cfc-test-page/components-list/components-list.component';\r\nimport { CookieBarComponent } from './components/cookie-bar/cookie-bar.component';\r\nimport { DatetimerPickerComponent } from './components/datetimer-picker/datetimer-picker.component';\r\nimport { DividerComponent } from './components/divider/divider.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FooterComponent } from './components/footer/footer.component';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { IconComponent } from './components/icon/icon.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { ListComponent } from './components/list/list.component';\r\nimport { LogoComponent } from './components/logo/logo.component';\r\nimport { MagicButtonComponent } from './components/magic-button/magic-button.component';\r\nimport { MenuComponent } from './components/menu/menu.component';\r\nimport { MessageComponent } from './components/message/message.component';\r\nimport { ModalComponent } from './components/modal/modal.component';\r\nimport { NotificationComponent } from './components/notification/notification.component';\r\nimport { NotificationPanelComponent } from './components/notification-panel/notification-panel.component';\r\nimport { PageContentComponent } from './components/page-content/page-content.component';\r\nimport { PaginationComponent } from './components/pagination/pagination.component';\r\nimport { RadioComponent } from './components/radio/radio.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ScrimComponent } from './components/scrim/scrim.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { SignInComponent } from './components/sign-in/sign-in.component';\r\nimport { SkiplinkComponent } from './components/skiplink/skiplink.component';\r\nimport { SliderComponent } from './components/slider/slider.component';\r\nimport { SwitchComponent } from './components/switch/switch.component';\r\nimport { TabComponent } from './components/tab/tab.component';\r\nimport { TabItemComponent } from './components/tabItem/tab-item.component';\r\nimport { TabContentComponent } from './components/tabContent/tab-content.component';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TagComponent } from './components/tag/tag.component';\r\nimport { TestPageComponent } from './pages/cfc-test-page/test-page.component';\r\nimport { TextareaComponent } from './components/textarea/textarea.component';\r\nimport { TimerComponent } from './components/timer/timer.component';\r\nimport { TooltipComponent } from './components/tooltip/tooltip.component';\r\nimport { UploadComponent } from './components/upload/upload.component';\r\nimport { WizardComponent } from './components/wizard/wizard.component';\r\nimport { WizardStepComponent } from './components/wizard/wizardStep/wizard-step.component';\r\nimport { WizardNavigationComponent } from './components/wizard/wizardNavigation/wizard-navigation.component';\r\nimport { provideHttpClient } from '@angular/common/http';\r\nimport { TestComponentComponent } from './pages/cfc-test-page/test-component/test-component.component';\r\nimport { DayjsDateAdapter } from './providers/daysjs-date-adapter';\r\nimport { ControllerDirective } from './directives/controller.directive';\r\nimport { CardHeaderComponent } from './components/card/components/card-header/card-header.component';\r\nimport { CardContentComponent } from './components/card/components/card-content/card-content.component';\r\nimport { CardFooterComponent } from './components/card/components/card-footer/card-footer.component';\r\nimport { LoadingComponent } from './components/loading/loading.component';\r\nimport { ItemComponent } from './components/item/item.component';\r\nimport { CollapseComponent } from './components/collapse/collapse.component';\r\nimport { IllustrationStateComponent } from './components/illustration-state/illustration-state.component';\r\nimport { FullWidthDirective } from './directives/full-width.directive';\r\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\r\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\r\nimport { StepComponent } from './components/step/step.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    ReactiveFormsModule,\r\n    FormsModule,\r\n    FlexLayoutModule,\r\n  ],\r\n  declarations: [\r\n    CfcDsRootComponent,\r\n    TestPageComponent,\r\n    ComponentsListComponent,\r\n    TestComponentComponent,\r\n    AvatarComponent,\r\n    BreadcrumbComponent,\r\n    ButtonComponent,\r\n    CardComponent,\r\n    CardContentComponent,\r\n    CardHeaderComponent,\r\n    CardFooterComponent,\r\n    CarouselComponent,\r\n    CollapseComponent,\r\n    CookieBarComponent,\r\n    DatetimerPickerComponent,\r\n    DividerComponent,\r\n    FooterComponent,\r\n    HeaderComponent,\r\n    IconComponent,\r\n    InputComponent,\r\n    IllustrationStateComponent,\r\n    ItemComponent,\r\n    ListComponent,\r\n    LoadingComponent,\r\n    LogoComponent,\r\n    MagicButtonComponent,\r\n    MenuComponent,\r\n    MessageComponent,\r\n    ModalComponent,\r\n    NotificationComponent,\r\n    NotificationPanelComponent,\r\n    PageContentComponent,\r\n    PaginationComponent,\r\n    RadioComponent,\r\n    ScrimComponent,\r\n    SelectComponent,\r\n    SignInComponent,\r\n    SkiplinkComponent,\r\n    SliderComponent,\r\n    SwitchComponent,\r\n    TabComponent,\r\n    TabItemComponent,\r\n    TabContentComponent,\r\n    TableComponent,\r\n    TagComponent,\r\n    TextareaComponent,\r\n    TimerComponent,\r\n    TooltipComponent,\r\n    UploadComponent,\r\n    WizardComponent,\r\n    WizardStepComponent,\r\n    WizardNavigationComponent,\r\n    ClickOutsideDirective,\r\n    ControllerDirective,\r\n    FullWidthDirective,\r\n    CheckboxComponent,\r\n    StepComponent\r\n  ],\r\n  exports: [\r\n    AvatarComponent,\r\n    BreadcrumbComponent,\r\n    ButtonComponent,\r\n    CardComponent,\r\n    CarouselComponent,\r\n    CollapseComponent,\r\n    CookieBarComponent,\r\n    DatetimerPickerComponent,\r\n    DividerComponent,\r\n    FooterComponent,\r\n    HeaderComponent,\r\n    IconComponent,\r\n    InputComponent,\r\n    ItemComponent,\r\n    ListComponent,\r\n    LoadingComponent,\r\n    LogoComponent,\r\n    MagicButtonComponent,\r\n    MenuComponent,\r\n    MessageComponent,\r\n    ModalComponent,\r\n    NotificationComponent,\r\n    NotificationPanelComponent,\r\n    PageContentComponent,\r\n    PaginationComponent,\r\n    RadioComponent,\r\n    ScrimComponent,\r\n    SelectComponent,\r\n    SignInComponent,\r\n    SkiplinkComponent,\r\n    SliderComponent,\r\n    SwitchComponent,\r\n    TabComponent,\r\n    TabItemComponent,\r\n    TabContentComponent,\r\n    TableComponent,\r\n    TagComponent,\r\n    IllustrationStateComponent,\r\n    TextareaComponent,\r\n    TimerComponent,\r\n    TooltipComponent,\r\n    UploadComponent,\r\n    WizardComponent,\r\n    WizardStepComponent,\r\n    WizardNavigationComponent,\r\n    ClickOutsideDirective,\r\n    ControllerDirective,\r\n    FullWidthDirective,\r\n    CheckboxComponent,\r\n    StepComponent\r\n  ],\r\n  providers: [\r\n    provideHttpClient(),\r\n    { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },\r\n    { provide: DateAdapter, useClass: DayjsDateAdapter }\r\n  ],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class CfcDsModule {}\r\n","export enum MenuType {\r\n  float = 'float',\r\n  push = 'push',\r\n  context = 'context'\r\n}\r\n","export enum MenuGroupment {\r\n  expansion = 'expansion',\r\n  divider = 'divider',\r\n  label = 'label'\r\n}\r\n","/*\r\n * Public API Surface of cfc-ds\r\n*/\r\n\r\nexport * from './lib/cfc-ds.module';\r\n\r\n/* Components */\r\n\r\nexport * from './lib/components/avatar/avatar.component';\r\nexport * from './lib/components/breadcrumb/breadcrumb.component';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/carousel/carousel.component';\r\nexport * from './lib/components/collapse/collapse.component';\r\nexport * from './lib/components/cookie-bar/cookie-bar.component';\r\nexport * from './lib/components/datetimer-picker/datetimer-picker.component';\r\nexport * from './lib/components/divider/divider.component';\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/header/header.component';\r\nexport * from './lib/components/icon/icon.component';\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/components/item/item.component';\r\nexport * from './lib/components/list/list.component';\r\nexport * from './lib/components/loading/loading.component';\r\nexport * from './lib/components/logo/logo.component';\r\nexport * from './lib/components/magic-button/magic-button.component';\r\nexport * from './lib/components/menu/menu.component';\r\nexport * from './lib/components/message/message.component';\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/components/notification/notification.component';\r\nexport * from './lib/components/notification-panel/notification-panel.component';\r\nexport * from './lib/components/page-content/page-content.component';\r\nexport * from './lib/components/pagination/pagination.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/scrim/scrim.component';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/sign-in/sign-in.component';\r\nexport * from './lib/components/skiplink/skiplink.component';\r\nexport * from './lib/components/slider/slider.component';\r\nexport * from './lib/components/switch/switch.component';\r\nexport * from './lib/components/tab/tab.component';\r\nexport * from './lib/components/tabItem/tab-item.component';\r\nexport * from './lib/components/tabContent/tab-content.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/tag/tag.component';\r\nexport * from './lib/components/illustration-state/illustration-state.component';\r\nexport * from './lib/components/textarea/textarea.component';\r\nexport * from './lib/components/timer/timer.component';\r\nexport * from './lib/components/tooltip/tooltip.component';\r\nexport * from './lib/components/upload/upload.component';\r\nexport * from './lib/components/wizard/wizard.component';\r\nexport * from './lib/components/wizard/wizardNavigation/wizard-navigation.component'\r\nexport * from './lib/components/wizard/wizardStep/wizard-step.component'\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/step/step.component';\r\n\r\n/* Directives */\r\n\r\nexport * from './lib/directives/click-outside.directive';\r\nexport * from './lib/directives/controller.directive';\r\nexport * from './lib/directives/full-width.directive';\r\n\r\n/* Services */\r\n\r\nexport * from './lib/services/loading.service';\r\n\r\n/* Enums, Models, Constantes */\r\n\r\nexport * from './lib/enums/avatar-density.enum';\r\nexport * from './lib/enums/avatar-type.enum';\r\nexport * from './lib/enums/button-density.enum';\r\nexport * from './lib/enums/button-type.enum';\r\nexport * from './lib/enums/header-view-mode.enum';\r\nexport * from './lib/enums/divider-axis.enum';\r\nexport * from './lib/enums/divider-density.enum';\r\nexport * from './lib/enums/divider-mode.enum';\r\nexport * from './lib/enums/divider-type.enum';\r\nexport * from './lib/enums/input-density.enum';\r\nexport * from './lib/enums/input-state.enum';\r\nexport * from './lib/enums/logo-view-mode.enum';\r\nexport * from './lib/enums/menu-type.enum';\r\nexport * from './lib/enums/menu-groupment.enum';\r\nexport * from './lib/enums/message-state.enum';\r\nexport * from './lib/enums/message-type.enum';\r\nexport * from './lib/enums/sign-in-density.enum';\r\nexport * from './lib/enums/sign-in-type.enum';\r\nexport * from './lib/enums/sign-in-mode.enum';\r\nexport * from './lib/enums/illustration-type.enum';\r\nexport * from './lib/enums/timer-type.enum';\r\nexport * from './lib/enums/tooltip-place.enum';\r\nexport * from './lib/enums/item-type.enum';\r\nexport * from './lib/enums/loading-density.enum';\r\nexport * from './lib/enums/select-type.enum';\r\nexport * from './lib/enums/date-time-picker.enum';\r\nexport * from './lib/enums/pagination-type.enum';\r\n\r\n// models\r\nexport * from './lib/models/breadcrumb.model';\r\nexport * from './lib/models/checkbox.model';\r\nexport * from './lib/models/components.model';\r\nexport * from './lib/models/cookie-bar.model';\r\nexport * from './lib/models/cookie-group.model';\r\nexport * from './lib/models/cookie.model';\r\nexport * from './lib/models/token.model';\r\nexport * from './lib/models/carousel-config.model';\r\nexport * from './lib/models/carousel-item.model';\r\nexport * from './lib/models/date-time-range.model';\r\nexport * from './lib/models/radio.model';\r\nexport * from './lib/models/footer.model';\r\nexport * from './lib/models/list-group.model';\r\nexport * from './lib/models/list-item.model';\r\nexport * from './lib/models/tab-item.model';\r\nexport * from './lib/models/notification-item.model';\r\nexport * from './lib/models/step-item.model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CardContentComponent","i1.CookieBarService","i3.IconComponent","i1.TimerService","i4","i5.ButtonComponent","i6.DividerComponent","i7.SignInComponent","i8.TimerComponent","i2.TabComponent","i3.TabItemComponent","i4.TabContentComponent","i2.SelectComponent","i2.IllustrationStateComponent","i1.LoadingService","i4.AvatarComponent","i5.BreadcrumbComponent","i6.ButtonComponent","i7.CardComponent","i8.CarouselComponent","i9.CollapseComponent","i10.CookieBarComponent","i11.DatetimerPickerComponent","i12.DividerComponent","i13.FooterComponent","i14.HeaderComponent","i15.IconComponent","i16.InputComponent","i17.ItemComponent","i18.ListComponent","i19.LoadingComponent","i20.LogoComponent","i21.MagicButtonComponent","i22.MenuComponent","i23.MessageComponent","i24.ModalComponent","i25.NotificationComponent","i26.NotificationPanelComponent","i27.PageContentComponent","i28.PaginationComponent","i29.RadioComponent","i30.ScrimComponent","i31.SelectComponent","i32.SignInComponent","i33.SkiplinkComponent","i34.SliderComponent","i35.SwitchComponent","i36.TabComponent","i37.TableComponent","i38.TagComponent","i39.TextareaComponent","i40.TimerComponent","i41.TooltipComponent","i42.UploadComponent","i43.WizardComponent","i2.ComponentsListComponent","i3.TestComponentComponent","i4.BreadcrumbComponent","i2.AvatarComponent","i3.ButtonComponent","i1.ButtonComponent"],"mappings":"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"}