@tecnobank/componentes 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tecnobank-componentes.mjs","sources":["../../../src/app/components/Icons/icons.config.ts","../../../src/app/components/Icons/icons.component.ts","../../../src/app/components/Icons/icons.component.html","../../../src/app/components/Text/text.component.ts","../../../src/app/components/Text/text.component.html","../../../src/app/components/TextInput/text-input.component.ts","../../../src/app/components/TextInput/text-input.component.html","../../../src/app/components/Autocomplete/autocomplete.component.ts","../../../src/app/components/Autocomplete/autocomplete.component.html","../../../src/app/components/Avatar/avatar.component.ts","../../../src/app/components/Avatar/avatar.component.html","../../../src/app/components/Badge/badge.component.ts","../../../src/app/components/Badge/badge.component.html","../../../src/app/components/Banner/banner.types.ts","../../../src/app/components/Banner/banner.component.ts","../../../src/app/components/Banner/banner.component.html","../../../src/app/components/Charts/chart-theme.ts","../../../src/app/components/BarChart/bar-chart.types.ts","../../../src/app/components/BarChart/bar-chart.options.ts","../../../src/app/components/BarChart/bar-chart.component.ts","../../../src/app/components/BarChart/bar-chart.component.html","../../../src/app/components/Breadcrumb/breadcrumb.component.ts","../../../src/app/components/Breadcrumb/breadcrumb.component.html","../../../src/app/components/BulkActionBar/bulk-action-bar.component.ts","../../../src/app/components/BulkActionBar/bulk-action-bar.component.html","../../../src/app/components/Button/button.config.ts","../../../src/app/components/Button/button.component.ts","../../../src/app/components/Button/button.component.html","../../../src/app/components/ButtonRadio/button-radio.component.ts","../../../src/app/components/ButtonRadio/button-radio.component.html","../../../src/app/components/Chips/chip.types.ts","../../../src/app/components/Chips/chips.component.ts","../../../src/app/components/Chips/chips.component.html","../../../src/app/components/Card/card.types.ts","../../../src/app/components/Card/card.component.ts","../../../src/app/components/Card/card.component.html","../../../src/app/components/ChassiInput/chassi-input.component.ts","../../../src/app/components/ChassiInput/chassi-input.component.html","../../../src/app/components/Checkbox/checkbox.config.ts","../../../src/app/components/Checkbox/checkbox.component.ts","../../../src/app/components/Checkbox/checkbox.component.html","../../../src/app/components/Checkbox/checkbox-list.component.ts","../../../src/app/components/Checkbox/checkbox-list.component.html","../../../src/app/components/Chips/chip-group.component.ts","../../../src/app/components/Tabs/tabs.component.ts","../../../src/app/components/Tabs/tabs.component.html","../../../src/app/components/ContentPanel/content-panel.types.ts","../../../src/app/components/ContentPanel/content-panel.component.ts","../../../src/app/components/ContentPanel/content-panel.component.html","../../../src/app/components/CurrencyInput/currency-input.component.ts","../../../src/app/components/CurrencyInput/currency-input.component.html","../../../src/app/components/Pagination/pagination.component.ts","../../../src/app/components/Pagination/pagination.layout.html","../../../src/app/components/Tooltip/tooltip.component.ts","../../../src/app/components/Tooltip/tooltip.component.html","../../../src/app/components/DataTable/data-table.component.ts","../../../src/app/components/DataTable/data-table.component.html","../../../src/app/components/DatePicker/date-picker.component.ts","../../../src/app/components/DatePicker/date-picker.component.html","../../../src/app/components/DatePickerFilterBar/date-picker-filterbar-calendar.component.ts","../../../src/app/components/DatePickerFilterBar/date-picker-filterbar-calendar.component.html","../../../src/app/components/DatePickerFilterBar/date-picker-filterbar.component.ts","../../../src/app/components/DatePickerFilterBar/date-picker-filterbar.component.html","../../../src/app/components/DonutChart/donut-chart.types.ts","../../../src/app/components/DonutChart/donut-chart.options.ts","../../../src/app/components/DonutChart/donut-chart.component.ts","../../../src/app/components/DonutChart/donut-chart.component.html","../../../src/app/components/GravameInput/gravame-input.component.ts","../../../src/app/components/GravameInput/gravame-input.component.html","../../../src/app/components/PercentInput/percent-input.component.ts","../../../src/app/components/PercentInput/percent-input.component.html","../../../src/app/components/Pinfield/pinfield.component.ts","../../../src/app/components/Pinfield/pinfield.component.html","../../../src/app/components/PlacaInput/placa-input.component.ts","../../../src/app/components/PlacaInput/placa-input.component.html","../../../src/app/components/RenavamInput/renavam-input.component.ts","../../../src/app/components/RenavamInput/renavam-input.component.html","../../../src/app/components/Search/search.component.ts","../../../src/app/components/Search/search.component.html","../../../src/app/components/Select/select.component.ts","../../../src/app/components/Select/select.component.html","../../../src/app/components/TextArea/text-area.component.ts","../../../src/app/components/TextArea/text-area.component.html","../../../src/app/components/YearInput/year-input.component.ts","../../../src/app/components/YearInput/year-input.component.html","../../../src/app/components/FormGroup/form-group.types.ts","../../../src/app/components/FormGroup/form-group.component.ts","../../../src/app/components/FormGroup/form-group.component.html","../../../src/app/components/GaugeChart/gauge-chart.options.ts","../../../src/app/components/GaugeChart/gauge-chart.component.ts","../../../src/app/components/PasswordInput/password-input.component.ts","../../../src/app/components/PasswordInput/password-input.component.html","../../../src/app/components/Kpis/kpis.config.ts","../../../src/app/components/Kpis/kpis.types.ts","../../../src/app/components/Kpis/kpis.component.ts","../../../src/app/components/Kpis/kpis.component.html","../../../src/app/components/Layout/layout.primitives.ts","../../../src/app/components/Layout/Box/box.component.ts","../../../src/app/components/Layout/Box/box.component.html","../../../src/app/components/Layout/Divider/divider.component.ts","../../../src/app/components/Layout/Divider/divider.component.html","../../../src/app/components/Layout/Grid/grid.component.ts","../../../src/app/components/Layout/Grid/grid.component.html","../../../src/app/components/Layout/Space/space.component.ts","../../../src/app/components/Layout/Space/space.component.html","../../../src/app/components/Layout/Stack/stack.component.ts","../../../src/app/components/Layout/Stack/stack.component.html","../../../src/app/components/LineChart/line-chart.types.ts","../../../src/app/components/LineChart/line-chart.options.ts","../../../src/app/components/LineChart/line-chart.component.ts","../../../src/app/components/LineChart/line-chart.component.html","../../../src/app/components/MapChart/map-chart.options.ts","../../../src/app/components/MapChart/map-chart.types.ts","../../../src/app/components/MapChart/map-chart.component.ts","../../../src/app/components/MapChart/map-chart.component.html","../../../src/app/patterns/Menu/menu.component.ts","../../../src/app/patterns/Menu/menu.component.html","../../../src/app/components/Menu/index.ts","../../../src/app/components/SearchFilterBar/search-filterbar.component.ts","../../../src/app/components/SearchFilterBar/search-filterbar.component.html","../../../src/app/components/SelectFilterBar/select-filterbar.component.ts","../../../src/app/components/SelectFilterBar/select-filterbar.component.html","../../../src/app/components/StackedProgressChart/stacked-progress-chart.types.ts","../../../src/app/components/StackedProgressChart/stacked-progress-chart.options.ts","../../../src/app/components/StackedProgressChart/stacked-progress-chart.component.ts","../../../src/app/components/StackedProgressChart/stacked-progress-chart.component.html","../../../src/app/components/StatsOverviewCard/stats-overview-card.component.ts","../../../src/app/components/StatsOverviewCard/stats-overview-card.component.html","../../../src/app/components/Toggle/toggle.component.ts","../../../src/app/components/Toggle/toggle.component.html","../../../src/app/components/ViewSwitcher/view-switcher.component.ts","../../../src/app/components/ViewSwitcher/view-switcher.component.html","../../../src/app/components/form-section-stepper/form-section-stepper.component.ts","../../../src/app/components/form-section-stepper/form-section-stepper.component.html","../../../src/app/patterns/AdvancedFillSearch/advanced-fill-search.component.ts","../../../src/app/patterns/AdvancedFillSearch/advanced-fill-search.component.html","../../../src/app/patterns/AdvancedSelectSearch/advanced-select-search.component.ts","../../../src/app/patterns/AdvancedSelectSearch/advanced-select-search.component.html","../../../src/app/patterns/Header/header.component.ts","../../../src/app/patterns/Header/header.component.html","../../../src/app/patterns/SidePanelAiResume/side-panel-ai-resume.types.ts","../../../src/app/patterns/SidePanelAiResume/side-panel-ai-resume.component.ts","../../../src/app/patterns/SidePanelAiResume/side-panel-ai-resume.component.html","../../../src/app/patterns/SidePanelTinaAi/side-panel-tina-ai.types.ts","../../../src/app/patterns/SidePanelTinaAi/side-panel-tina-ai.component.ts","../../../src/app/patterns/SidePanelTinaAi/side-panel-tina-ai.component.html","../../../src/public-api.ts","../../../src/tecnobank-componentes.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Configuração global do `tbk-icons` injetada via `provideTbkIcons`.\n * Permite que uma aplicação consumidora customize o caminho base dos assets\n * (ex.: CDN, prefixo de subpath) em um único ponto, sem repetir `assetBasePath`\n * em cada uso.\n */\nexport interface TbkIconsConfig {\n /**\n * Caminho base resolvido para os assets SVG do registry.\n * Default em runtime: `'assets'`.\n */\n readonly assetBasePath?: string;\n}\n\n/** Token de injeção para a configuração global de `tbk-icons`. */\nexport const TBK_ICONS_CONFIG = new InjectionToken<TbkIconsConfig>('TBK_ICONS_CONFIG');\n\n/**\n * Provider de configuração global para o `tbk-icons`.\n *\n * @example\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideTbkIcons({ assetBasePath: 'https://cdn.tecnobank.com/ds/icons' }),\n * ],\n * });\n * ```\n */\nexport function provideTbkIcons(config: TbkIconsConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: TBK_ICONS_CONFIG, useValue: config }]);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n isDevMode,\n numberAttribute,\n} from '@angular/core';\nimport { TBK_ICONS_CONFIG } from './icons.config';\n\nconst ICON_DEFINITIONS = [\n { token: 'arrowDownArrowUpRegularFull', asset: 'arrow-down-arrow-up-regular-full.svg' },\n { token: 'arrowDownToLineRegularFull', asset: 'arrow-down-to-line-regular-full.svg' },\n { token: 'arrowLeftSolidRegular', asset: 'arrow-left-solid-regular.svg' },\n { token: 'arrowRightSolidRegular', asset: 'arrow-right-solid-regular.svg' },\n { token: 'arrowUpBigSmallRegularFull', asset: 'arrow-up-big-small-regular-full.svg' },\n { token: 'arrowsRetweetRegular', asset: 'arrows-retweet-regular.svg' },\n { token: 'barsRegular', asset: 'bars-regular.svg' },\n { token: 'bellRegularFull', asset: 'bell-regular-full.svg' },\n { token: 'bookOpenLinesRegularFull', asset: 'book-open-lines-regular-full.svg' },\n { token: 'bookSectionSharpRegular', asset: 'book-section-sharp-regular.svg' },\n { token: 'buildingsRegular', asset: 'buildings-regular.svg' },\n { token: 'calendarLightFull', asset: 'calendar-light-full.svg' },\n { token: 'calendarRegular', asset: 'calendar-regular.svg' },\n { token: 'carBuildingRegular', asset: 'car-building-regular.svg' },\n { token: 'carsRegular', asset: 'cars-regular.svg' },\n { token: 'chartMixedRegular', asset: 'chart-mixed-regular.svg' },\n { token: 'checkFormSectionStepper', asset: 'check-form-section-stepper.svg' },\n { token: 'chevronDownDatepicker', asset: 'chevron-down-datepicker.svg' },\n { token: 'chevronLeftDatepicker', asset: 'chevron-left-datepicker.svg' },\n { token: 'chevronRightDatepicker', asset: 'chevron-right-datepicker.svg' },\n { token: 'chevronDownSolidFull', asset: 'chevron-down-solid-full.svg' },\n { token: 'chevronUpSolidFull', asset: 'chevron-up-solid-full.svg' },\n { token: 'circleInfoRegular', asset: 'circle-info-regular.svg' },\n { token: 'circleQuestionRegularFull', asset: 'circle-question-regular-full.svg' },\n { token: 'clockRegularFull', asset: 'clock-regular-full.svg' },\n { token: 'clockRotateRegular', asset: 'clock-rotate-regular.svg' },\n { token: 'cloneRegularFull', asset: 'clone-regular-full.svg' },\n { token: 'controlRegular', asset: 'control-regular.svg' },\n { token: 'desktopRegularFull', asset: 'desktop-regular-full.svg' },\n { token: 'dollarSignRegularFull', asset: 'dollar-sign-regular-full.svg' },\n { token: 'ellipsisSolid', asset: 'ellipsis-solid.svg' },\n { token: 'envelopeRegular', asset: 'envelope-regular.svg' },\n { token: 'errorFormSectionStepper', asset: 'error-form-section-stepper.svg' },\n { token: 'eyeClosedRegularFull', asset: 'eye-closed-regular-full.svg' },\n { token: 'eyeRegularFull', asset: 'eye-regular-full.svg' },\n { token: 'fileChartColumnRegular', asset: 'file-chart-column-regular.svg' },\n { token: 'fileContractRegular', asset: 'file-contract-regular.svg' },\n { token: 'fileExclamationRegular', asset: 'file-exclamation-regular.svg' },\n { token: 'fileSignatureRegular', asset: 'file-signature-regular.svg' },\n { token: 'gavelRegularFull', asset: 'gavel-regular-full.svg' },\n { token: 'gearRegular', asset: 'gear-regular.svg' },\n { token: 'gridRegularFull', asset: 'grid-regular-full.svg' },\n { token: 'layerGroupRegular', asset: 'layer-group-regular.svg' },\n { token: 'lineColumnsRegular', asset: 'line-columns-regular.svg' },\n { token: 'listCheckRegular', asset: 'list-check-regular.svg' },\n { token: 'listRegularFull', asset: 'list-regular-full.svg' },\n { token: 'lockRegular', asset: 'lock-regular.svg' },\n { token: 'magnifyingGlassSolid', asset: 'magnifying-glass-solid.svg' },\n { token: 'memoRegular', asset: 'memo-regular.svg' },\n { token: 'messageQuestionRegularFull', asset: 'message-question-regular-full.svg' },\n { token: 'notstartedFormSectionStepper', asset: 'notstarted-form-section-stepper.svg' },\n { token: 'penRegularFull', asset: 'pen-regular-full.svg' },\n { token: 'penToSquareRegularFull', asset: 'pen-to-square-regular-full.svg' },\n { token: 'playRegularFull', asset: 'play-regular-full.svg' },\n { token: 'plusSolid', asset: 'plus-solid.svg' },\n { token: 'printRegular', asset: 'print-regular.svg' },\n { token: 'questionRegularFull', asset: 'question-regular-full.svg' },\n { token: 'shieldUserRegularFull', asset: 'shield-user-regular-full.svg' },\n { token: 'sparkle', asset: 'sparkle.svg' },\n { token: 'sparkleRegular', asset: 'sparkle-regular.svg' },\n { token: 'spinnerSolidFull', asset: 'spinner-solid-full.svg' },\n { token: 'toggleOffRegularFull', asset: 'toggle-off-regular-full.svg' },\n { token: 'trashRegular', asset: 'trash-regular.svg' },\n { token: 'triangleExclamationRegular', asset: 'triangle-exclamation-regular.svg' },\n { token: 'userLargeRegular', asset: 'user-large-regular.svg' },\n { token: 'xmarkRegularFull', asset: 'xmark-regular-full.svg' },\n] as const;\n\ntype IconDefinition = (typeof ICON_DEFINITIONS)[number];\n\nexport type IconToken = IconDefinition['token'];\nexport type LegacyIconName = IconDefinition['asset'];\nexport type IconName = IconToken | LegacyIconName;\n\nexport const ICON_OPTIONS = ICON_DEFINITIONS.map(\n (definition) => definition.asset,\n) as readonly LegacyIconName[];\nexport const ICON_TOKEN_OPTIONS = ICON_DEFINITIONS.map(\n (definition) => definition.token,\n) as readonly IconToken[];\n\nexport const ICON_COLOR_OPTIONS = [\n 'primary',\n 'secondary',\n 'gray',\n 'white',\n 'blue',\n 'gradient',\n 'ia',\n 'disabled',\n 'critical',\n 'warning',\n 'success',\n] as const;\n\n/** Token usado quando `[name]`/`[icon]` não é informado ou não resolve. */\nexport const DEFAULT_ICON_TOKEN = 'magnifyingGlassSolid' as const;\n/** Diretório padrão dos SVGs do registry, relativo à raiz de assets do app. */\nexport const DEFAULT_ASSET_BASE_PATH = 'assets';\n/** Tamanho default em px quando `[size]` não é informado. */\nexport const ICON_SIZE_DEFAULT = 16;\n/** Limite inferior aceito para `[size]` (px). Valores menores são normalizados. */\nexport const ICON_SIZE_MIN = 12;\n/** Limite superior aceito para `[size]` (px). Valores maiores são normalizados. */\nexport const ICON_SIZE_MAX = 48;\n\nexport type IconColor = (typeof ICON_COLOR_OPTIONS)[number];\n\ntype ResolvedIconDefinition = IconDefinition & {\n label: string;\n};\n\nconst ICON_REGISTRY_BY_TOKEN = Object.freeze(\n Object.fromEntries(\n ICON_DEFINITIONS.map((definition) => [\n definition.token,\n { ...definition, label: humanizeToken(definition.token) },\n ]),\n ) as Record<IconToken, ResolvedIconDefinition>,\n);\n\nconst ICON_REGISTRY_BY_ASSET = Object.freeze(\n Object.fromEntries(\n ICON_DEFINITIONS.map((definition) => [\n definition.asset,\n ICON_REGISTRY_BY_TOKEN[definition.token],\n ]),\n ) as Record<LegacyIconName, ResolvedIconDefinition>,\n);\n\nfunction humanizeToken(token: string): string {\n return token\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/\\s+/g, ' ')\n .trim()\n .replace(/^./, (character) => character.toUpperCase());\n}\n\nfunction hasOwnKey<T extends object>(value: T, key: PropertyKey): key is keyof T {\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction coerceSpinInput(value: boolean | string | null | undefined): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === '') return true;\n if (normalized === 'false') return false;\n if (normalized === 'true') return true;\n }\n\n return Boolean(value);\n}\n\nfunction coerceOptionalNumber(value: number | string | null | undefined): number | undefined {\n if (value === null || value === undefined) return undefined;\n const parsed = numberAttribute(value, NaN);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n@Component({\n selector: 'tbk-icons',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icons.component.html',\n styleUrls: ['./icons.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconsComponent {\n private readonly config = inject(TBK_ICONS_CONFIG, { optional: true });\n\n // ── Content ──────────────────────────────────────────────────────────────\n /** Token semântico do ícone. Esta é a API recomendada. */\n readonly name = input<IconToken>(DEFAULT_ICON_TOKEN);\n\n /**\n * @deprecated Use `[name]` com um `IconToken` semântico. Aceita filename por\n * compatibilidade retroativa. Será removido em versão futura.\n */\n readonly icon = input<IconName | null | undefined>(undefined);\n\n // ── Appearance ───────────────────────────────────────────────────────────\n readonly color = input<IconColor | null>('primary');\n readonly size = input<number | undefined, number | string | null | undefined>(undefined, {\n transform: coerceOptionalNumber,\n });\n readonly spin = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n transform: coerceSpinInput,\n });\n\n // ── Accessibility ────────────────────────────────────────────────────────\n readonly decorative = input(true, { transform: booleanAttribute });\n readonly label = input<string | null>(null);\n readonly ariaLabelledBy = input<string | null>(null);\n readonly ariaDescribedBy = input<string | null>(null);\n readonly title = input<string | null>(null);\n\n // ── Asset resolution ─────────────────────────────────────────────────────\n readonly assetBasePath = input<string | undefined>(undefined);\n\n // ── Derived state ────────────────────────────────────────────────────────\n readonly resolvedIcon = computed<ResolvedIconDefinition>(() => {\n const preferredIdentifier = this.icon() ?? this.name();\n\n if (typeof preferredIdentifier === 'string') {\n if (hasOwnKey(ICON_REGISTRY_BY_TOKEN, preferredIdentifier)) {\n return ICON_REGISTRY_BY_TOKEN[preferredIdentifier];\n }\n\n if (hasOwnKey(ICON_REGISTRY_BY_ASSET, preferredIdentifier)) {\n if (isDevMode()) {\n const tokenSuggestion = ICON_REGISTRY_BY_ASSET[preferredIdentifier].token;\n console.warn(\n `[tbk-icons] [icon] está deprecado. Substitua \"${preferredIdentifier}\" por [name]=\"${tokenSuggestion}\".`,\n );\n }\n return ICON_REGISTRY_BY_ASSET[preferredIdentifier];\n }\n\n if (isDevMode() && preferredIdentifier) {\n console.warn(\n `[tbk-icons] Ícone desconhecido \"${preferredIdentifier}\". Renderizando o token default \"${DEFAULT_ICON_TOKEN}\".`,\n );\n }\n }\n\n return ICON_REGISTRY_BY_TOKEN[DEFAULT_ICON_TOKEN];\n });\n\n readonly resolvedAriaLabel = computed<string | null>(() => {\n if (this.decorative()) return null;\n if (this.ariaLabelledBy()) return null;\n const customLabel = this.label()?.trim();\n if (customLabel) return customLabel;\n return this.resolvedIcon().label;\n });\n\n readonly resolvedAriaLabelledBy = computed<string | null>(() => {\n if (this.decorative()) return null;\n return this.ariaLabelledBy();\n });\n\n readonly resolvedAriaDescribedBy = computed<string | null>(() => {\n if (this.decorative()) return null;\n return this.ariaDescribedBy();\n });\n\n readonly resolvedRole = computed<'img' | null>(() => (this.decorative() ? null : 'img'));\n\n readonly resolvedAriaHidden = computed<'true' | null>(() =>\n this.decorative() ? 'true' : null,\n );\n\n readonly resolvedTitle = computed<string | null>(() => {\n // Não expor title quando decorativo (tooltip em elemento aria-hidden é inconsistente\n // para teclado/touch e gera ruído de a11y).\n if (this.decorative()) return null;\n return this.title();\n });\n\n readonly normalizedSize = computed<string>(() => {\n const size = this.size();\n if (size === undefined) {\n return `var(--tbk-icons-size, var(--tbk-ds-font-size-400))`;\n }\n const clamped = Math.max(ICON_SIZE_MIN, Math.min(ICON_SIZE_MAX, Math.round(size)));\n return `${clamped}px`;\n });\n\n readonly resolvedAssetBasePath = computed<string>(() => {\n const fromInput = this.assetBasePath();\n const fromConfig = this.config?.assetBasePath;\n const raw = fromInput ?? fromConfig ?? DEFAULT_ASSET_BASE_PATH;\n const normalized = raw.trim().replace(/\\/+$/, '').replace(/\\\\/g, '/');\n return normalized || DEFAULT_ASSET_BASE_PATH;\n });\n\n readonly iconSrc = computed<string>(\n () => `${this.resolvedAssetBasePath()}/${encodeURI(this.resolvedIcon().asset)}`,\n );\n\n readonly iconMaskUrl = computed<string>(() => `url(\"${this.iconSrc()}\")`);\n\n readonly iconStyles = computed<Record<string, string>>(() => {\n const size = this.normalizedSize();\n const url = this.iconMaskUrl();\n return {\n width: size,\n height: size,\n 'mask-image': url,\n '-webkit-mask-image': url,\n };\n });\n\n readonly shouldSpin = computed<boolean>(() => {\n const explicit = this.spin();\n if (explicit !== undefined) return explicit;\n return this.resolvedIcon().token === 'spinnerSolidFull';\n });\n\n readonly hostClasses = computed<string[]>(() => {\n const color = this.color();\n return [\n 'tbk-icons',\n color ? `tbk-icons--color-${color}` : '',\n this.shouldSpin() ? 'tbk-icons--spin' : '',\n this.decorative() ? 'tbk-icons--decorative' : 'tbk-icons--semantic',\n ].filter(Boolean);\n });\n}\n","<span\n [ngClass]=\"hostClasses()\"\n [ngStyle]=\"iconStyles()\"\n [attr.data-icon-token]=\"resolvedIcon().token\"\n [attr.data-icon-asset]=\"resolvedIcon().asset\"\n [attr.aria-hidden]=\"resolvedAriaHidden()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy()\"\n [attr.aria-describedby]=\"resolvedAriaDescribedBy()\"\n [attr.role]=\"resolvedRole()\"\n [attr.title]=\"resolvedTitle()\"\n></span>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n TextAlign,\n TextAs,\n TextColor,\n TextSize,\n TextType,\n TextWeight,\n} from './text.types';\n\n// Re-export p/ compat com imports antigos `from './text.component'`.\nexport type { TextAlign, TextAs, TextColor, TextSize, TextType, TextWeight };\n\n/**\n * Componente tipográfico base. Renderiza qualquer tag (`p`, `span`, `div`,\n * `h1`–`h6`, `strong`, `em`, `small`, `label`, `time`) aplicando tokens de\n * cor, tamanho, peso e alinhamento do DS.\n *\n * @example\n * <tbk-text [children]=\"'Título'\" as=\"h2\" size=\"font-size-600\" weight=\"font-weight-bold\"></tbk-text>\n *\n * @example\n * <tbk-text as=\"p\" size=\"font-size-350\">\n * Conteúdo <strong>com formatação rica</strong> projetado via ng-content.\n * </tbk-text>\n */\n@Component({\n selector: 'tbk-text',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n})\nexport class TextComponent {\n /** Texto a exibir. Quando vazio, o conteúdo projetado via `<ng-content>` é usado. */\n @Input() children = '';\n\n /** Cor semântica. Mapeia para `--tbk-ds-color-text-*`. */\n @Input() color: TextColor = 'Primary';\n\n /** Compat histórica — aceito como alias de `color`. */\n @Input('type') set legacyType(value: TextType | null | undefined) {\n if (value) {\n this.color = value;\n }\n }\n\n /** Tag HTML renderizada. Use `h1`–`h6` para hierarquia semântica. */\n @Input('as') tag: TextAs = 'p';\n\n /** Tamanho. Mapeia para `--tbk-ds-font-size-*`. */\n @Input() size: TextSize = 'font-size-350';\n\n /** Peso. Mapeia para `--tbk-ds-font-weight-*`. */\n @Input() weight: TextWeight = 'font-weight-regular';\n\n /** Alinhamento horizontal. */\n @Input() align: TextAlign = 'left';\n\n /** `text-transform: uppercase`. */\n @Input() uppercase = false;\n\n /** `font-style: italic`. */\n @Input() italic = false;\n\n /** `text-decoration: line-through`. */\n @Input() strikeThrough = false;\n\n /** Trunca em uma linha com reticências (`text-overflow: ellipsis`). */\n @Input() truncate = false;\n\n /** Valor passado direto para `style.margin`. Aceita qualquer valor CSS. */\n @Input() margin = '0';\n\n get hostClasses(): string[] {\n const colorVal = (this.color ?? 'Primary').toLowerCase();\n const sizeVal = this.size ?? 'font-size-350';\n const weightVal = this.weight ?? 'font-weight-regular';\n const alignVal = this.align ?? 'left';\n\n return [\n 'tbk-text',\n `tbk-text--color-${colorVal}`,\n `tbk-text--size-${sizeVal}`,\n `tbk-text--weight-${weightVal}`,\n `tbk-text--align-${alignVal}`,\n this.uppercase ? 'tbk-text--uppercase' : '',\n this.italic ? 'tbk-text--italic' : '',\n this.strikeThrough ? 'tbk-text--strike' : '',\n this.truncate ? 'tbk-text--truncate' : '',\n ].filter(Boolean);\n }\n\n get hasChildren(): boolean {\n return !!this.children && String(this.children ?? '').length > 0;\n }\n}\n","<ng-template #body>\n <ng-container *ngIf=\"hasChildren; else projected\">{{ children }}</ng-container>\n <ng-template #projected><ng-content></ng-content></ng-template>\n</ng-template>\n\n<ng-container [ngSwitch]=\"tag\">\n <p *ngSwitchCase=\"'p'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </p>\n <span *ngSwitchCase=\"'span'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </span>\n <div *ngSwitchCase=\"'div'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <h1 *ngSwitchCase=\"'h1'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"'h2'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"'h3'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"'h4'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"'h5'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h5>\n <h6 *ngSwitchCase=\"'h6'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </h6>\n <strong *ngSwitchCase=\"'strong'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </strong>\n <em *ngSwitchCase=\"'em'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </em>\n <small *ngSwitchCase=\"'small'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </small>\n <label *ngSwitchCase=\"'label'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </label>\n <time *ngSwitchCase=\"'time'\" [ngClass]=\"hostClasses\" [style.margin]=\"margin\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </time>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type TextInputStatus =\n | 'Default'\n | 'Error'\n | 'Focus'\n | 'Selected'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\nexport type TextInputKeyFilter = 'none' | 'numeric';\n\n@Component({\n selector: 'tbk-text-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './text-input.component.html',\n styleUrl: './text-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextInputComponent),\n multi: true,\n },\n ],\n})\nexport class TextInputComponent implements ControlValueAccessor {\n @Input() label = 'Label';\n @Input() placeholder = 'Placeholder';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() inputMode: string | null = null;\n @Input() pattern: string | null = null;\n @Input() ariaLabel = '';\n @Input() keyFilter: TextInputKeyFilter = 'none';\n @Input() required = false;\n @Input() helperText = '';\n @Input() type = 'text';\n @Input() maxLength: number | null = null;\n @Input() status: TextInputStatus = 'Default';\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n\n /** Atrasa a validação para o evento blur */\n @Input() validateOnBlur = false;\n /** Mensagem de erro injetada externamente (ex.: validação de formulário reativa) */\n @Input() externalErrorMessage = '';\n /** Validador customizado (único) */\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n /** Array de validadores customizados */\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly focused = new EventEmitter<void>();\n @Output() readonly blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n\n private readonly fallbackId = `tbk-text-input-${Math.random()\n .toString(36)\n .slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n return external ? external : this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this.value?.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get resolvedStatus(): TextInputStatus {\n if (this.disabled) return this.status;\n if (this.loading) return 'Loading';\n if (this.readOnly) return 'Readonly';\n if (this.activeErrorMessage) return 'Error';\n if (this.activeSuccessMessage) return 'Success';\n if (this.activeEmptyMessage) return 'Empty';\n return this.status;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n this.showHelperText\n );\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n return 'Secondary';\n }\n\n get isInteractiveDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n // ─── ControlValueAccessor ────────────────────────────────────────────────────\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.validateValue(this.value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // ─── Event handlers ──────────────────────────────────────────────────────────\n\n onInput(value: string): void {\n if (this.isInteractiveDisabled || this.readOnly) {\n return;\n }\n\n this.value = value;\n if (!this.validateOnBlur) {\n this.validateValue(value);\n }\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.isInteractiveDisabled || this.readOnly) {\n event.preventDefault();\n return;\n }\n\n if (this.keyFilter !== 'numeric') {\n return;\n }\n\n const allowedKeys = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'Home', 'End', 'ArrowLeft', 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n onBlur(): void {\n if (this.loading) {\n return;\n }\n\n if (this.validateOnBlur) {\n this.validateValue(this.value);\n }\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n if (this.loading) {\n return;\n }\n\n this.focused.emit();\n }\n\n // ─── Private ─────────────────────────────────────────────────────────────────\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const msg = this.customErrorValidator(value);\n this.internalErrorMessage = msg ?? '';\n if (this.internalErrorMessage) return;\n }\n\n for (const validator of this.customErrorValidators) {\n const msg = validator?.(value);\n if (msg) {\n this.internalErrorMessage = msg;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-text-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-text-input--status-error]=\"resolvedStatus === 'Error'\"\n [class.tbk-text-input--status-focus]=\"resolvedStatus === 'Focus'\"\n [class.tbk-text-input--status-selected]=\"resolvedStatus === 'Selected'\"\n [class.tbk-text-input--status-success]=\"resolvedStatus === 'Success'\"\n [class.tbk-text-input--status-loading]=\"resolvedStatus === 'Loading'\"\n [class.tbk-text-input--status-empty]=\"resolvedStatus === 'Empty'\"\n [class.tbk-text-input--readonly]=\"resolvedStatus === 'Readonly'\"\n [class.tbk-text-input--disabled]=\"disabled\"\n [class.tbk-text-input--has-value]=\"value && value.trim().length > 0\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label class=\"tbk-text-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n color=\"Secondary\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-text-input__label-required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n <div class=\"tbk-text-input__controls\">\n <div class=\"tbk-text-input__field\">\n <input\n class=\"tbk-text-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [attr.inputmode]=\"inputMode || null\"\n [attr.pattern]=\"pattern || null\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Text input'\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [attr.aria-readonly]=\"readOnly || null\"\n [attr.maxlength]=\"maxLength ?? null\"\n [disabled]=\"isInteractiveDisabled\"\n [readOnly]=\"readOnly\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (disabled) {\n <tbk-icons\n class=\"tbk-text-input__lock\"\n name=\"lockRegular\"\n color=\"disabled\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else if (loading) {\n <tbk-icons\n class=\"tbk-text-input__status-icon\"\n name=\"spinnerSolidFull\"\n color=\"blue\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else if (resolvedStatus === 'Success') {\n <tbk-icons\n class=\"tbk-text-input__status-icon\"\n name=\"checkFormSectionStepper\"\n color=\"success\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n class=\"tbk-text-input__helper\"\n [class.tbk-text-input__helper--error]=\"resolvedStatus === 'Error'\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-medium\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\nimport { TextInputComponent, TextInputStatus } from '../TextInput/text-input.component';\n\nexport type AutocompleteOptionValue = string | number;\n\nexport type AutocompleteOption = {\n label: string;\n value: AutocompleteOptionValue;\n disabled?: boolean;\n};\n\nexport type AutocompleteFetchReason = 'search' | 'scroll' | 'focus';\n\nexport type AutocompleteFetchRequest = {\n query: string;\n page: number;\n pageSize: number;\n reason: AutocompleteFetchReason;\n};\n\n@Component({\n selector: 'tbk-autocomplete',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent, TextInputComponent],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true,\n },\n ],\n})\nexport class AutocompleteComponent implements ControlValueAccessor, OnChanges, OnDestroy {\n @Input() label = 'Label';\n @Input() placeholder = 'Digite para buscar';\n @Input() required = false;\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() status: TextInputStatus = 'Default';\n @Input() helperText = '';\n @Input() width: string | null = null;\n @Input() name = '';\n @Input() id = '';\n @Input() ariaLabel = '';\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n @Input() noResultsText = 'Nenhum resultado encontrado';\n @Input() minQueryLength = 0;\n @Input() options: AutocompleteOption[] = [];\n\n // Async + incremental pagination mode.\n @Input() asyncLoad = false;\n @Input() loading = false;\n @Input() hasMore = false;\n @Input() pageSize = 20;\n @Input() debounceMs = 300;\n @Input() loadingText = 'Carregando...';\n\n @Input() validateOnBlur = false;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n private _value: AutocompleteOptionValue | null = null;\n @Input()\n set value(next: AutocompleteOptionValue | null) {\n this.applyExternalValue(next, false);\n }\n get value(): AutocompleteOptionValue | null {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<AutocompleteOptionValue | null>();\n @Output() optionChange = new EventEmitter<AutocompleteOption | null>();\n @Output() queryChange = new EventEmitter<string>();\n @Output() fetchRequested = new EventEmitter<AutocompleteFetchRequest>();\n\n inputValue = '';\n isOpen = false;\n highlightedIndex = -1;\n\n private onChange: (value: AutocompleteOptionValue | null) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n\n private activeQuery = '';\n private currentPage = 0;\n private pendingRequestKey = '';\n private searchDebounceHandle: ReturnType<typeof setTimeout> | null = null;\n private readonly fallbackId = `tbk-autocomplete-${Math.random().toString(36).slice(2, 10)}`;\n\n constructor(private readonly hostRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options'] && !changes['options'].firstChange) {\n this.syncInputWithValue();\n this.validateValue(this.inputValue);\n if (this.isOpen) {\n this.highlightedIndex = this.filteredOptions.length > 0 ? 0 : -1;\n }\n }\n\n if (changes['loading'] && !this.loading) {\n this.pendingRequestKey = '';\n }\n }\n\n ngOnDestroy(): void {\n if (this.searchDebounceHandle) {\n clearTimeout(this.searchDebounceHandle);\n this.searchDebounceHandle = null;\n }\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get panelId(): string {\n return `${this.resolvedInputId}-listbox`;\n }\n\n get activeOptionId(): string | null {\n return this.highlightedIndex >= 0 ? `${this.panelId}-option-${this.highlightedIndex}` : null;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n get isInteractionBlocked(): boolean {\n return this.disabled || this.readOnly;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this.inputValue.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get resolvedStatus(): TextInputStatus {\n if (this.loading) {\n return 'Loading';\n }\n\n if (this.readOnly) {\n return 'Readonly';\n }\n\n if (this.activeErrorMessage) {\n return 'Error';\n }\n\n if (this.activeSuccessMessage) {\n return 'Success';\n }\n\n if (this.activeEmptyMessage) {\n return 'Empty';\n }\n\n return this.status;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n this.showHelperText\n );\n }\n\n get filteredOptions(): AutocompleteOption[] {\n const source = Array.isArray(this.options) ? this.options : [];\n\n if (this.asyncLoad) {\n return source;\n }\n\n const query = this.inputValue.trim().toLowerCase();\n if (query.length < this.minQueryLength) {\n return source;\n }\n\n if (!query) {\n return source;\n }\n\n return source.filter((option) =>\n option.label.toLowerCase().includes(query)\n );\n }\n\n get showEmptyState(): boolean {\n return !this.loading && this.filteredOptions.length === 0;\n }\n\n writeValue(value: AutocompleteOptionValue | null): void {\n this.applyExternalValue(value, false);\n }\n\n registerOnChange(fn: (value: AutocompleteOptionValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.closePanel();\n }\n }\n\n onInputValueChange(nextValue: string): void {\n if (this.isDisabled || this.readOnly) {\n return;\n }\n\n this.inputValue = nextValue;\n this.queryChange.emit(nextValue);\n\n if (!this.validateOnBlur) {\n this.validateValue(nextValue);\n }\n\n this.isOpen = true;\n\n if (this.asyncLoad) {\n this.highlightedIndex = -1;\n this.scheduleSearchRequest(nextValue);\n if (this._value !== null) {\n this.setValueInternal(null, true);\n }\n return;\n }\n\n this.highlightedIndex = this.filteredOptions.length > 0 ? 0 : -1;\n\n const matched = this.findByLabel(nextValue);\n if (matched && !matched.disabled) {\n this.selectOption(matched);\n return;\n }\n\n if (this._value !== null) {\n this.setValueInternal(null, true);\n }\n }\n\n onInputFocus(): void {\n if (this.isInteractionBlocked) {\n return;\n }\n\n this.isOpen = true;\n this.highlightedIndex = this.filteredOptions.length > 0 ? 0 : -1;\n\n if (this.asyncLoad && this.filteredOptions.length === 0) {\n this.requestPage(this.inputValue, 1, 'focus');\n }\n }\n\n onInputBlur(): void {\n if (this.validateOnBlur) {\n this.validateValue(this.inputValue);\n }\n\n setTimeout(() => {\n this.closePanel();\n this.onTouched();\n }, 120);\n }\n\n onOptionMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onOptionClick(option: AutocompleteOption): void {\n if (option.disabled || this.isDisabled || this.readOnly) {\n return;\n }\n\n this.selectOption(option);\n }\n\n onPanelScroll(event: Event): void {\n if (!this.asyncLoad || this.isInteractionBlocked || this.loading || !this.hasMore || !this.isOpen) {\n return;\n }\n\n const target = event.target as HTMLElement;\n const threshold = 24;\n const remaining = target.scrollHeight - target.scrollTop - target.clientHeight;\n\n if (remaining > threshold) {\n return;\n }\n\n this.requestPage(this.activeQuery, this.currentPage + 1, 'scroll');\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.isOpen || this.isDisabled || this.readOnly) {\n return;\n }\n\n const options = this.filteredOptions;\n if (options.length === 0) {\n if (event.key === 'Escape') {\n this.closePanel();\n }\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.highlightedIndex = (this.highlightedIndex + 1 + options.length) % options.length;\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.highlightedIndex =\n (this.highlightedIndex - 1 + options.length) % options.length;\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const option = options[this.highlightedIndex] ?? options[0];\n if (option && !option.disabled) {\n this.selectOption(option);\n }\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closePanel();\n }\n }\n\n isSelected(option: AutocompleteOption): boolean {\n return this._value === option.value;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const target = event.target as Node | null;\n if (target && host.contains(target)) {\n return;\n }\n\n this.closePanel();\n }\n\n private selectOption(option: AutocompleteOption): void {\n this.inputValue = option.label;\n this.validateValue(this.inputValue);\n this.setValueInternal(option.value, true);\n this.closePanel();\n }\n\n private setValueInternal(\n nextValue: AutocompleteOptionValue | null,\n emit: boolean\n ): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n const selectedOption = this.findOptionByValue(nextValue);\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n this.optionChange.emit(selectedOption);\n }\n\n private applyExternalValue(\n nextValue: AutocompleteOptionValue | null,\n emit: boolean\n ): void {\n this._value = nextValue;\n this.syncInputWithValue();\n this.validateValue(this.inputValue);\n\n if (emit) {\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n this.optionChange.emit(this.findOptionByValue(nextValue));\n }\n }\n\n private syncInputWithValue(): void {\n const selectedOption = this.findOptionByValue(this._value);\n if (selectedOption) {\n this.inputValue = selectedOption.label;\n return;\n }\n\n if (this._value == null) {\n return;\n }\n\n this.inputValue = String(this._value);\n }\n\n private findOptionByValue(\n value: AutocompleteOptionValue | null\n ): AutocompleteOption | null {\n if (value == null) {\n return null;\n }\n\n return this.options.find((option) => option.value === value) ?? null;\n }\n\n private findByLabel(label: string): AutocompleteOption | null {\n const normalized = label.trim().toLowerCase();\n if (!normalized) {\n return null;\n }\n\n return (\n this.options.find((option) => option.label.trim().toLowerCase() === normalized) ??\n null\n );\n }\n\n private closePanel(): void {\n this.isOpen = false;\n this.highlightedIndex = -1;\n }\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n\n private scheduleSearchRequest(query: string): void {\n if (this.searchDebounceHandle) {\n clearTimeout(this.searchDebounceHandle);\n }\n\n this.searchDebounceHandle = setTimeout(() => {\n this.requestPage(query, 1, 'search');\n }, Math.max(0, this.debounceMs));\n }\n\n private requestPage(query: string, page: number, reason: AutocompleteFetchReason): void {\n const safeQuery = query ?? '';\n if (safeQuery.length < this.minQueryLength) {\n return;\n }\n\n const safePage = Math.max(1, Math.trunc(page));\n const key = `${safeQuery}::${safePage}`;\n\n if (this.loading || this.pendingRequestKey === key) {\n return;\n }\n\n this.activeQuery = safeQuery;\n this.currentPage = safePage;\n this.pendingRequestKey = key;\n\n this.fetchRequested.emit({\n query: safeQuery,\n page: safePage,\n pageSize: Math.max(1, Math.trunc(this.pageSize)),\n reason,\n });\n }\n}\r\n","<div\n class=\"tbk-autocomplete\"\n [style.width]=\"resolvedWidth\"\n [ngClass]=\"[\n 'tbk-autocomplete--status-' + resolvedStatus.toLowerCase(),\n isDisabled ? 'tbk-autocomplete--disabled' : ''\n ]\"\n [attr.aria-busy]=\"loading || null\"\n (keydown)=\"onKeydown($event)\"\n>\n <div class=\"tbk-autocomplete__input-wrapper\">\n <tbk-text-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [status]=\"resolvedStatus\"\n [disabled]=\"isDisabled\"\n [helperText]=\"resolvedHelperText\"\n [showHelperText]=\"shouldShowHelperText\"\n [width]=\"'100%'\"\n [name]=\"name\"\n [id]=\"resolvedInputId\"\n [ariaLabel]=\"ariaLabel\"\n [value]=\"inputValue\"\n [loading]=\"loading\"\n [readonly]=\"readOnly\"\n [successMessage]=\"successMessage\"\n [emptyMessage]=\"emptyMessage\"\n (valueChange)=\"onInputValueChange($event)\"\n (focused)=\"onInputFocus()\"\n (blurred)=\"onInputBlur()\"\n ></tbk-text-input>\n\n <div\n *ngIf=\"isOpen && !isInteractionBlocked\"\n class=\"tbk-autocomplete__panel\"\n [id]=\"panelId\"\n role=\"listbox\"\n aria-label=\"Sugestões\"\n [attr.aria-busy]=\"loading || null\"\n (scroll)=\"onPanelScroll($event)\"\n >\n <button\n type=\"button\"\n class=\"tbk-autocomplete__option\"\n [id]=\"panelId + '-option-' + i\"\n *ngFor=\"let option of filteredOptions; let i = index\"\n [ngClass]=\"{\n 'tbk-autocomplete__option--active': highlightedIndex === i,\n 'tbk-autocomplete__option--selected': isSelected(option),\n 'tbk-autocomplete__option--disabled': option.disabled\n }\"\n [disabled]=\"option.disabled\"\n [attr.aria-selected]=\"isSelected(option)\"\n role=\"option\"\n [attr.data-index]=\"i\"\n (mousedown)=\"onOptionMouseDown($event)\"\n (click)=\"onOptionClick(option)\"\n >\n <tbk-text\n [children]=\"option.label\"\n [color]=\"isSelected(option) ? 'Primary' : option.disabled ? 'Gray' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"isSelected(option) ? 'font-weight-medium' : 'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </button>\n\n <div *ngIf=\"showEmptyState\" class=\"tbk-autocomplete__empty\">\n <tbk-text\n [children]=\"noResultsText\"\n [color]=\"'Gray'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n\n <div *ngIf=\"loading\" class=\"tbk-autocomplete__loading\" aria-live=\"polite\">\n <tbk-icons\n class=\"tbk-autocomplete__loading-spinner\"\n name=\"spinnerSolidFull\"\n [color]=\"'gray'\"\n [size]=\"20\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <tbk-text\n [children]=\"loadingText\"\n [color]=\"'Gray'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { IconName, IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\n/**\n * Apresentação visual de identidade (usuário, time, organização). Renderiza\n * imagem, iniciais ou ícone em ordem de fallback.\n *\n * @example\n * <tbk-avatar [size]=\"32\" [src]=\"user.avatar\" [initials]=\"user.initials\"></tbk-avatar>\n */\n@Component({\n selector: 'tbk-avatar',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent implements OnChanges {\n /** Lado em px. Normalizado para o intervalo [20, 128]. */\n @Input() size = 64;\n /** Esconde a imagem mesmo quando `src` é informado. */\n @Input() hideImage = false;\n /** URL da imagem. Quando vazia ou inválida, faz fallback para iniciais ou ícone. */\n @Input() src = '';\n /** Esconde as iniciais (forçando fallback para ícone). */\n @Input() hideInitials = false;\n /** Iniciais a exibir. Aceita texto completo — extrai 2 caracteres. */\n @Input() initials = '';\n /** Ícone exibido quando não há imagem nem iniciais. */\n @Input() icon?: IconName;\n /** Rótulo acessível. `role=\"img\"` no wrapper o expõe a AT. */\n @Input() ariaLabel = 'Avatar';\n /** Adiciona borda branca + sombra externa (para contraste sobre fundos coloridos). */\n @Input() border = false;\n\n imageLoadFailed = false;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['src'] || changes['hideImage']) {\n this.imageLoadFailed = false;\n }\n }\n\n onImageError(): void {\n this.imageLoadFailed = true;\n }\n\n get resolvedSize(): number {\n if (!Number.isFinite(this.size)) {\n return 64;\n }\n\n return Math.max(20, Math.min(128, Math.round(this.size)));\n }\n\n get resolvedSrc(): string {\n return `${this.src ?? ''}`.trim();\n }\n\n get resolvedInitials(): string {\n const normalized = `${this.initials ?? ''}`.trim();\n\n if (!normalized) {\n return '';\n }\n\n const parts = normalized.split(/\\s+/).filter(Boolean);\n if (parts.length > 1) {\n return parts\n .slice(0, 2)\n .map((part) => part.charAt(0))\n .join('');\n }\n\n const collapsed = normalized.replace(/\\s+/g, '');\n return collapsed.slice(0, 2);\n }\n\n get shouldShowImage(): boolean {\n return !this.hideImage && !!this.resolvedSrc && !this.imageLoadFailed;\n }\n\n get shouldShowInitials(): boolean {\n return !this.shouldShowImage && !this.hideInitials && !!this.resolvedInitials;\n }\n\n get shouldShowIcon(): boolean {\n return !this.shouldShowImage && !this.shouldShowInitials && !!this.icon;\n }\n\n get iconSize(): number {\n return Math.max(16, Math.min(32, Math.round(this.resolvedSize * 0.38)));\n }\n}\n","<div\n class=\"tbk-avatar\"\n [class.tbk-avatar--border]=\"border\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [style.min-width.px]=\"resolvedSize\"\n [style.max-width.px]=\"resolvedSize\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <div class=\"tbk-avatar__surface\">\n <img\n *ngIf=\"shouldShowImage\"\n class=\"tbk-avatar__image\"\n [src]=\"resolvedSrc\"\n alt=\"\"\n aria-hidden=\"true\"\n (error)=\"onImageError()\"\n />\n\n <div *ngIf=\"!shouldShowImage\" class=\"tbk-avatar__fallback\" aria-hidden=\"true\">\n <tbk-text\n *ngIf=\"shouldShowInitials\"\n class=\"tbk-avatar__initials\"\n [children]=\"resolvedInitials\"\n [as]=\"'span'\"\n [color]=\"'Blue'\"\n [size]=\"'font-size-350'\"\n [align]=\"'center'\"\n [uppercase]=\"true\"\n [margin]=\"'0'\"\n ></tbk-text>\n\n <tbk-icons\n *ngIf=\"shouldShowIcon\"\n class=\"tbk-avatar__icon\"\n [icon]=\"icon!\"\n [color]=\"'blue'\"\n [size]=\"iconSize\"\n ></tbk-icons>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, booleanAttribute, numberAttribute } from '@angular/core';\nimport { IconColor, IconName, IconsComponent } from '../Icons/icons.component';\nimport { TextColor, TextComponent, TextSize } from '../Text/text.component';\n\nexport type BadgeTone = 'primary' | 'neutral' | 'info' | 'success' | 'warning' | 'critical';\nexport type BadgeVariant = BadgeTone;\nexport type BadgeSize = 'sm' | 'md' | 'lg';\nexport type BadgeIconPosition = 'left' | 'right';\nexport type BadgeRole = 'status' | 'note' | 'img' | null;\n\n@Component({\n selector: 'tbk-badge',\n standalone: true,\n imports: [CommonModule, TextComponent, IconsComponent],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input() label: string | number | null | undefined = '';\n @Input() variant: BadgeVariant = 'primary';\n @Input() tone: BadgeTone | null = null;\n @Input() size: BadgeSize = 'sm';\n @Input() icon?: IconName;\n @Input() iconPosition: BadgeIconPosition = 'left';\n @Input() role: BadgeRole = null;\n @Input() ariaLabel = '';\n @Input('aria-label') set ariaLabelAttribute(value: string | null | undefined) {\n this.ariaLabel = `${value ?? ''}`;\n }\n @Input() title = '';\n @Input({ transform: booleanAttribute }) decorative = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) truncate = false;\n @Input({ transform: booleanAttribute }) hiddenWhenEmpty = true;\n @Input({ transform: booleanAttribute }) showZero = true;\n @Input({ transform: numberAttribute }) max: number | null = null;\n\n get resolvedTone(): BadgeTone {\n return this.tone ?? this.variant;\n }\n\n get hostClasses(): string[] {\n return [\n 'tbk-badge',\n `tbk-badge--${this.resolvedTone}`,\n `tbk-badge--${this.size}`,\n this.icon || this.loading ? `tbk-badge--icon-${this.iconPosition}` : '',\n this.disabled ? 'tbk-badge--disabled' : '',\n this.loading ? 'tbk-badge--loading' : '',\n this.truncate ? 'tbk-badge--truncate' : '',\n ].filter(Boolean);\n }\n\n get resolvedLabel(): string {\n const rawValue = this.label;\n\n if ((rawValue === 0 || rawValue === '0') && !this.showZero) {\n return '';\n }\n\n if (typeof rawValue === 'number' && this.max != null && Number.isFinite(this.max)) {\n const maxValue = Math.max(0, Math.trunc(this.max));\n return rawValue > maxValue ? `${maxValue}+` : `${rawValue}`;\n }\n\n return String(rawValue ?? '').trim();\n }\n\n get shouldRender(): boolean {\n if (this.loading) {\n return true;\n }\n\n if (this.resolvedLabel || this.icon) {\n return true;\n }\n\n return !this.hiddenWhenEmpty;\n }\n\n get resolvedIconName(): IconName | null {\n if (this.loading) {\n return 'spinnerSolidFull';\n }\n\n return this.icon ?? null;\n }\n\n get resolvedIconPosition(): BadgeIconPosition {\n return this.iconPosition;\n }\n\n get iconSize(): number {\n if (this.size === 'sm') {\n return 12;\n }\n\n if (this.size === 'md') {\n return 14;\n }\n\n return 16;\n }\n\n get textSize(): TextSize {\n if (this.size === 'lg') {\n return 'font-size-350';\n }\n\n if (this.size === 'md') {\n return 'font-size-325';\n }\n\n return 'font-size-300';\n }\n\n get textColor(): TextColor {\n if (this.disabled) return 'Disabled';\n\n const colors: Record<BadgeTone, TextColor> = {\n primary: 'Gray',\n neutral: 'Gray',\n info: 'Blue',\n success: 'Success',\n warning: 'Warning',\n critical: 'Critical',\n };\n\n return colors[this.resolvedTone];\n }\n\n get iconColor(): IconColor {\n if (this.disabled) return 'disabled';\n\n const colors: Record<BadgeTone, IconColor> = {\n primary: 'blue',\n neutral: 'gray',\n info: 'blue',\n success: 'success',\n warning: 'warning',\n critical: 'critical',\n };\n\n return colors[this.resolvedTone];\n }\n\n get resolvedAriaHidden(): 'true' | null {\n return this.decorative ? 'true' : null;\n }\n\n get resolvedRole(): BadgeRole {\n if (this.decorative) {\n return null;\n }\n\n if (this.loading) {\n return 'status';\n }\n\n return this.role;\n }\n\n get resolvedAriaLabel(): string | null {\n if (this.decorative) {\n return null;\n }\n\n const explicit = this.ariaLabel.trim();\n if (explicit) {\n return explicit;\n }\n\n return null;\n }\n\n get resolvedTitle(): string | null {\n const next = this.title.trim();\n return next ? next : null;\n }\n}\n","<span\n class=\"tbk-badge__container\"\n [ngClass]=\"hostClasses\"\n *ngIf=\"shouldRender\"\n [attr.role]=\"resolvedRole\"\n [attr.aria-label]=\"resolvedAriaLabel\"\n [attr.aria-hidden]=\"resolvedAriaHidden\"\n [attr.aria-disabled]=\"disabled || null\"\n [attr.aria-busy]=\"loading || null\"\n [attr.title]=\"resolvedTitle\"\n>\n <tbk-icons\n *ngIf=\"resolvedIconName && resolvedIconPosition === 'left'\"\n class=\"tbk-badge__icon\"\n [name]=\"$any(resolvedIconName)\"\n [color]=\"iconColor\"\n [size]=\"iconSize\"\n [decorative]=\"true\"\n ></tbk-icons>\n\n <tbk-text\n *ngIf=\"resolvedLabel\"\n class=\"tbk-badge__text\"\n [children]=\"resolvedLabel\"\n [as]=\"'span'\"\n [size]=\"textSize\"\n [color]=\"textColor\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n [truncate]=\"truncate\"\n ></tbk-text>\n\n <tbk-icons\n *ngIf=\"resolvedIconName && resolvedIconPosition === 'right'\"\n class=\"tbk-badge__icon\"\n [name]=\"$any(resolvedIconName)\"\n [color]=\"iconColor\"\n [size]=\"iconSize\"\n [decorative]=\"true\"\n ></tbk-icons>\n</span>\n","export type BannerVariant = 'neutral' | 'info' | 'success' | 'warning' | 'critical';\n\nexport interface BannerDismissEvent {\n originalEvent: MouseEvent;\n}\n\nexport const DEFAULT_DISMISS_LABEL = 'Fechar notificação';\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconColor, IconToken, IconsComponent } from '../Icons/icons.component';\nimport { BannerDismissEvent, BannerVariant, DEFAULT_DISMISS_LABEL } from './banner.types';\n\nexport type { BannerDismissEvent, BannerVariant } from './banner.types';\n\nconst VARIANT_ICON_COLOR: Record<BannerVariant, IconColor> = {\n neutral: 'secondary',\n info: 'blue',\n success: 'success',\n warning: 'warning',\n critical: 'critical',\n};\n\nconst VARIANT_DEFAULT_ICON: Record<BannerVariant, IconToken> = {\n neutral: 'circleInfoRegular',\n info: 'circleInfoRegular',\n success: 'listCheckRegular',\n warning: 'triangleExclamationRegular',\n critical: 'triangleExclamationRegular',\n};\n\n@Component({\n selector: 'tbk-banner',\n standalone: true,\n imports: [CommonModule, IconsComponent],\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BannerComponent {\n // ── Aparência ─────────────────────────────────────────────────────────────\n readonly variant = input<BannerVariant>('neutral');\n readonly icon = input<IconToken | undefined>(undefined);\n readonly showIcon = input(true, { transform: booleanAttribute });\n\n // ── Comportamento ─────────────────────────────────────────────────────────\n readonly dismissible = input(false, { transform: booleanAttribute });\n\n // ── i18n / a11y ───────────────────────────────────────────────────────────\n readonly dismissLabel = input<string>(DEFAULT_DISMISS_LABEL);\n readonly role = input<'alert' | 'status' | 'note'>('note');\n\n // ── Outputs ───────────────────────────────────────────────────────────────\n readonly dismissed = output<BannerDismissEvent>();\n\n // ── Derived ───────────────────────────────────────────────────────────────\n readonly resolvedIconToken = computed<IconToken>(\n () => this.icon() ?? VARIANT_DEFAULT_ICON[this.variant()],\n );\n\n readonly resolvedIconColor = computed<IconColor>(() => VARIANT_ICON_COLOR[this.variant()]);\n\n readonly hostClasses = computed<string[]>(() =>\n [`tbk-banner--variant-${this.variant()}`, this.dismissible() ? 'tbk-banner--dismissible' : ''].filter(\n Boolean,\n ),\n );\n\n // ── Handlers ──────────────────────────────────────────────────────────────\n onDismiss(event: MouseEvent): void {\n this.dismissed.emit({ originalEvent: event });\n }\n}\n","<div\n class=\"tbk-banner\"\n [ngClass]=\"hostClasses()\"\n [attr.role]=\"role()\"\n>\n @if (showIcon()) {\n <span class=\"tbk-banner__icon\" aria-hidden=\"true\">\n <tbk-icons\n [name]=\"resolvedIconToken()\"\n [color]=\"resolvedIconColor()\"\n [size]=\"18\"\n [decorative]=\"true\"\n ></tbk-icons>\n </span>\n }\n\n <div class=\"tbk-banner__body\">\n <ng-content></ng-content>\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"tbk-banner__dismiss\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"onDismiss($event)\"\n >\n <tbk-icons\n name=\"xmarkRegularFull\"\n color=\"secondary\"\n [size]=\"16\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n }\n</div>\n","// ─────────────────────────────────────────────────────────────────────────────\n// Chart theme — Tecnobank Design System\n// Lê os tokens oficiais (src/styles/design-tokens.css) via getComputedStyle e\n// monta o tema base consumido pelos wrappers de chart sobre ECharts.\n// Nenhum token novo é criado; os hex de fallback espelham os tokens existentes\n// para que os charts renderizem mesmo fora do browser (testes/SSR).\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Famílias de cor da paleta oficial de charts, em ordem categórica. */\nexport const CHART_COLOR_FAMILIES = [\n 'green',\n 'cyan',\n 'blue',\n 'purple',\n 'orange',\n 'navy',\n 'red',\n 'gray',\n 'yellow',\n] as const;\nexport type ChartColorFamily = (typeof CHART_COLOR_FAMILIES)[number];\n\nexport interface ChartThemeTokens {\n /** Paleta categórica ordenada (uma cor por série). */\n readonly palette: readonly string[];\n /** Cor por nome de família (ex.: green → hex do token). */\n readonly colorByName: Readonly<Record<ChartColorFamily, string>>;\n /** Cor de hover por nome de família (ex.: green → token `*-hover`). */\n readonly colorHoverByName?: Readonly<Record<ChartColorFamily, string>>;\n readonly fontFamily: string;\n readonly textPrimary: string;\n readonly textSecondary: string;\n readonly textTertiary: string;\n readonly gridLine: string;\n readonly surface: string;\n /** Cor neutra (cinza) para segmentos vazios/sem categoria. Opcional. */\n readonly neutral?: string;\n /** Fundo do tooltip (espelha o tbk-tooltip). Opcional. */\n readonly tooltipBg?: string;\n /** Texto do tooltip (espelha o tbk-tooltip). Opcional. */\n readonly tooltipText?: string;\n}\n\n/** Fallbacks espelhando os tokens (usados quando não há DOM/var resolvida). */\nconst FALLBACK = {\n chart: {\n green: '#00E573',\n cyan: '#1CC6E6',\n blue: '#6485F2',\n purple: '#A25BF2',\n orange: '#F97F3C',\n navy: '#134067',\n red: '#A12644',\n gray: '#3F3F3F',\n yellow: '#B38300',\n },\n fontFamily: 'Poppins',\n textPrimary: '#384047',\n textSecondary: '#384455',\n textTertiary: '#6B6E76',\n gridLine: '#DBDFE9',\n surface: '#FFFFFF',\n neutral: '#CED1D4',\n tooltipBg: '#40454C',\n tooltipText: '#FFFFFF',\n} as const;\n\nfunction readVar(styles: CSSStyleDeclaration | null, name: string, fallback: string): string {\n const value = styles?.getPropertyValue(name).trim();\n return value ? value : fallback;\n}\n\n/**\n * Lê o tema de chart a partir dos tokens no `:root` (ou de um host específico).\n * Seguro fora do browser: retorna os fallbacks quando `getComputedStyle` não\n * está disponível.\n */\nexport function readChartThemeTokens(host?: HTMLElement | null): ChartThemeTokens {\n const canRead =\n typeof window !== 'undefined' && typeof getComputedStyle === 'function' && typeof document !== 'undefined';\n const root = host ?? (canRead ? document.documentElement : null);\n const styles = canRead && root ? getComputedStyle(root) : null;\n\n const colorByName = {\n green: readVar(styles, '--tbk-ds-color-chart-green-1000', FALLBACK.chart.green),\n cyan: readVar(styles, '--tbk-ds-color-chart-cyan-1000', FALLBACK.chart.cyan),\n blue: readVar(styles, '--tbk-ds-color-chart-blue-1000', FALLBACK.chart.blue),\n purple: readVar(styles, '--tbk-ds-color-chart-purple-1000', FALLBACK.chart.purple),\n orange: readVar(styles, '--tbk-ds-color-chart-orange-1000', FALLBACK.chart.orange),\n navy: readVar(styles, '--tbk-ds-color-chart-navy-1000', FALLBACK.chart.navy),\n red: readVar(styles, '--tbk-ds-color-chart-red-1000', FALLBACK.chart.red),\n gray: readVar(styles, '--tbk-ds-color-chart-gray-1000', FALLBACK.chart.gray),\n yellow: readVar(styles, '--tbk-ds-color-chart-yellow-1000', FALLBACK.chart.yellow),\n } satisfies Record<ChartColorFamily, string>;\n\n const colorHoverByName = {\n green: readVar(styles, '--tbk-ds-color-chart-green-1000-hover', colorByName.green),\n cyan: readVar(styles, '--tbk-ds-color-chart-cyan-1000-hover', colorByName.cyan),\n blue: readVar(styles, '--tbk-ds-color-chart-blue-1000-hover', colorByName.blue),\n purple: readVar(styles, '--tbk-ds-color-chart-purple-1000-hover', colorByName.purple),\n orange: readVar(styles, '--tbk-ds-color-chart-orange-1000-hover', colorByName.orange),\n navy: readVar(styles, '--tbk-ds-color-chart-navy-1000-hover', colorByName.navy),\n red: readVar(styles, '--tbk-ds-color-chart-red-1000-hover', colorByName.red),\n gray: readVar(styles, '--tbk-ds-color-chart-gray-1000-hover', colorByName.gray),\n yellow: readVar(styles, '--tbk-ds-color-chart-yellow-1000-hover', colorByName.yellow),\n } satisfies Record<ChartColorFamily, string>;\n\n return {\n colorByName,\n colorHoverByName,\n palette: CHART_COLOR_FAMILIES.map((family) => colorByName[family]),\n fontFamily: readVar(styles, '--tbk-ds-font-family-primary', FALLBACK.fontFamily),\n textPrimary: readVar(styles, '--tbk-ds-color-text-primary', FALLBACK.textPrimary),\n textSecondary: readVar(styles, '--tbk-ds-color-text-secondary', FALLBACK.textSecondary),\n textTertiary: readVar(styles, '--tbk-ds-color-text-tertiary', FALLBACK.textTertiary),\n gridLine: readVar(styles, '--tbk-ds-color-border-default', FALLBACK.gridLine),\n surface: readVar(styles, '--tbk-ds-bg-color-white-bg', FALLBACK.surface),\n neutral: readVar(styles, '--tbk-ds-bg-color-gray-500', FALLBACK.neutral),\n tooltipBg: readVar(styles, '--tbk-ds-bg-color-gray-900', FALLBACK.tooltipBg),\n tooltipText: readVar(styles, '--tbk-ds-color-text-white', FALLBACK.tooltipText),\n };\n}\n","import { CHART_COLOR_FAMILIES, ChartColorFamily } from '../Charts/chart-theme';\n\n/** Cor da barra — uma família da paleta oficial de charts. */\nexport type BarChartColor = ChartColorFamily;\n\nexport const BAR_CHART_COLOR_OPTIONS: readonly BarChartColor[] = CHART_COLOR_FAMILIES;\n\n/** Orientação das barras. */\nexport type BarChartOrientation = 'horizontal' | 'vertical';\n\n/** Uma barra (série) do gráfico de barras. */\nexport interface BarChartItem {\n /** Identificador estável. Gerado quando ausente. */\n readonly id?: string;\n /** Rótulo da barra / categoria (ex.: \"Income\"). */\n readonly label: string;\n /** Valor numérico da barra. */\n readonly value: number;\n /** Texto formatado exibido na barra (ex.: \"$50\"). Default: `value`. */\n readonly displayValue?: string;\n /** Cor da barra (paleta de charts). Default: ciclo por índice. */\n readonly color?: BarChartColor;\n}\n\n/** Item normalizado internamente (id, cor e texto resolvidos). */\nexport interface NormalizedBarChartItem extends BarChartItem {\n readonly id: string;\n readonly color: BarChartColor;\n readonly display: string;\n}\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport {\n BAR_CHART_COLOR_OPTIONS,\n BarChartItem,\n BarChartOrientation,\n NormalizedBarChartItem,\n} from './bar-chart.types';\n\n/** Raio das pontas da barra (espelha --tbk-ds-border-radius-xs-4). */\nconst BAR_RADIUS = 4;\n\nexport interface BuildBarChartOptionParams {\n readonly items: readonly BarChartItem[];\n readonly orientation: BarChartOrientation;\n readonly max?: number;\n readonly showValueLabels: boolean;\n readonly showValueAxis: boolean;\n readonly theme: ChartThemeTokens;\n}\n\n/** Normaliza itens resolvendo id, cor (ciclo por índice) e texto exibido. */\nexport function normalizeBarChartItems(\n items: readonly BarChartItem[],\n): readonly NormalizedBarChartItem[] {\n return items.map((item, index) => {\n const safeValue = Number.isFinite(item.value) ? Math.max(0, item.value) : 0;\n const display =\n item.displayValue !== undefined && item.displayValue !== null\n ? `${item.displayValue}`\n : `${safeValue}`;\n return {\n ...item,\n value: safeValue,\n id: item.id ?? `bar-${index}`,\n color: item.color ?? BAR_CHART_COLOR_OPTIONS[index % BAR_CHART_COLOR_OPTIONS.length],\n display,\n };\n });\n}\n\n/**\n * Monta o `EChartsOption` do gráfico de barras a partir dos itens e do tema.\n * Função pura (sem DOM) — testável isoladamente.\n */\nexport function buildBarChartOption(params: BuildBarChartOptionParams): EChartsOption {\n const { orientation, max, showValueLabels, showValueAxis, theme } = params;\n const items = normalizeBarChartItems(params.items);\n const horizontal = orientation === 'horizontal';\n\n const categories = items.map((item) => item.label);\n const radius = horizontal\n ? [0, BAR_RADIUS, BAR_RADIUS, 0]\n : [BAR_RADIUS, BAR_RADIUS, 0, 0];\n\n const data = items.map((item) => ({\n value: item.value,\n itemStyle: { color: theme.colorByName[item.color], borderRadius: radius },\n emphasis: {\n itemStyle: {\n color: theme.colorHoverByName?.[item.color] ?? theme.colorByName[item.color],\n },\n },\n label: {\n show: showValueLabels,\n position: (horizontal ? 'right' : 'top') as 'right' | 'top',\n formatter: () => item.display,\n color: theme.textPrimary,\n fontFamily: theme.fontFamily,\n fontWeight: 700,\n },\n }));\n\n const categoryAxis = {\n type: 'category' as const,\n data: categories,\n inverse: horizontal, // primeiro item no topo, como na referência\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: { color: theme.textSecondary, fontFamily: theme.fontFamily },\n };\n\n const valueAxis = {\n type: 'value' as const,\n max,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: showValueAxis, color: theme.textTertiary, fontFamily: theme.fontFamily },\n splitLine: { show: showValueAxis, lineStyle: { color: theme.gridLine } },\n };\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n grid: {\n left: 8,\n right: showValueLabels && horizontal ? 48 : 16,\n top: showValueLabels && !horizontal ? 24 : 12,\n bottom: 8,\n containLabel: true,\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: { type: 'shadow' },\n backgroundColor: theme.surface,\n borderColor: theme.gridLine,\n textStyle: { color: theme.textPrimary, fontFamily: theme.fontFamily },\n },\n xAxis: horizontal ? valueAxis : categoryAxis,\n yAxis: horizontal ? categoryAxis : valueAxis,\n series: [\n {\n type: 'bar',\n data,\n barMaxWidth: 28,\n barCategoryGap: '40%',\n },\n ],\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport type { ECElementEvent } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { TextComponent } from '../Text/text.component';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport { buildBarChartOption, normalizeBarChartItems } from './bar-chart.options';\nimport { BarChartItem, BarChartOrientation, NormalizedBarChartItem } from './bar-chart.types';\n\nexport type {\n BarChartColor,\n BarChartItem,\n BarChartOrientation,\n NormalizedBarChartItem,\n} from './bar-chart.types';\nexport { BAR_CHART_COLOR_OPTIONS } from './bar-chart.types';\n\n/**\n * Gráfico de barras — wrapper do Design System sobre o ECharts (`ngx-echarts`).\n * A configuração do ECharts é derivada inteiramente dos tokens oficiais\n * (`--tbk-ds-color-chart-*`, fontes, cores de texto/grid) via `chart-theme`.\n * Nenhuma cor é hardcoded; nenhum token novo é criado.\n */\n@Component({\n selector: 'tbk-bar-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective, TextComponent],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n templateUrl: './bar-chart.component.html',\n styleUrls: ['./bar-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChartComponent {\n /** Tema lido dos tokens uma vez (os `:root` vars são estáticos). */\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n // ── Conteúdo ───────────────────────────────────────────────────────────────\n /** Séries (barras) exibidas. */\n readonly items = input<readonly BarChartItem[]>([]);\n\n // ── Aparência ─────────────────────────────────────────────────────────────────\n /** Orientação das barras. */\n readonly orientation = input<BarChartOrientation>('horizontal');\n /** Valor máximo da escala (default: automático pelo ECharts). */\n readonly max = input<number | undefined, unknown>(undefined, {\n transform: (value: unknown) =>\n value === undefined || value === null || value === '' ? undefined : numberAttribute(value),\n });\n /** Exibe o valor formatado em cada barra. */\n readonly showValueLabels = input(true, { transform: booleanAttribute });\n /** Exibe o eixo de valores (ticks + linhas de grade). */\n readonly showValueAxis = input(false, { transform: booleanAttribute });\n /** Altura do gráfico em pixels. */\n readonly height = input<number, unknown>(220, { transform: numberAttribute });\n\n // ── i18n / a11y ────────────────────────────────────────────────────────────────\n readonly ariaLabel = input<string>('Gráfico de barras');\n readonly emptyLabel = input<string>('Sem dados para exibir');\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly barClicked = output<NormalizedBarChartItem>();\n\n // ── Config do ECharts ───────────────────────────────────────────────────────────\n /** Renderer SVG: mais nítido, acessível e estável fora do browser. */\n readonly initOpts = { renderer: 'svg' as const };\n\n readonly hasItems = computed(() => this.items().length > 0);\n\n readonly normalizedItems = computed(() => normalizeBarChartItems(this.items()));\n\n readonly option = computed(() =>\n buildBarChartOption({\n items: this.items(),\n orientation: this.orientation(),\n max: this.max(),\n showValueLabels: this.showValueLabels(),\n showValueAxis: this.showValueAxis(),\n theme: this.theme,\n }),\n );\n\n onChartClick(event: ECElementEvent): void {\n const index = event.dataIndex;\n const item = this.normalizedItems()[index];\n if (item) {\n this.barClicked.emit(item);\n }\n }\n}\n","@if (hasItems()) {\n <div\n echarts\n class=\"tbk-bar-chart\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.height.px]=\"height()\"\n (chartClick)=\"onChartClick($event)\"\n ></div>\n} @else {\n <div class=\"tbk-bar-chart__empty\">\n <tbk-text as=\"span\" [children]=\"emptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TextComponent } from '../Text/text.component';\n\n/**\n * Componente Breadcrumb para navegação e hierarquia visual de páginas.\n *\n * @example\n * <tbk-breadcrumb [items]=\"['Financeiro', 'Relatórios']\"></tbk-breadcrumb>\n */\n@Component({\n selector: 'tbk-breadcrumb',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, TextComponent],\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent {\n /** Itens do breadcrumb. O último item será renderizado em destaque (bold, azul). */\n @Input() items: string[] = [];\n}\n","<nav class=\"tbk-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"tbk-breadcrumb__list\">\n @for (item of items; track $index; let isLast = $last) {\n <li class=\"tbk-breadcrumb__item\">\n @if (isLast) {\n <tbk-text\n as=\"span\"\n [children]=\"item\"\n size=\"font-size-350\"\n weight=\"font-weight-bold\"\n color=\"Blue\"\n class=\"tbk-breadcrumb__current\"\n aria-current=\"page\"\n ></tbk-text>\n } @else {\n <tbk-text\n as=\"span\"\n [children]=\"item\"\n size=\"font-size-350\"\n weight=\"font-weight-regular\"\n color=\"Secondary\"\n class=\"tbk-breadcrumb__parent\"\n ></tbk-text>\n <span class=\"tbk-breadcrumb__separator\" aria-hidden=\"true\">/</span>\n }\n </li>\n }\n </ol>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core';\nimport { IconColor, IconName, IconsComponent } from '../Icons/icons.component';\nimport { TextColor, TextComponent } from '../Text/text.component';\n\nexport type BulkActionBarActionVariant =\n | 'neutral'\n | 'primary'\n | 'critical'\n | 'success'\n | 'warning';\nexport type BulkActionBarStatus = 'default' | 'success' | 'error';\n\nexport interface BulkActionBarAction {\n id: string;\n label: string;\n ariaLabel?: string;\n icon?: IconName;\n variant?: BulkActionBarActionVariant;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport interface BulkActionBarActionEvent {\n action: BulkActionBarAction;\n actionId: string;\n originalEvent: MouseEvent;\n}\n\n@Component({\n selector: 'tbk-bulk-action-bar',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './bulk-action-bar.component.html',\n styleUrls: ['./bulk-action-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BulkActionBarComponent {\n @Input({ transform: numberAttribute }) selectedCount = 0;\n @Input() selectionLabel = '';\n @Input() selectionLabelSingular = 'item selecionado';\n @Input() selectionLabelPlural = 'itens selecionados';\n @Input() ariaLabel = 'Acoes em massa';\n @Input('aria-label') set ariaLabelAttribute(value: string | null | undefined) {\n this.ariaLabel = `${value ?? ''}`;\n }\n @Input() dismissAriaLabel = 'Fechar barra de acoes em massa';\n @Input() emptyMessage = 'Nenhuma acao disponivel';\n @Input() loadingLabel = 'Carregando acoes';\n @Input() status: BulkActionBarStatus = 'default';\n @Input() statusMessage = '';\n @Input({ transform: booleanAttribute }) showDismiss = true;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) readonly = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) hideWhenEmpty = true;\n @Input() actions: BulkActionBarAction[] = [];\n\n @Output() actionClick = new EventEmitter<BulkActionBarAction>();\n @Output() actionTriggered = new EventEmitter<BulkActionBarActionEvent>();\n @Output() dismiss = new EventEmitter<void>();\n\n get normalizedSelectedCount(): number {\n return Number.isFinite(this.selectedCount) ? Math.max(0, Math.trunc(this.selectedCount)) : 0;\n }\n\n get selectedCountLabel(): string {\n return String(this.normalizedSelectedCount);\n }\n\n get resolvedSelectionLabel(): string {\n const explicitLabel = this.selectionLabel.trim();\n if (explicitLabel) {\n return explicitLabel;\n }\n\n return this.normalizedSelectedCount === 1\n ? this.selectionLabelSingular\n : this.selectionLabelPlural;\n }\n\n get liveSelectionText(): string {\n return `${this.selectedCountLabel} ${this.resolvedSelectionLabel}`;\n }\n\n get resolvedAriaLabel(): string {\n const label = this.ariaLabel.trim();\n return label || 'Acoes em massa';\n }\n\n get normalizedActions(): BulkActionBarAction[] {\n return this.actions.filter((action) => Boolean(action?.id && action?.label));\n }\n\n get hasActions(): boolean {\n return this.normalizedActions.length > 0;\n }\n\n get shouldRender(): boolean {\n if (this.loading) {\n return true;\n }\n\n if (this.normalizedSelectedCount > 0) {\n return true;\n }\n\n return !this.hideWhenEmpty;\n }\n\n get isInteractionBlocked(): boolean {\n return this.disabled || this.readonly || this.loading;\n }\n\n get hostClasses(): string[] {\n return [\n 'tbk-bulk-action-bar',\n `tbk-bulk-action-bar--status-${this.status}`,\n this.disabled ? 'tbk-bulk-action-bar--disabled' : '',\n this.readonly ? 'tbk-bulk-action-bar--readonly' : '',\n this.loading ? 'tbk-bulk-action-bar--loading' : '',\n !this.hasActions ? 'tbk-bulk-action-bar--empty' : '',\n ].filter(Boolean);\n }\n\n get statusRole(): 'alert' | 'status' | null {\n if (!this.statusMessage.trim()) {\n return null;\n }\n\n return this.status === 'error' ? 'alert' : 'status';\n }\n\n get statusTextColor(): TextColor {\n if (this.status === 'error') {\n return 'Critical';\n }\n\n if (this.status === 'success') {\n return 'Success';\n }\n\n return 'White';\n }\n\n trackByActionId(index: number, action: BulkActionBarAction): string {\n return action.id || String(index);\n }\n\n actionVariant(action: BulkActionBarAction): BulkActionBarActionVariant {\n return action.variant ?? 'neutral';\n }\n\n actionClasses(action: BulkActionBarAction): string[] {\n return [\n 'tbk-bulk-action-bar__action',\n `tbk-bulk-action-bar__action--${this.actionVariant(action)}`,\n this.isActionDisabled(action) ? 'tbk-bulk-action-bar__action--disabled' : '',\n action.loading ? 'tbk-bulk-action-bar__action--loading' : '',\n ].filter(Boolean);\n }\n\n isActionDisabled(action: BulkActionBarAction): boolean {\n return this.isInteractionBlocked || Boolean(action.disabled || action.loading);\n }\n\n actionIconName(action: BulkActionBarAction): IconName | null {\n if (action.loading) {\n return 'spinnerSolidFull';\n }\n\n return action.icon ?? null;\n }\n\n actionIconColor(action: BulkActionBarAction): IconColor {\n if (this.isActionDisabled(action)) {\n return 'disabled';\n }\n\n return 'white';\n }\n\n actionTextColor(action: BulkActionBarAction): TextColor {\n return this.isActionDisabled(action) ? 'Disabled' : 'White';\n }\n\n actionAriaLabel(action: BulkActionBarAction): string {\n const explicitLabel = action.ariaLabel?.trim();\n return explicitLabel || action.label;\n }\n\n onActionClick(action: BulkActionBarAction, event: MouseEvent): void {\n if (this.isActionDisabled(action)) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.actionClick.emit(action);\n this.actionTriggered.emit({\n action,\n actionId: action.id,\n originalEvent: event,\n });\n }\n\n onDismissClick(event: MouseEvent): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n event.preventDefault();\n this.dismiss.emit();\n }\n}\n","<section\n *ngIf=\"shouldRender\"\n [ngClass]=\"hostClasses\"\n role=\"toolbar\"\n [attr.aria-label]=\"resolvedAriaLabel\"\n [attr.aria-disabled]=\"disabled || readonly || null\"\n [attr.aria-busy]=\"loading || null\"\n [attr.data-status]=\"status\"\n>\n <div class=\"tbk-bulk-action-bar__summary\">\n <button\n *ngIf=\"showDismiss\"\n type=\"button\"\n class=\"tbk-bulk-action-bar__dismiss\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"dismissAriaLabel\"\n (click)=\"onDismissClick($event)\"\n >\n <tbk-icons\n [name]=\"'xmarkRegularFull'\"\n [color]=\"disabled ? 'disabled' : 'white'\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n\n <span class=\"tbk-bulk-action-bar__count\" aria-hidden=\"true\">\n <tbk-text\n [children]=\"selectedCountLabel\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [color]=\"'White'\"\n [weight]=\"'font-weight-bold'\"\n [align]=\"'center'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n\n <span class=\"tbk-bulk-action-bar__selection\">\n <tbk-text\n class=\"tbk-bulk-action-bar__selection-label\"\n [children]=\"resolvedSelectionLabel\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [color]=\"'White'\"\n [weight]=\"'font-weight-medium'\"\n [align]=\"'left'\"\n [margin]=\"'0'\"\n ></tbk-text>\n\n <tbk-text\n *ngIf=\"statusMessage\"\n class=\"tbk-bulk-action-bar__status-message\"\n [attr.role]=\"statusRole\"\n [children]=\"statusMessage\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [color]=\"statusTextColor\"\n [weight]=\"'font-weight-medium'\"\n [align]=\"'left'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n\n <span class=\"tbk-bulk-action-bar__sr-only\" aria-live=\"polite\">\n {{ liveSelectionText }}\n </span>\n </div>\n\n <div class=\"tbk-bulk-action-bar__actions\" *ngIf=\"hasActions && !loading; else feedbackState\">\n <button\n *ngFor=\"let action of normalizedActions; trackBy: trackByActionId\"\n type=\"button\"\n [ngClass]=\"actionClasses(action)\"\n [disabled]=\"isActionDisabled(action)\"\n [attr.aria-label]=\"actionAriaLabel(action)\"\n [attr.aria-busy]=\"action.loading || null\"\n (click)=\"onActionClick(action, $event)\"\n >\n <tbk-icons\n *ngIf=\"actionIconName(action) as iconName\"\n class=\"tbk-bulk-action-bar__action-icon\"\n [icon]=\"iconName\"\n [color]=\"actionIconColor(action)\"\n [spin]=\"action.loading || null\"\n [decorative]=\"true\"\n ></tbk-icons>\n\n <tbk-text\n [children]=\"action.label\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [color]=\"actionTextColor(action)\"\n [weight]=\"'font-weight-bold'\"\n [align]=\"'center'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </button>\n </div>\n\n <ng-template #feedbackState>\n <div class=\"tbk-bulk-action-bar__feedback\" [attr.role]=\"loading ? 'status' : null\">\n <tbk-icons\n *ngIf=\"loading\"\n [name]=\"'spinnerSolidFull'\"\n [color]=\"'white'\"\n [spin]=\"true\"\n [decorative]=\"true\"\n ></tbk-icons>\n\n <tbk-text\n [children]=\"loading ? loadingLabel : emptyMessage\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [color]=\"'White'\"\n [weight]=\"'font-weight-medium'\"\n [align]=\"'left'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n </ng-template>\n</section>\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Configuração global do `tbk-button` injetada via `provideTbkButton`.\n * Permite que uma aplicação consumidora customize defaults i18n em um\n * único ponto, sem repetir em cada uso.\n */\nexport interface TbkButtonConfig {\n /**\n * Label exibido durante o estado loading.\n * Default em runtime: `'Carregando'`.\n */\n readonly defaultLoadingLabel?: string;\n}\n\n/** Token de injeção para a configuração global de `tbk-button`. */\nexport const TBK_BUTTON_CONFIG = new InjectionToken<TbkButtonConfig>('TBK_BUTTON_CONFIG');\n\nexport const DEFAULT_BUTTON_LOADING_LABEL = 'Carregando';\n\n/**\n * Provider de configuração global para o `tbk-button`.\n *\n * @example\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideTbkButton({ defaultLoadingLabel: 'Loading' }),\n * ],\n * });\n * ```\n */\nexport function provideTbkButton(config: TbkButtonConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: TBK_BUTTON_CONFIG, useValue: config }]);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n isDevMode,\n output,\n viewChild,\n} from '@angular/core';\nimport {\n ICON_OPTIONS,\n ICON_TOKEN_OPTIONS,\n IconColor,\n IconName,\n IconToken,\n IconsComponent,\n} from '../Icons/icons.component';\nimport { TextColor, TextComponent, TextSize } from '../Text/text.component';\nimport { DEFAULT_BUTTON_LOADING_LABEL, TBK_BUTTON_CONFIG } from './button.config';\n\nexport type ButtonSize = 'lg' | 'md' | 'sm';\nexport type ButtonVariant =\n | 'primary'\n | 'gradient'\n | 'critical'\n | 'warning'\n | 'success'\n | 'header';\nexport type ButtonFill = 'solid' | 'outline' | 'text';\nexport type ButtonIconPosition = 'left' | 'right' | 'only';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonAppearance =\n | { readonly variant: 'primary'; readonly fill: ButtonFill }\n | { readonly variant: 'critical'; readonly fill: ButtonFill }\n | { readonly variant: 'warning'; readonly fill: ButtonFill }\n | { readonly variant: 'success'; readonly fill: ButtonFill }\n | { readonly variant: 'gradient'; readonly fill: 'solid' }\n | { readonly variant: 'header'; readonly fill: 'solid' };\n\nconst LEGACY_ICON_TO_TOKEN = Object.freeze(\n Object.fromEntries(\n ICON_OPTIONS.map((asset, index) => [asset, ICON_TOKEN_OPTIONS[index]]),\n ) as Record<string, IconToken>,\n);\n\nfunction resolveIconToken(icon: IconName | undefined): IconToken | null {\n if (!icon) return null;\n if ((ICON_TOKEN_OPTIONS as readonly string[]).includes(icon)) return icon as IconToken;\n return LEGACY_ICON_TO_TOKEN[icon] ?? null;\n}\n\n@Component({\n selector: 'tbk-button',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-button-host--full-width]': 'fullWidth()',\n },\n})\nexport class ButtonComponent {\n private readonly globalConfig = inject(TBK_BUTTON_CONFIG, { optional: true });\n private readonly buttonRef = viewChild<ElementRef<HTMLButtonElement>>('buttonRef');\n\n // ── Content ──────────────────────────────────────────────────────────────\n readonly label = input<string>('Button');\n readonly icon = input<IconName | undefined>(undefined);\n readonly iconPosition = input<ButtonIconPosition>('left');\n\n // ── Appearance ───────────────────────────────────────────────────────────\n readonly size = input<ButtonSize>('md');\n readonly appearance = input<ButtonAppearance>({ variant: 'primary', fill: 'solid' });\n\n // ── Behavior ─────────────────────────────────────────────────────────────\n readonly type = input<ButtonType>('button');\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly autofocus = input(false, { transform: booleanAttribute });\n\n // ── State ────────────────────────────────────────────────────────────────\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n\n // ── i18n / a11y ──────────────────────────────────────────────────────────\n readonly tooltip = input<string>('');\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelAttribute = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaDescribedBy = input<string | undefined>(undefined);\n readonly ariaDescribedByAttribute = input<string | undefined>(undefined, {\n alias: 'aria-describedby',\n });\n readonly loadingLabel = input<string | undefined>(undefined);\n\n // ── Native form attrs ────────────────────────────────────────────────────\n readonly id = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly form = input<string | undefined>(undefined);\n\n // ── Outputs ──────────────────────────────────────────────────────────────\n readonly clicked = output<MouseEvent>();\n readonly focused = output<FocusEvent>();\n readonly blurred = output<FocusEvent>();\n\n // ── Derived state ────────────────────────────────────────────────────────\n readonly variant = computed<ButtonVariant>(() => this.appearance().variant);\n readonly fill = computed<ButtonFill>(() => this.appearance().fill);\n readonly isHeaderVariant = computed(() => this.variant() === 'header');\n\n readonly resolvedAriaLabelInput = computed(\n () => this.ariaLabel() ?? this.ariaLabelAttribute(),\n );\n\n readonly resolvedAriaDescribedByInput = computed(\n () => this.ariaDescribedBy() ?? this.ariaDescribedByAttribute(),\n );\n\n readonly resolvedLoadingLabel = computed(\n () =>\n this.loadingLabel() ??\n this.globalConfig?.defaultLoadingLabel ??\n DEFAULT_BUTTON_LOADING_LABEL,\n );\n\n readonly resolvedIcon = computed<IconToken | null>(() => {\n if (this.loading()) return 'spinnerSolidFull';\n return resolveIconToken(this.icon());\n });\n\n readonly hasIcon = computed(() => this.resolvedIcon() !== null);\n\n readonly isIconOnly = computed(\n () => this.iconPosition() === 'only' && this.hasIcon(),\n );\n\n readonly isNativeDisabled = computed(() => this.disabled() || this.loading());\n\n readonly isInteractionBlocked = computed(\n () => this.isNativeDisabled() || this.readonly(),\n );\n\n readonly showLeftIcon = computed(\n () =>\n this.hasIcon() &&\n (this.iconPosition() === 'left' || this.iconPosition() === 'only'),\n );\n\n readonly showRightIcon = computed(\n () => this.hasIcon() && this.iconPosition() === 'right',\n );\n\n readonly resolvedAriaLabel = computed<string | null>(() => {\n const explicit = this.resolvedAriaLabelInput()?.trim();\n if (explicit) return explicit;\n\n if (this.isIconOnly()) {\n return (\n this.tooltip().trim() ||\n this.label().trim() ||\n 'Button'\n );\n }\n\n return null;\n });\n\n readonly resolvedTitle = computed<string | null>(() => {\n const title = this.tooltip().trim();\n return title || null;\n });\n\n readonly resolvedAriaDescribedBy = computed<string | null>(() => {\n const describedBy = this.resolvedAriaDescribedByInput()?.trim();\n return describedBy || null;\n });\n\n readonly ariaDisabled = computed<'true' | null>(() =>\n this.readonly() ? 'true' : null,\n );\n\n readonly ariaBusy = computed<'true' | null>(() => (this.loading() ? 'true' : null));\n\n readonly labelTextSize = computed<TextSize>(() => {\n const size = this.size();\n if (size === 'sm') return 'font-size-300';\n if (size === 'lg') return 'font-size-400';\n return 'font-size-350';\n });\n\n readonly labelTextColor = computed<TextColor>(() => {\n const fill = this.fill();\n const inactive = this.disabled() || this.readonly();\n\n // Solid fills: label fica branco mesmo em estados inativos (bg fornece contraste).\n // Em disabled+solid, o bg é trocado para --tbk-ds-color-button-disabled-solid via SCSS.\n // Em readonly+solid, o bg permanece colorido com opacity-disabled aplicada — branco\n // permanece legível pois opacity é multiplicativa em ambas as cores.\n if (fill === 'solid') return 'White';\n\n if (inactive) return 'Disabled';\n\n switch (this.variant()) {\n case 'primary':\n return 'Blue';\n case 'critical':\n return 'Critical';\n case 'warning':\n return 'Warning';\n case 'success':\n return 'Success';\n default:\n return 'Blue';\n }\n });\n\n readonly iconColor = computed<IconColor>(() => {\n const fill = this.fill();\n const inactive = this.disabled() || this.readonly();\n\n if (inactive && fill !== 'solid') return 'disabled';\n\n if (this.isHeaderVariant() && !this.disabled()) return 'ia';\n\n const colorMap: Record<TextColor, IconColor> = {\n Primary: 'primary',\n Secondary: 'secondary',\n Gray: 'gray',\n White: 'white',\n Blue: 'blue',\n Disabled: 'disabled',\n Critical: 'critical',\n Warning: 'warning',\n Success: 'success',\n };\n\n return colorMap[this.labelTextColor()];\n });\n\n readonly iconSize = computed<number | undefined>(() => {\n if (this.isHeaderVariant()) return undefined;\n const size = this.size();\n if (size === 'sm') return 14;\n if (size === 'lg') return 18;\n return 16;\n });\n\n readonly hostClasses = computed<readonly string[]>(() =>\n [\n `tbk-button--size-${this.size()}`,\n `tbk-button--variant-${this.variant()}`,\n `tbk-button--fill-${this.fill()}`,\n this.fullWidth() ? 'tbk-button--full-width' : '',\n this.disabled() ? 'tbk-button--disabled' : '',\n this.readonly() ? 'tbk-button--readonly' : '',\n this.loading() ? 'tbk-button--loading' : '',\n this.isIconOnly() ? 'tbk-button--icon-only' : '',\n ].filter(Boolean),\n );\n\n constructor() {\n // Dev-mode warning: icon-only sem qualquer label resulta em aria-label='Button'.\n effect(() => {\n if (!isDevMode()) return;\n if (!this.isIconOnly()) return;\n const hasAnyLabel = Boolean(\n this.resolvedAriaLabelInput()?.trim() ||\n this.tooltip().trim() ||\n this.label().trim(),\n );\n if (!hasAnyLabel) {\n console.warn(\n '[tbk-button] icon-only button without ariaLabel, tooltip, or label will announce as \"Button\" to screen readers. Provide at least one of these inputs.',\n );\n }\n });\n }\n\n // ── Public API ───────────────────────────────────────────────────────────\n focus(options?: FocusOptions): void {\n this.buttonRef()?.nativeElement.focus(options);\n }\n\n blur(): void {\n this.buttonRef()?.nativeElement.blur();\n }\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onClick(event: MouseEvent): void {\n if (this.isInteractionBlocked()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.clicked.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.blurred.emit(event);\n }\n}\n","<button\n #buttonRef\n class=\"tbk-button\"\n [ngClass]=\"hostClasses()\"\n [attr.id]=\"id() || null\"\n [attr.type]=\"type()\"\n [attr.name]=\"name() || null\"\n [attr.form]=\"form() || null\"\n [attr.title]=\"resolvedTitle()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-describedby]=\"resolvedAriaDescribedBy()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-busy]=\"ariaBusy()\"\n [disabled]=\"isNativeDisabled()\"\n [autofocus]=\"autofocus()\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n>\n @if (showLeftIcon() && resolvedIcon(); as iconToken) {\n <tbk-icons\n class=\"tbk-button__icon\"\n [name]=\"iconToken\"\n [color]=\"iconColor()\"\n [size]=\"iconSize()\"\n [spin]=\"loading() || null\"\n [decorative]=\"true\"\n ></tbk-icons>\n }\n\n @if (!isIconOnly()) {\n <span class=\"tbk-button__label\">\n <tbk-text\n [children]=\"loading() ? resolvedLoadingLabel() : label()\"\n as=\"span\"\n [color]=\"labelTextColor()\"\n [size]=\"labelTextSize()\"\n weight=\"font-weight-bold\"\n align=\"center\"\n margin=\"0\"\n ></tbk-text>\n </span>\n }\n\n @if (showRightIcon() && resolvedIcon(); as iconToken) {\n <tbk-icons\n class=\"tbk-button__icon\"\n [name]=\"iconToken\"\n [color]=\"iconColor()\"\n [size]=\"iconSize()\"\n [spin]=\"loading() || null\"\n [decorative]=\"true\"\n ></tbk-icons>\n }\n</button>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type ButtonRadioOptionValue = string | number | boolean | null;\nexport type ButtonRadioLegacyStatus = 'Default' | 'Selected' | 'Auxiliar' | 'Error' | 'Disabled';\nexport type ButtonRadioSemanticStatus =\n | 'default'\n | 'selected'\n | 'auxiliar'\n | 'error'\n | 'success'\n | 'disabled'\n | 'empty'\n | 'loading';\nexport type ButtonRadioStatus = ButtonRadioLegacyStatus | ButtonRadioSemanticStatus;\n\nexport type ButtonRadioOption<TValue extends ButtonRadioOptionValue = ButtonRadioOptionValue> = {\n label: string;\n description?: string;\n value: TValue;\n disabled?: boolean;\n ariaLabel?: string;\n};\nexport type ButtonRadioVariant = 'default' | 'boxed' | 'pill';\nexport type ButtonRadioColorVariant = 'primary' | 'secondary';\nexport type ButtonRadioOrientation = 'horizontal' | 'vertical';\n\nlet nextGroupId = 0;\n\n@Component({\n selector: 'tbk-button-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button-radio.component.html',\n styleUrls: ['./button-radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonRadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonRadioComponent implements ControlValueAccessor {\n private readonly changeDetectorRef: ChangeDetectorRef;\n\n @Input() label = '';\n @Input() name = '';\n @Input() value: ButtonRadioOptionValue = null;\n @Input() options: ReadonlyArray<ButtonRadioOption> = [];\n @Input() selectedValue: ButtonRadioOptionValue = null;\n @Input() orientation: ButtonRadioOrientation = 'horizontal';\n @Input() variant: ButtonRadioVariant = 'default';\n @Input() colorVariant: ButtonRadioColorVariant = 'primary';\n @Input() status: ButtonRadioStatus = 'Default';\n @Input() helper?: string;\n @Input() emptyMessage = 'Nenhuma opcao disponivel';\n @Input() loadingMessage = 'Carregando opcoes';\n @Input() ariaLabel = '';\n @Input('aria-label') set ariaLabelAttribute(value: string | null | undefined) {\n this.ariaLabel = `${value ?? ''}`;\n }\n @Input() ariaDescribedBy = '';\n @Input('aria-describedby') set ariaDescribedByAttribute(value: string | null | undefined) {\n this.ariaDescribedBy = `${value ?? ''}`;\n }\n @Input({ transform: booleanAttribute }) checked = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) readonly = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) showHelperText = false;\n @Input({ transform: booleanAttribute }) hideWhenEmpty = false;\n\n @Output() changed = new EventEmitter<ButtonRadioOptionValue>();\n @Output() selectedValueChange = new EventEmitter<ButtonRadioOptionValue>();\n\n private onChangeFn: (value: ButtonRadioOptionValue) => void = () => {};\n private onTouchedFn: () => void = () => {};\n private readonly generatedName = `tbk-button-radio-${nextGroupId++}`;\n readonly helperId = `${this.generatedName}-helper`;\n readonly emptyId = `${this.generatedName}-empty`;\n\n constructor(changeDetectorRef: ChangeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n }\n\n get resolvedName(): string {\n const trimmed = this.name?.trim();\n return trimmed ? trimmed : this.generatedName;\n }\n\n get normalizedStatus(): ButtonRadioSemanticStatus {\n const normalized = `${this.status ?? 'default'}`.trim().toLowerCase();\n if (\n normalized === 'selected' ||\n normalized === 'auxiliar' ||\n normalized === 'error' ||\n normalized === 'success' ||\n normalized === 'disabled' ||\n normalized === 'empty' ||\n normalized === 'loading'\n ) {\n return normalized;\n }\n\n return 'default';\n }\n\n get normalizedOptions(): ReadonlyArray<ButtonRadioOption> {\n const options = this.options ?? [];\n\n if (options.length) {\n return options.filter((option) => this.isValidOption(option));\n }\n\n if (this.label || this.value !== null) {\n return [\n {\n label: this.label,\n value: this.value,\n disabled: this.disabled,\n },\n ];\n }\n\n return [];\n }\n\n get isOptionsMode(): boolean {\n return (this.options ?? []).length > 0;\n }\n\n get hasOptions(): boolean {\n return this.normalizedOptions.length > 0;\n }\n\n get shouldRender(): boolean {\n return this.hasOptions || !this.hideWhenEmpty || this.loading;\n }\n\n get isInteractionBlocked(): boolean {\n return this.disabled || this.readonly || this.loading || this.normalizedStatus === 'disabled';\n }\n\n get helperIsError(): boolean {\n return this.normalizedStatus === 'error';\n }\n\n get helperTextToRender(): string {\n const text = this.helper?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedAriaLabel(): string | null {\n const explicit = this.ariaLabel.trim();\n if (explicit) {\n return explicit;\n }\n\n return this.label.trim() ? null : 'Grupo de opcoes';\n }\n\n get resolvedDescribedBy(): string | null {\n const ids = [this.ariaDescribedBy.trim()];\n\n if (this.showHelperText) {\n ids.push(this.helperId);\n }\n\n if (!this.hasOptions && !this.loading) {\n ids.push(this.emptyId);\n }\n\n const resolved = ids.filter(Boolean).join(' ');\n return resolved || null;\n }\n\n get rootClasses(): Record<string, boolean> {\n return {\n [`tbk-button-radio--status-${this.normalizedStatus}`]: this.normalizedStatus !== 'default',\n 'tbk-button-radio--disabled': this.disabled || this.normalizedStatus === 'disabled',\n 'tbk-button-radio--readonly': this.readonly,\n 'tbk-button-radio--loading': this.loading,\n 'tbk-button-radio--empty': !this.hasOptions,\n 'tbk-button-radio--vertical': this.orientation === 'vertical',\n 'tbk-button-radio--horizontal': this.orientation === 'horizontal',\n 'tbk-button-radio--boxed': this.variant === 'boxed',\n 'tbk-button-radio--secondary': this.colorVariant === 'secondary',\n };\n }\n\n isSelected(option: ButtonRadioOption): boolean {\n if (this.isOptionsMode) {\n return this.selectedValue === option.value;\n }\n\n return this.checked;\n }\n\n isOptionDisabled(option: ButtonRadioOption): boolean {\n return this.disabled || this.loading || this.normalizedStatus === 'disabled' || !!option.disabled;\n }\n\n onInputClick(event: MouseEvent): void {\n if (this.readonly) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onInputKeydown(event: KeyboardEvent): void {\n if (!this.readonly) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter' || event.key.startsWith('Arrow')) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onOptionChange(option: ButtonRadioOption): void {\n if (this.isInteractionBlocked || this.isOptionDisabled(option)) {\n return;\n }\n\n const nextValue = option.value;\n\n if (this.isOptionsMode) {\n if (this.selectedValue === nextValue) return;\n this.selectedValue = nextValue;\n this.emitValue(nextValue);\n return;\n }\n\n if (!this.checked) {\n this.checked = true;\n this.emitValue(this.value);\n }\n }\n\n onBlur(): void {\n this.onTouchedFn();\n }\n\n getOptionAriaLabel(option: ButtonRadioOption): string | null {\n const explicit = option.ariaLabel?.trim();\n if (explicit) {\n return explicit;\n }\n\n return null;\n }\n\n trackByValue(index: number, option: ButtonRadioOption): ButtonRadioOptionValue | number {\n return option.value ?? index;\n }\n\n getItemClasses(option: ButtonRadioOption, index: number, count: number): Record<string, boolean> {\n const isVertical = this.orientation === 'vertical';\n\n return {\n 'tbk-button-radio__item--checked': this.isSelected(option),\n 'tbk-button-radio__item--disabled': this.isOptionDisabled(option),\n 'tbk-button-radio__item--readonly': this.readonly,\n 'tbk-button-radio__item--boxed': this.variant === 'boxed',\n 'tbk-button-radio__item--boxed-start': this.variant === 'boxed' && !isVertical && index === 0,\n 'tbk-button-radio__item--boxed-end':\n this.variant === 'boxed' && !isVertical && index === count - 1,\n 'tbk-button-radio__item--boxed-middle':\n this.variant === 'boxed' && !isVertical && index > 0 && index < count - 1,\n 'tbk-button-radio__item--boxed-single':\n this.variant === 'boxed' && (count === 1 || isVertical),\n };\n }\n\n writeValue(value: ButtonRadioOptionValue): void {\n this.selectedValue = value;\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: (value: ButtonRadioOptionValue) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n }\n\n private emitValue(value: ButtonRadioOptionValue): void {\n this.selectedValueChange.emit(value);\n this.changed.emit(value);\n this.onChangeFn(value);\n this.onTouchedFn();\n }\n\n private isValidOption(option: ButtonRadioOption | null | undefined): option is ButtonRadioOption {\n if (!option) {\n return false;\n }\n\n return Boolean(`${option.label ?? ''}`.trim());\n }\n}\n","<div\n *ngIf=\"shouldRender\"\n class=\"tbk-button-radio\"\n [ngClass]=\"rootClasses\"\n [attr.data-status]=\"normalizedStatus\"\n>\n <fieldset\n class=\"tbk-button-radio__fieldset\"\n [attr.aria-label]=\"resolvedAriaLabel\"\n [attr.aria-describedby]=\"resolvedDescribedBy\"\n [attr.aria-invalid]=\"helperIsError || null\"\n [attr.aria-disabled]=\"disabled || readonly || null\"\n [attr.aria-busy]=\"loading || null\"\n >\n <legend *ngIf=\"label\" class=\"tbk-button-radio__group-label\">\n <span>{{ label }}</span>\n <span *ngIf=\"required\" class=\"tbk-button-radio__group-required\" aria-hidden=\"true\">*</span>\n <span *ngIf=\"required\" class=\"tbk-button-radio__sr-only\">Obrigatorio</span>\n </legend>\n\n <div class=\"tbk-button-radio__controls\" *ngIf=\"hasOptions && !loading; else feedbackState\">\n <label\n *ngFor=\"\n let option of normalizedOptions;\n trackBy: trackByValue;\n let i = index;\n let count = count\n \"\n class=\"tbk-button-radio__item\"\n [ngClass]=\"getItemClasses(option, i, count)\"\n >\n <input\n class=\"tbk-button-radio__input\"\n type=\"radio\"\n [name]=\"resolvedName\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"isOptionDisabled(option)\"\n [required]=\"required\"\n [attr.aria-label]=\"getOptionAriaLabel(option)\"\n [attr.aria-describedby]=\"resolvedDescribedBy\"\n [attr.aria-invalid]=\"helperIsError || null\"\n [attr.aria-disabled]=\"readonly || null\"\n (click)=\"onInputClick($event)\"\n (keydown)=\"onInputKeydown($event)\"\n (change)=\"onOptionChange(option)\"\n (blur)=\"onBlur()\"\n />\n\n <span class=\"tbk-button-radio__control\" aria-hidden=\"true\">\n <span class=\"tbk-button-radio__dot\" aria-hidden=\"true\"></span>\n </span>\n <span class=\"tbk-button-radio__text\">\n <span class=\"tbk-button-radio__label\">{{ option.label }}</span>\n <span *ngIf=\"option.description\" class=\"tbk-button-radio__description\">\n {{ option.description }}\n </span>\n </span>\n </label>\n </div>\n\n <ng-template #feedbackState>\n <p\n class=\"tbk-button-radio__feedback\"\n [id]=\"loading ? null : emptyId\"\n [attr.role]=\"loading ? 'status' : null\"\n >\n {{ loading ? loadingMessage : emptyMessage }}\n </p>\n </ng-template>\n\n <p\n *ngIf=\"showHelperText\"\n [id]=\"helperId\"\n class=\"tbk-button-radio__helper\"\n [class.tbk-button-radio__helper--error]=\"helperIsError\"\n [attr.role]=\"helperIsError ? 'alert' : null\"\n >\n {{ helperTextToRender }}\n </p>\n </fieldset>\n</div>\n","import { IconName } from '../Icons/icons.component';\n\nexport type ChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'critical';\nexport type ChipSize = 'sm' | 'md' | 'lg';\n\nexport interface ChipClickEvent {\n readonly id?: string;\n readonly label: string;\n readonly selected: boolean;\n readonly originalEvent: Event;\n}\n\nexport interface ChipDismissEvent {\n readonly id?: string;\n readonly label: string;\n readonly originalEvent: Event;\n}\n\nexport interface ChipOption {\n readonly id: string;\n readonly label: string;\n readonly variant?: ChipVariant;\n readonly icon?: IconName;\n readonly disabled?: boolean;\n}\n\nexport type ChipGroupSelectionMode = 'single' | 'multiple' | 'none';\n\nexport const DEFAULT_DISMISS_LABEL_TEMPLATE = (label: string): string => `Remover ${label}`;\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconColor, IconName, IconToken, IconsComponent } from '../Icons/icons.component';\nimport { TextColor, TextComponent, TextSize } from '../Text/text.component';\nimport {\n ChipClickEvent,\n ChipDismissEvent,\n ChipSize,\n ChipVariant,\n DEFAULT_DISMISS_LABEL_TEMPLATE,\n} from './chip.types';\n\nexport type { ChipClickEvent, ChipDismissEvent, ChipOption, ChipSize, ChipVariant } from './chip.types';\n\nconst VARIANT_TEXT_COLOR: Record<ChipVariant, TextColor> = {\n default: 'Primary',\n primary: 'Blue',\n success: 'Success',\n warning: 'Warning',\n critical: 'Critical',\n};\n\nconst VARIANT_ICON_COLOR: Record<ChipVariant, IconColor> = {\n default: 'primary',\n primary: 'blue',\n success: 'success',\n warning: 'warning',\n critical: 'critical',\n};\n\n@Component({\n selector: 'tbk-chip',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-chip-host--clickable]': 'clickable() && !disabled()',\n '[class.tbk-chip-host--selected]': 'selected()',\n '[class.tbk-chip-host--disabled]': 'disabled()',\n '[class.tbk-chip-host--loading]': 'loading()',\n },\n})\nexport class ChipComponent {\n // ── Content ──────────────────────────────────────────────────────────────\n readonly label = input.required<string>();\n readonly icon = input<IconName | undefined>(undefined);\n\n // ── Appearance ───────────────────────────────────────────────────────────\n readonly variant = input<ChipVariant>('default');\n readonly size = input<ChipSize>('md');\n\n // ── Behavior ─────────────────────────────────────────────────────────────\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly clickable = input(false, { transform: booleanAttribute });\n\n // ── State ────────────────────────────────────────────────────────────────\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n\n // ── i18n / a11y ──────────────────────────────────────────────────────────\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly dismissLabel = input<string | undefined>(undefined);\n readonly chipId = input<string | undefined>(undefined);\n\n // ── Outputs (payload semântico) ──────────────────────────────────────────\n readonly clicked = output<ChipClickEvent>();\n readonly dismissed = output<ChipDismissEvent>();\n\n // ── Derived ──────────────────────────────────────────────────────────────\n readonly resolvedAriaLabel = computed(() => this.ariaLabel() || this.label());\n\n readonly resolvedDismissLabel = computed(\n () => this.dismissLabel() ?? DEFAULT_DISMISS_LABEL_TEMPLATE(this.label()),\n );\n\n readonly isInteractive = computed(() => this.clickable() && !this.disabled() && !this.loading());\n\n readonly ariaPressed = computed<'true' | 'false' | null>(() => {\n if (!this.clickable()) return null;\n return this.selected() ? 'true' : 'false';\n });\n\n readonly resolvedTextColor = computed<TextColor>(() => {\n if (this.disabled()) return 'Disabled';\n return VARIANT_TEXT_COLOR[this.variant()];\n });\n\n readonly resolvedIconColor = computed<IconColor>(() => {\n if (this.disabled()) return 'disabled';\n return VARIANT_ICON_COLOR[this.variant()];\n });\n\n readonly resolvedIconName = computed<IconToken | null>(() => {\n const icon = this.icon();\n if (!icon) return null;\n if (!icon.endsWith('.svg')) return icon as IconToken;\n\n const normalized = icon\n .replace(/\\.svg$/, '')\n .replace(/-([a-z0-9])/g, (_, character: string) => character.toUpperCase());\n\n return normalized as IconToken;\n });\n\n readonly textSize = computed<TextSize>(() => {\n const size = this.size();\n if (size === 'sm') return 'font-size-250';\n if (size === 'lg') return 'font-size-350';\n return 'font-size-300';\n });\n\n readonly leadingIconSize = computed<number>(() => {\n const size = this.size();\n if (size === 'sm') return 12;\n if (size === 'lg') return 16;\n return 14;\n });\n\n readonly dismissIconSize = computed<number>(() => {\n const size = this.size();\n if (size === 'sm') return 10;\n if (size === 'lg') return 14;\n return 12;\n });\n\n readonly hostClasses = computed<string[]>(() =>\n [\n `tbk-chip--size-${this.size()}`,\n `tbk-chip--variant-${this.variant()}`,\n this.disabled() ? 'tbk-chip--disabled' : '',\n this.selected() ? 'tbk-chip--selected' : '',\n this.dismissible() ? 'tbk-chip--dismissible' : '',\n this.clickable() ? 'tbk-chip--clickable' : '',\n this.icon() ? 'tbk-chip--has-icon' : '',\n this.loading() ? 'tbk-chip--loading' : '',\n ].filter(Boolean),\n );\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onChipClick(event: Event): void {\n if (!this.isInteractive()) return;\n this.clicked.emit({\n id: this.chipId(),\n label: this.label(),\n selected: this.selected(),\n originalEvent: event,\n });\n }\n\n onDismiss(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled() || this.loading()) return;\n this.dismissed.emit({\n id: this.chipId(),\n label: this.label(),\n originalEvent: event,\n });\n }\n}\n","@if (isInteractive() || clickable()) {\n <button\n type=\"button\"\n class=\"tbk-chip\"\n [ngClass]=\"hostClasses()\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-pressed]=\"ariaPressed()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.data-chip-id]=\"chipId() ?? null\"\n (click)=\"onChipClick($event)\"\n >\n <ng-container *ngTemplateOutlet=\"chipBody\"></ng-container>\n </button>\n} @else {\n <div\n class=\"tbk-chip\"\n [ngClass]=\"hostClasses()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.data-chip-id]=\"chipId() ?? null\"\n >\n <ng-container *ngTemplateOutlet=\"chipBody\"></ng-container>\n </div>\n}\n\n<ng-template #chipBody>\n @if (loading()) {\n <span class=\"tbk-chip__spinner\" aria-hidden=\"true\">\n <tbk-icons\n name=\"spinnerSolidFull\"\n [color]=\"resolvedIconColor()\"\n [size]=\"leadingIconSize()\"\n [decorative]=\"true\"\n ></tbk-icons>\n </span>\n } @else if (icon()) {\n <tbk-icons\n class=\"tbk-chip__icon\"\n [name]=\"resolvedIconName()!\"\n [color]=\"resolvedIconColor()\"\n [size]=\"leadingIconSize()\"\n [decorative]=\"true\"\n ></tbk-icons>\n }\n\n <tbk-text\n class=\"tbk-chip__label\"\n [children]=\"label()\"\n [as]=\"'span'\"\n [size]=\"textSize()\"\n weight=\"font-weight-medium\"\n [color]=\"resolvedTextColor()\"\n [margin]=\"'0'\"\n [attr.title]=\"label()\"\n ></tbk-text>\n\n @if (dismissible()) {\n <button\n class=\"tbk-chip__dismiss\"\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"resolvedDismissLabel()\"\n (click)=\"onDismiss($event)\"\n >\n <tbk-icons\n name=\"xmarkRegularFull\"\n [color]=\"resolvedIconColor()\"\n [size]=\"dismissIconSize()\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n }\n</ng-template>\n","import { IconName } from '../Icons/icons.component';\n\nexport type CardStatus = 'unread' | 'read';\n\nexport type CardTagVariant = 'default' | 'primary' | 'success' | 'warning' | 'critical';\n\nexport interface CardTag {\n readonly label: string;\n readonly variant?: CardTagVariant;\n readonly icon?: IconName;\n readonly id?: string;\n}\n\nexport type CardTagInput = string | CardTag;\n\nexport type CardActionSource = 'primary' | 'secondary' | 'card';\n\nexport interface CardActionEvent {\n readonly source: CardActionSource;\n readonly originalEvent: Event;\n readonly cardId?: string;\n}\n\nexport interface CardStatusLabels {\n readonly read: string;\n readonly unread: string;\n}\n\nexport const DEFAULT_CARD_STATUS_LABELS: CardStatusLabels = Object.freeze({\n read: 'Lido',\n unread: 'Não lido',\n});\n\nexport const DEFAULT_CARD_ACTION_LABEL = 'Visualizar';\nexport const DEFAULT_CARD_SECONDARY_ACTION_LABEL = 'Baixar';\nexport const DEFAULT_CARD_LOADING_LABEL = 'Carregando';\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BadgeComponent } from '../Badge/badge.component';\nimport { ButtonComponent } from '../Button/button.component';\nimport { ChipComponent } from '../Chips/chips.component';\nimport { IconName } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\nimport {\n CardActionEvent,\n CardStatus,\n CardStatusLabels,\n CardTag,\n CardTagInput,\n DEFAULT_CARD_ACTION_LABEL,\n DEFAULT_CARD_LOADING_LABEL,\n DEFAULT_CARD_SECONDARY_ACTION_LABEL,\n DEFAULT_CARD_STATUS_LABELS,\n} from './card.types';\n\nexport type {\n CardActionEvent,\n CardActionSource,\n CardStatus,\n CardStatusLabels,\n CardTag,\n CardTagInput,\n CardTagVariant,\n} from './card.types';\n\n@Component({\n selector: 'tbk-card',\n standalone: true,\n imports: [\n CommonModule,\n RouterLink,\n BadgeComponent,\n ButtonComponent,\n ChipComponent,\n TextComponent,\n ],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-card-host--interactive]': 'isInteractive()',\n '[class.tbk-card-host--selected]': 'selected()',\n '[class.tbk-card-host--disabled]': 'disabled()',\n '[class.tbk-card-host--loading]': 'loading()',\n '[class.tbk-card-host--reveal-on-hover]': 'revealActionsOnHover() && !loading()',\n },\n})\nexport class CardComponent {\n // ── Content ──────────────────────────────────────────────────────────────\n readonly title = input.required<string>();\n readonly description = input<string>('');\n readonly date = input<string>('');\n readonly status = input<CardStatus | undefined>(undefined);\n readonly tags = input<readonly CardTagInput[]>([]);\n readonly maxVisibleTags = input<number | undefined>(undefined);\n\n // ── Actions ──────────────────────────────────────────────────────────────\n readonly actionLabel = input<string>(DEFAULT_CARD_ACTION_LABEL);\n readonly actionIcon = input<IconName | undefined>('eyeRegularFull');\n readonly secondaryActionLabel = input<string>(DEFAULT_CARD_SECONDARY_ACTION_LABEL);\n readonly secondaryActionIcon = input<IconName | undefined>('arrowDownToLineRegularFull');\n readonly showActions = input(true, { transform: booleanAttribute });\n readonly showSecondaryAction = input(true, { transform: booleanAttribute });\n readonly revealActionsOnHover = input(false, { transform: booleanAttribute });\n\n // ── State ────────────────────────────────────────────────────────────────\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly clickable = input(false, { transform: booleanAttribute });\n readonly truncateDescription = input(false, { transform: booleanAttribute });\n readonly descriptionLines = input<number>(3);\n\n // ── Navigation ───────────────────────────────────────────────────────────\n readonly href = input<string | undefined>(undefined);\n readonly routerLink = input<unknown[] | string | undefined>(undefined);\n readonly target = input<'_self' | '_blank' | '_parent' | '_top'>('_self');\n\n // ── i18n / a11y ──────────────────────────────────────────────────────────\n readonly statusLabels = input<CardStatusLabels>(DEFAULT_CARD_STATUS_LABELS);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly cardId = input<string | undefined>(undefined);\n readonly loadingLabel = input<string>(DEFAULT_CARD_LOADING_LABEL);\n\n // ── Outputs ──────────────────────────────────────────────────────────────\n readonly actionClicked = output<CardActionEvent>();\n readonly secondaryActionClicked = output<CardActionEvent>();\n readonly cardClicked = output<CardActionEvent>();\n readonly tagClicked = output<CardTag>();\n\n // ── Derived state ────────────────────────────────────────────────────────\n readonly isUnread = computed(() => this.status() === 'unread');\n readonly isRead = computed(() => this.status() === 'read');\n readonly hasStatus = computed(() => this.status() !== undefined);\n readonly hasDate = computed(() => Boolean(this.date()));\n readonly hasHeader = computed(() => this.hasDate() || this.hasStatus());\n\n readonly normalizedTags = computed<readonly CardTag[]>(() =>\n this.tags().map((tag, index): CardTag => {\n if (typeof tag === 'string') {\n return { label: tag, variant: 'default', id: `tag-${index}` };\n }\n return { variant: 'default', id: `tag-${index}`, ...tag };\n }),\n );\n\n readonly visibleTags = computed<readonly CardTag[]>(() => {\n const limit = this.maxVisibleTags();\n const all = this.normalizedTags();\n if (limit === undefined || limit < 0) return all;\n return all.slice(0, limit);\n });\n\n readonly hiddenTagsCount = computed(() => {\n const limit = this.maxVisibleTags();\n if (limit === undefined || limit < 0) return 0;\n return Math.max(0, this.normalizedTags().length - limit);\n });\n\n readonly hasTags = computed(() => this.normalizedTags().length > 0);\n\n readonly statusLabel = computed(() => {\n const labels = this.statusLabels();\n return this.isRead() ? labels.read : labels.unread;\n });\n\n readonly resolvedAriaLabel = computed(\n () => this.ariaLabel() || this.title() || 'Card',\n );\n\n readonly isInteractive = computed(\n () =>\n (this.clickable() || Boolean(this.href() || this.routerLink())) &&\n !this.disabled() &&\n !this.loading(),\n );\n\n readonly tabIndex = computed<number | null>(() => (this.isInteractive() ? 0 : null));\n\n readonly hostRole = computed<string | null>(() => {\n if (this.href() || this.routerLink()) return 'link';\n if (this.clickable() && this.isInteractive()) return 'button';\n return null;\n });\n\n readonly ariaDisabled = computed<'true' | null>(() =>\n this.disabled() ? 'true' : null,\n );\n\n readonly ariaBusy = computed<'true' | null>(() => (this.loading() ? 'true' : null));\n\n readonly ariaPressed = computed<'true' | 'false' | null>(() => {\n if (!this.clickable() || this.href() || this.routerLink()) return null;\n if (!this.isInteractive()) return null;\n return this.selected() ? 'true' : 'false';\n });\n\n readonly descriptionStyle = computed<Record<string, string> | null>(() => {\n if (!this.truncateDescription()) return null;\n return {\n '-webkit-line-clamp': String(this.descriptionLines()),\n 'line-clamp': String(this.descriptionLines()),\n };\n });\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onActionClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) return;\n this.actionClicked.emit({\n source: 'primary',\n originalEvent: event,\n cardId: this.cardId(),\n });\n }\n\n onSecondaryActionClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) return;\n this.secondaryActionClicked.emit({\n source: 'secondary',\n originalEvent: event,\n cardId: this.cardId(),\n });\n }\n\n onCardClick(event: MouseEvent): void {\n if (!this.isInteractive()) return;\n const target = event.target as HTMLElement | null;\n if (target?.closest('button, a, [data-card-stop]')) return;\n this.cardClicked.emit({\n source: 'card',\n originalEvent: event,\n cardId: this.cardId(),\n });\n }\n\n @HostListener('keydown', ['$event'])\n onCardKeydown(event: KeyboardEvent): void {\n if (!this.isInteractive()) return;\n const target = event.target as HTMLElement | null;\n if (target?.closest('button, a, [data-card-stop]')) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClicked.emit({\n source: 'card',\n originalEvent: event,\n cardId: this.cardId(),\n });\n }\n }\n\n onTagClick(tag: CardTag): void {\n if (this.disabled() || this.loading()) return;\n this.tagClicked.emit(tag);\n }\n\n trackTag = (_index: number, tag: CardTag): string => tag.id ?? tag.label;\n}\n","<article\n class=\"tbk-card\"\n [attr.role]=\"hostRole()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-busy]=\"ariaBusy()\"\n [attr.aria-pressed]=\"ariaPressed()\"\n [attr.data-status]=\"status() ?? null\"\n [attr.data-card-id]=\"cardId() ?? null\"\n (click)=\"onCardClick($event)\"\n>\n @if (loading()) {\n <div class=\"tbk-card__loading\" role=\"status\" [attr.aria-label]=\"loadingLabel()\">\n <div class=\"tbk-card__skeleton tbk-card__skeleton--header\"></div>\n <div class=\"tbk-card__skeleton tbk-card__skeleton--title\"></div>\n <div class=\"tbk-card__skeleton tbk-card__skeleton--text\"></div>\n <div class=\"tbk-card__skeleton tbk-card__skeleton--text tbk-card__skeleton--text-short\"></div>\n <div class=\"tbk-card__skeleton tbk-card__skeleton--footer\"></div>\n <span class=\"tbk-card__sr-only\">{{ loadingLabel() }}</span>\n </div>\n } @else {\n <!-- Optional header slot (e.g. avatar, custom metadata) -->\n <ng-content select=\"[tbk-card-header]\"></ng-content>\n\n <!-- Header: date + status badge -->\n @if (hasHeader()) {\n <header class=\"tbk-card__header\">\n @if (hasDate()) {\n <tbk-text\n class=\"tbk-card__date\"\n [children]=\"date()\"\n [as]=\"'span'\"\n size=\"font-size-250\"\n color=\"Gray\"\n weight=\"font-weight-regular\"\n [margin]=\"'0'\"\n ></tbk-text>\n }\n\n @if (hasStatus()) {\n <tbk-badge\n class=\"tbk-card__status\"\n [class.tbk-card__status--read]=\"isRead()\"\n [class.tbk-card__status--unread]=\"isUnread()\"\n [label]=\"statusLabel()\"\n size=\"sm\"\n variant=\"primary\"\n [attr.aria-label]=\"statusLabel()\"\n ></tbk-badge>\n }\n </header>\n }\n\n <!-- Title -->\n @if (href() || routerLink()) {\n <a\n class=\"tbk-card__title-link\"\n [attr.href]=\"href() || null\"\n [routerLink]=\"routerLink() ?? null\"\n [attr.target]=\"href() ? target() : null\"\n [attr.rel]=\"target() === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n data-card-stop\n >\n <tbk-text\n class=\"tbk-card__title\"\n [children]=\"title()\"\n [as]=\"'p'\"\n size=\"font-size-350\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n [margin]=\"'0'\"\n ></tbk-text>\n </a>\n } @else {\n <tbk-text\n class=\"tbk-card__title\"\n [children]=\"title()\"\n [as]=\"'p'\"\n size=\"font-size-350\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n [margin]=\"'0'\"\n ></tbk-text>\n }\n\n <!-- Tags -->\n @if (hasTags()) {\n <ul class=\"tbk-card__tags\" [attr.aria-label]=\"'Tags'\">\n @for (tag of visibleTags(); track trackTag($index, tag)) {\n <li class=\"tbk-card__tag-item\">\n <tbk-chip\n [label]=\"tag.label\"\n [variant]=\"tag.variant ?? 'default'\"\n [icon]=\"tag.icon\"\n size=\"sm\"\n [clickable]=\"true\"\n (clicked)=\"onTagClick(tag)\"\n data-card-stop\n ></tbk-chip>\n </li>\n }\n @if (hiddenTagsCount() > 0) {\n <li class=\"tbk-card__tag-item tbk-card__tag-item--more\" aria-label=\"Mais tags\">\n <tbk-chip\n [label]=\"'+' + hiddenTagsCount()\"\n variant=\"default\"\n size=\"sm\"\n ></tbk-chip>\n </li>\n }\n </ul>\n }\n\n <!-- Description -->\n @if (description()) {\n <tbk-text\n class=\"tbk-card__description\"\n [class.tbk-card__description--truncated]=\"truncateDescription()\"\n [ngStyle]=\"descriptionStyle()\"\n [children]=\"description()\"\n [as]=\"'p'\"\n size=\"font-size-300\"\n color=\"Gray\"\n weight=\"font-weight-regular\"\n [margin]=\"'0'\"\n ></tbk-text>\n }\n\n <!-- Free content slot -->\n <ng-content></ng-content>\n\n <!-- Footer: action buttons -->\n @if (showActions()) {\n <footer class=\"tbk-card__footer\">\n <ng-content select=\"[tbk-card-footer-start]\"></ng-content>\n\n <tbk-button\n class=\"tbk-card__action\"\n [label]=\"actionLabel()\"\n size=\"md\"\n [appearance]=\"{ variant: 'primary', fill: 'solid' }\"\n [icon]=\"actionIcon()\"\n iconPosition=\"left\"\n [fullWidth]=\"true\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"actionLabel()\"\n [tooltip]=\"actionLabel()\"\n (clicked)=\"onActionClick($event)\"\n data-card-stop\n ></tbk-button>\n\n @if (showSecondaryAction()) {\n <tbk-button\n class=\"tbk-card__secondary-action\"\n [label]=\"secondaryActionLabel()\"\n size=\"md\"\n [appearance]=\"{ variant: 'primary', fill: 'outline' }\"\n [icon]=\"secondaryActionIcon()\"\n iconPosition=\"only\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"secondaryActionLabel()\"\n [tooltip]=\"secondaryActionLabel()\"\n (clicked)=\"onSecondaryActionClick($event)\"\n data-card-stop\n ></tbk-button>\n }\n\n <ng-content select=\"[tbk-card-footer-end]\"></ng-content>\n </footer>\n }\n }\n</article>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type ChassiInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-chassi-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './chassi-input.component.html',\n styleUrl: './chassi-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChassiInputComponent),\n multi: true,\n },\n ],\n})\nexport class ChassiInputComponent implements ControlValueAccessor {\n @Input() label = 'Chassi';\n @Input() placeholder = 'Digite o chassi';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: ChassiInputStatus = 'Default';\n @Input() disabled = false;\n @Input() maxLength = 17;\n @Input() minLengthRequired = 17;\n @Input() validateOnBlur = true;\n @Input() invalidMessage = 'Informe um chassi válido';\n @Input() minLengthMessage = 'Informe um chassi válido';\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-chassi-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n this.value = this.sanitizeChassi(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: string): void {\n const normalized = this.sanitizeChassi(value);\n this.value = normalized;\n if (this.internalErrorMessage) {\n this.internalErrorMessage = '';\n }\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^[a-zA-Z0-9]$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n if (this.value.length >= this.maxLength) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const normalized = this.sanitizeChassi(`${this.value}${pasted}`);\n this.value = normalized;\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onBlur(): void {\n this.validateValue();\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private sanitizeChassi(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '').slice(0, this.maxLength);\n }\n\n private validateValue(): void {\n if (!this.validateOnBlur || this.disabled || this.externalErrorMessage?.trim()) {\n return;\n }\n\n if (!this.value) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.minLengthRequired > 0 && this.value.length < this.minLengthRequired) {\n this.internalErrorMessage = this.minLengthMessage;\n return;\n }\n\n if (/^([A-Z0-9])\\1+$/.test(this.value)) {\n this.internalErrorMessage = this.invalidMessage;\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(this.value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(this.value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-chassi-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-chassi-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-chassi-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-chassi-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-chassi-input--disabled]=\"isDisabled\"\n [class.tbk-chassi-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-chassi-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-chassi-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-chassi-input__controls\">\n <div class=\"tbk-chassi-input__field\">\n <input\n class=\"tbk-chassi-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Chassi input'\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-chassi-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-chassi-input__helper\"\n [class.tbk-chassi-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport {\n CheckboxOrientation,\n CheckboxSize,\n CheckboxSurface,\n CheckboxVariant,\n} from './checkbox.types';\n\nexport interface TbkCheckboxI18n {\n readonly requiredIndicator?: string;\n readonly requiredAriaLabel?: string;\n}\n\nexport interface TbkCheckboxConfig {\n readonly defaultSize?: CheckboxSize;\n readonly defaultVariant?: CheckboxVariant;\n readonly defaultSurface?: CheckboxSurface;\n readonly defaultOrientation?: CheckboxOrientation;\n readonly i18n?: TbkCheckboxI18n;\n}\n\nexport const DEFAULT_CHECKBOX_I18N: Required<TbkCheckboxI18n> = {\n requiredIndicator: '*',\n requiredAriaLabel: 'obrigatório',\n};\n\nexport const DEFAULT_CHECKBOX_CONFIG: Required<Omit<TbkCheckboxConfig, 'i18n'>> & {\n i18n: Required<TbkCheckboxI18n>;\n} = {\n defaultSize: 'md',\n defaultVariant: 'primary',\n defaultSurface: 'default',\n defaultOrientation: 'vertical',\n i18n: DEFAULT_CHECKBOX_I18N,\n};\n\nexport const TBK_CHECKBOX_CONFIG = new InjectionToken<TbkCheckboxConfig>(\n 'TBK_CHECKBOX_CONFIG',\n);\n\n/**\n * Provider de configuração global para `tbk-checkbox` e `tbk-checkbox-list`.\n *\n * @example\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideTbkCheckbox({\n * defaultVariant: 'secondary',\n * i18n: { requiredAriaLabel: 'required' },\n * }),\n * ],\n * });\n * ```\n */\nexport function provideTbkCheckbox(config: TbkCheckboxConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: TBK_CHECKBOX_CONFIG, useValue: config }]);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DEFAULT_CHECKBOX_CONFIG,\n TBK_CHECKBOX_CONFIG,\n TbkCheckboxI18n,\n} from './checkbox.config';\nimport {\n CheckboxChangeEvent,\n CheckboxSize,\n CheckboxStatus,\n CheckboxVariant,\n} from './checkbox.types';\n\nlet nextCheckboxId = 0;\n\n/**\n * `tbk-checkbox` — checkbox individual standalone.\n *\n * Compõe `<input type=\"checkbox\">` nativo + `tbk-icons` (`checkFormSectionStepper`)\n * para affordance visual. Implementa `ControlValueAccessor` para integração com\n * `ngModel` e Reactive Forms.\n *\n * Para grupos de múltipla escolha, use `tbk-checkbox-list`.\n */\n@Component({\n selector: 'tbk-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n host: {\n '[class.tbk-checkbox-host--disabled]': 'disabled()',\n '[class.tbk-checkbox-host--readonly]': 'readonly()',\n '[class.tbk-checkbox-host--invalid]': \"status() === 'invalid'\",\n '[class.tbk-checkbox-host--success]': \"status() === 'success'\",\n '[class.tbk-checkbox-host--checked]': 'checked()',\n '[class.tbk-checkbox-host--indeterminate]': 'indeterminate()',\n },\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n private readonly globalConfig = inject(TBK_CHECKBOX_CONFIG, { optional: true });\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n private readonly autoId = `tbk-checkbox-${++nextCheckboxId}`;\n\n // ── Content ──────────────────────────────────────────────────────────────\n readonly label = input<string>('');\n readonly description = input<string>('');\n readonly value = input<string | number | boolean>(true);\n\n // ── Appearance ───────────────────────────────────────────────────────────\n readonly size = input<CheckboxSize>(\n DEFAULT_CHECKBOX_CONFIG.defaultSize,\n );\n readonly variant = input<CheckboxVariant>(\n DEFAULT_CHECKBOX_CONFIG.defaultVariant,\n );\n\n // ── State ────────────────────────────────────────────────────────────────\n /** Estado controlado (alternativa ao CVA). */\n readonly checked = input(false, { transform: booleanAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly status = input<CheckboxStatus>('default');\n\n // ── a11y ─────────────────────────────────────────────────────────────────\n readonly id = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly ariaDescribedby = input<string | undefined>(undefined);\n readonly i18n = input<TbkCheckboxI18n>({});\n\n // ── Outputs ──────────────────────────────────────────────────────────────\n readonly changed = output<CheckboxChangeEvent>();\n readonly focused = output<FocusEvent>();\n readonly blurred = output<FocusEvent>();\n\n // ── CVA wiring (interno) ─────────────────────────────────────────────────\n private readonly cvaChecked = signal(false);\n private readonly cvaDisabled = signal(false);\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n // ── Derived ──────────────────────────────────────────────────────────────\n readonly resolvedI18n = computed(() => ({\n ...DEFAULT_CHECKBOX_CONFIG.i18n,\n ...this.globalConfig?.i18n,\n ...this.i18n(),\n }));\n\n readonly resolvedId = computed(() => this.id() ?? this.autoId);\n readonly descriptionId = computed(() => `${this.resolvedId()}-description`);\n readonly requiredHintId = computed(() => `${this.resolvedId()}-required`);\n\n readonly hasDescription = computed(() => Boolean(this.description()));\n readonly hasLabel = computed(() => Boolean(this.label()));\n\n readonly resolvedChecked = computed(\n () => this.checked() || this.cvaChecked(),\n );\n\n readonly resolvedDisabled = computed(\n () => this.disabled() || this.cvaDisabled(),\n );\n\n readonly isInteractionBlocked = computed(\n () => this.resolvedDisabled() || this.readonly(),\n );\n\n readonly resolvedAriaDescribedby = computed<string | null>(() => {\n const parts: string[] = [];\n const external = this.ariaDescribedby()?.trim();\n if (external) parts.push(external);\n if (this.hasDescription()) parts.push(this.descriptionId());\n if (this.required()) parts.push(this.requiredHintId());\n return parts.length > 0 ? parts.join(' ') : null;\n });\n\n readonly resolvedAriaInvalid = computed<'true' | null>(() =>\n this.status() === 'invalid' ? 'true' : null,\n );\n\n readonly resolvedAriaRequired = computed<'true' | null>(() =>\n this.required() ? 'true' : null,\n );\n\n readonly resolvedAriaReadonly = computed<'true' | null>(() =>\n this.readonly() ? 'true' : null,\n );\n\n readonly resolvedAriaChecked = computed<'true' | 'false' | 'mixed'>(() => {\n if (this.indeterminate()) return 'mixed';\n return this.resolvedChecked() ? 'true' : 'false';\n });\n\n // ── ControlValueAccessor ─────────────────────────────────────────────────\n writeValue(value: unknown): void {\n this.cvaChecked.set(Boolean(value));\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n // ── Public API ───────────────────────────────────────────────────────────\n focus(options?: FocusOptions): void {\n this.inputRef()?.nativeElement.focus(options);\n }\n\n blur(): void {\n this.inputRef()?.nativeElement.blur();\n }\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onInputChange(event: Event): void {\n if (this.isInteractionBlocked()) {\n event.preventDefault();\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const next = target.checked;\n this.cvaChecked.set(next);\n this.onChange(next);\n this.changed.emit({\n value: target.value !== '' ? (target.value as string) : this.value() as string,\n checked: next,\n originalEvent: event,\n });\n this.onTouched();\n }\n\n onInputClick(event: MouseEvent): void {\n if (this.readonly() && !this.resolvedDisabled()) {\n // Em readonly mantemos focável mas bloqueamos o toggle.\n event.preventDefault();\n }\n }\n\n onInputFocus(event: FocusEvent): void {\n this.focused.emit(event);\n }\n\n onInputBlur(event: FocusEvent): void {\n this.onTouched();\n this.blurred.emit(event);\n }\n}\n","<label\n class=\"tbk-checkbox\"\n [class.tbk-checkbox--size-sm]=\"size() === 'sm'\"\n [class.tbk-checkbox--size-md]=\"size() === 'md'\"\n [class.tbk-checkbox--variant-primary]=\"variant() === 'primary'\"\n [class.tbk-checkbox--variant-secondary]=\"variant() === 'secondary'\"\n [class.tbk-checkbox--checked]=\"resolvedChecked() && !indeterminate()\"\n [class.tbk-checkbox--indeterminate]=\"indeterminate()\"\n [class.tbk-checkbox--disabled]=\"resolvedDisabled()\"\n [class.tbk-checkbox--readonly]=\"readonly()\"\n [class.tbk-checkbox--invalid]=\"status() === 'invalid'\"\n [class.tbk-checkbox--success]=\"status() === 'success'\"\n [attr.for]=\"resolvedId()\"\n>\n <input\n #inputRef\n type=\"checkbox\"\n class=\"tbk-checkbox__input\"\n [attr.id]=\"resolvedId()\"\n [attr.name]=\"name() || null\"\n [attr.value]=\"value()\"\n [checked]=\"resolvedChecked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"resolvedDisabled()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [attr.aria-describedby]=\"resolvedAriaDescribedby()\"\n [attr.aria-invalid]=\"resolvedAriaInvalid()\"\n [attr.aria-required]=\"resolvedAriaRequired()\"\n [attr.aria-readonly]=\"resolvedAriaReadonly()\"\n [attr.aria-checked]=\"resolvedAriaChecked()\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n />\n\n <span class=\"tbk-checkbox__control\" aria-hidden=\"true\">\n @if (resolvedChecked() && !indeterminate()) {\n <span class=\"tbk-checkbox__check\"></span>\n }\n @if (indeterminate()) {\n <span class=\"tbk-checkbox__dash\"></span>\n }\n </span>\n\n @if (hasLabel() || hasDescription()) {\n <span class=\"tbk-checkbox__text\">\n @if (hasLabel()) {\n <span class=\"tbk-checkbox__label\">\n {{ label() }}\n @if (required()) {\n <span\n class=\"tbk-checkbox__required\"\n aria-hidden=\"true\"\n >{{ resolvedI18n().requiredIndicator }}</span>\n <span\n class=\"tbk-checkbox__sr-only\"\n [attr.id]=\"requiredHintId()\"\n >{{ resolvedI18n().requiredAriaLabel }}</span>\n }\n </span>\n }\n @if (hasDescription()) {\n <span\n class=\"tbk-checkbox__description\"\n [attr.id]=\"descriptionId()\"\n >{{ description() }}</span>\n }\n </span>\n }\n\n <ng-content></ng-content>\n</label>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CheckboxComponent } from './checkbox.component';\nimport {\n DEFAULT_CHECKBOX_CONFIG,\n TBK_CHECKBOX_CONFIG,\n TbkCheckboxI18n,\n} from './checkbox.config';\nimport {\n CheckboxChangeEvent,\n CheckboxListChangeEvent,\n CheckboxListOption,\n CheckboxOrientation,\n CheckboxStatus,\n CheckboxSurface,\n CheckboxValue,\n CheckboxVariant,\n} from './checkbox.types';\n\nlet nextCheckboxListId = 0;\n\n/**\n * `tbk-checkbox-list` — grupo de múltipla escolha.\n *\n * Compõe N de `tbk-checkbox` internamente. Renderiza como `<fieldset>`/`<legend>`\n * semântico (com fallback a `role=\"group\" + aria-labelledby`). Implementa\n * `ControlValueAccessor` para integração com `ngModel`/`FormControl`.\n *\n * Para um checkbox isolado (ex.: aceitar termos), use `tbk-checkbox`.\n */\n@Component({\n selector: 'tbk-checkbox-list',\n standalone: true,\n imports: [CommonModule, CheckboxComponent],\n templateUrl: './checkbox-list.component.html',\n styleUrls: ['./checkbox-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxListComponent),\n multi: true,\n },\n ],\n host: {\n '[class.tbk-checkbox-list-host--disabled]': 'resolvedDisabled()',\n '[class.tbk-checkbox-list-host--readonly]': 'readonly()',\n '[class.tbk-checkbox-list-host--invalid]': \"status() === 'invalid'\",\n '[class.tbk-checkbox-list-host--success]': \"status() === 'success'\",\n '[attr.data-surface]': 'surface()',\n '[attr.data-orientation]': 'orientation()',\n },\n})\nexport class CheckboxListComponent implements ControlValueAccessor {\n private readonly globalConfig = inject(TBK_CHECKBOX_CONFIG, { optional: true });\n private readonly autoId = `tbk-checkbox-list-${++nextCheckboxListId}`;\n\n // ── Content ──────────────────────────────────────────────────────────────\n readonly label = input<string>('');\n readonly helperText = input<string>('');\n readonly showHelperText = input(false, { transform: booleanAttribute });\n readonly options = input<readonly CheckboxListOption[]>([]);\n readonly indeterminateValues = input<readonly CheckboxValue[]>([]);\n\n // ── Appearance ───────────────────────────────────────────────────────────\n readonly orientation = input<CheckboxOrientation>(\n DEFAULT_CHECKBOX_CONFIG.defaultOrientation,\n );\n readonly variant = input<CheckboxVariant>(\n DEFAULT_CHECKBOX_CONFIG.defaultVariant,\n );\n readonly surface = input<CheckboxSurface>(\n DEFAULT_CHECKBOX_CONFIG.defaultSurface,\n );\n\n // ── State ────────────────────────────────────────────────────────────────\n readonly required = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly status = input<CheckboxStatus>('default');\n\n /** Backward-compat: `[invalid]=\"true\"` continua funcionando, mapeado para `status='invalid'`. */\n readonly invalid = input(false, { transform: booleanAttribute });\n\n // ── a11y / i18n ──────────────────────────────────────────────────────────\n readonly groupId = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly i18n = input<TbkCheckboxI18n>({});\n\n // ── Outputs ──────────────────────────────────────────────────────────────\n readonly valueChange = output<readonly CheckboxValue[]>();\n readonly changed = output<CheckboxListChangeEvent>();\n\n // ── CVA state ────────────────────────────────────────────────────────────\n private readonly internalValues = signal<readonly CheckboxValue[]>([]);\n private readonly cvaDisabled = signal(false);\n private onChange: (value: readonly CheckboxValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n // ── Derived ──────────────────────────────────────────────────────────────\n readonly resolvedI18n = computed(() => ({\n ...DEFAULT_CHECKBOX_CONFIG.i18n,\n ...this.globalConfig?.i18n,\n ...this.i18n(),\n }));\n\n readonly resolvedGroupId = computed(() => this.groupId() ?? this.autoId);\n readonly labelId = computed(() => `${this.resolvedGroupId()}-label`);\n readonly helperId = computed(() => `${this.resolvedGroupId()}-helper`);\n\n readonly hasLabel = computed(() => Boolean(this.label()));\n readonly hasHelperText = computed(\n () => this.showHelperText() && Boolean(this.helperText()),\n );\n\n readonly resolvedDisabled = computed(\n () => this.disabled() || this.cvaDisabled(),\n );\n\n readonly resolvedStatus = computed<CheckboxStatus>(() => {\n if (this.status() !== 'default') return this.status();\n if (this.invalid()) return 'invalid';\n return 'default';\n });\n\n readonly resolvedAriaLabelledby = computed<string | null>(() =>\n this.hasLabel() && !this.ariaLabel() ? this.labelId() : null,\n );\n\n readonly resolvedAriaDescribedby = computed<string | null>(() =>\n this.hasHelperText() ? this.helperId() : null,\n );\n\n readonly resolvedAriaInvalid = computed<'true' | null>(() =>\n this.resolvedStatus() === 'invalid' ? 'true' : null,\n );\n\n readonly currentValues = computed(() => this.internalValues());\n\n readonly indeterminateSet = computed(() => new Set(this.indeterminateValues()));\n\n // ── ControlValueAccessor ─────────────────────────────────────────────────\n writeValue(value: readonly CheckboxValue[] | null): void {\n this.internalValues.set(Array.isArray(value) ? [...value] : []);\n }\n\n registerOnChange(fn: (value: readonly CheckboxValue[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n // ── Public helpers ───────────────────────────────────────────────────────\n isChecked(option: CheckboxListOption): boolean {\n return this.internalValues().includes(option.value);\n }\n\n isIndeterminate(option: CheckboxListOption): boolean {\n return this.indeterminateSet().has(option.value);\n }\n\n isOptionDisabled(option: CheckboxListOption): boolean {\n return this.resolvedDisabled() || Boolean(option.disabled);\n }\n\n trackOption = (_index: number, option: CheckboxListOption): string | number => option.value;\n\n optionDescriptionId(option: CheckboxListOption): string | null {\n if (!option.description) return null;\n return `${this.resolvedGroupId()}-${String(option.value)}-description`;\n }\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onOptionChange(option: CheckboxListOption, event: CheckboxChangeEvent): void {\n if (this.readonly()) return;\n if (this.resolvedDisabled() || option.disabled) return;\n\n const current = this.internalValues();\n const next: readonly CheckboxValue[] = event.checked\n ? [...current, option.value]\n : current.filter((value) => value !== option.value);\n\n this.internalValues.set(next);\n this.onChange(next);\n this.valueChange.emit(next);\n this.changed.emit({\n values: next,\n changedValue: option.value,\n checked: event.checked,\n originalEvent: event.originalEvent,\n });\n this.onTouched();\n }\n}\n","<fieldset\n class=\"tbk-checkbox-list\"\n [class.tbk-checkbox-list--boxed]=\"surface() === 'boxed'\"\n [class.tbk-checkbox-list--secondary]=\"variant() === 'secondary'\"\n [class.tbk-checkbox-list--disabled]=\"resolvedDisabled()\"\n [class.tbk-checkbox-list--readonly]=\"readonly()\"\n [class.tbk-checkbox-list--invalid]=\"resolvedStatus() === 'invalid'\"\n [class.tbk-checkbox-list--success]=\"resolvedStatus() === 'success'\"\n [attr.id]=\"resolvedGroupId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"resolvedAriaLabelledby()\"\n [attr.aria-describedby]=\"resolvedAriaDescribedby()\"\n [attr.aria-invalid]=\"resolvedAriaInvalid()\"\n [attr.aria-disabled]=\"readonly() ? 'true' : null\"\n [disabled]=\"resolvedDisabled() || null\"\n>\n @if (hasLabel()) {\n <legend class=\"tbk-checkbox-list__legend\">\n <span [attr.id]=\"labelId()\">{{ label() }}</span>\n @if (required()) {\n <span\n class=\"tbk-checkbox-list__required\"\n aria-hidden=\"true\"\n >{{ resolvedI18n().requiredIndicator }}</span>\n <span class=\"tbk-checkbox-list__sr-only\">{{ resolvedI18n().requiredAriaLabel }}</span>\n }\n </legend>\n }\n\n <ul\n class=\"tbk-checkbox-list__items\"\n [class.tbk-checkbox-list__items--horizontal]=\"orientation() === 'horizontal'\"\n role=\"presentation\"\n >\n @for (option of options(); track trackOption($index, option)) {\n <li\n class=\"tbk-checkbox-list__item\"\n [class.tbk-checkbox-list__item--checked]=\"isChecked(option)\"\n [class.tbk-checkbox-list__item--option-disabled]=\"isOptionDisabled(option)\"\n >\n <tbk-checkbox\n [label]=\"option.label\"\n [description]=\"option.description || ''\"\n [value]=\"option.value\"\n [variant]=\"variant()\"\n [checked]=\"isChecked(option)\"\n [indeterminate]=\"isIndeterminate(option)\"\n [disabled]=\"isOptionDisabled(option)\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [status]=\"resolvedStatus()\"\n [id]=\"option.id\"\n (changed)=\"onOptionChange(option, $event)\"\n ></tbk-checkbox>\n </li>\n }\n </ul>\n\n @if (hasHelperText()) {\n <p\n class=\"tbk-checkbox-list__helper\"\n [attr.id]=\"helperId()\"\n >{{ helperText() }}</p>\n }\n</fieldset>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\n\nexport type ChipGroupOrientation = 'horizontal' | 'vertical';\n\n/**\n * Container WAI-ARIA \"group\" para um conjunto de chips.\n * Oferece:\n * - role=\"group\" semântico com aria-label/labelledby\n * - roving tabindex (uma chip por vez no tab order)\n * - navegação por setas: ←/→ (horizontal) ou ↑/↓ (vertical), Home/End\n * Não gerencia seleção: o consumidor controla via [selected] em cada chip.\n */\n@Component({\n selector: 'tbk-chip-group',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"tbk-chip-group\"\n [class.tbk-chip-group--vertical]=\"orientation() === 'vertical'\"\n [attr.role]=\"'group'\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy() ?? null\"\n [attr.aria-orientation]=\"orientation()\"\n >\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .tbk-chip-group {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--tbk-ds-gap-8);\n }\n\n .tbk-chip-group--vertical {\n flex-direction: column;\n align-items: flex-start;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipGroupComponent implements AfterContentInit {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ariaLabel = input<string>('Chip group');\n readonly ariaLabelledBy = input<string | undefined>(undefined);\n readonly orientation = input<ChipGroupOrientation>('horizontal');\n\n ngAfterContentInit(): void {\n this.applyRovingTabindex();\n // Observa adições/remoções de chips em runtime (DOM dinâmico via *ngFor / @for)\n const observer = new MutationObserver(() => this.applyRovingTabindex());\n observer.observe(this.host.nativeElement, { childList: true, subtree: true });\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n const horizontal = this.orientation() === 'horizontal';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const prevKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const navKeys = [nextKey, prevKey, 'Home', 'End'];\n\n if (!navKeys.includes(event.key)) return;\n\n const chips = this.focusableChips();\n if (chips.length === 0) return;\n\n const currentIndex = chips.indexOf(document.activeElement as HTMLElement);\n let targetIndex = currentIndex;\n\n if (event.key === nextKey) {\n targetIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % chips.length;\n } else if (event.key === prevKey) {\n targetIndex = currentIndex < 0 ? chips.length - 1 : (currentIndex - 1 + chips.length) % chips.length;\n } else if (event.key === 'Home') {\n targetIndex = 0;\n } else if (event.key === 'End') {\n targetIndex = chips.length - 1;\n }\n\n event.preventDefault();\n chips[targetIndex]?.focus();\n this.updateTabindex(chips, targetIndex);\n }\n\n private focusableChips(): HTMLElement[] {\n const nodes = this.host.nativeElement.querySelectorAll<HTMLElement>(\n 'tbk-chip button.tbk-chip:not(:disabled)',\n );\n return Array.from(nodes);\n }\n\n private applyRovingTabindex(): void {\n const chips = this.focusableChips();\n if (chips.length === 0) return;\n // Primeira chip recebe tabindex=0; demais recebem -1\n this.updateTabindex(chips, 0);\n }\n\n private updateTabindex(chips: HTMLElement[], activeIndex: number): void {\n chips.forEach((chip, index) => {\n chip.tabIndex = index === activeIndex ? 0 : -1;\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\n\nexport interface TabsItem {\n id: string;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Navegação tabbed (WAI-ARIA tablist pattern). Cada item é um botão; o ativo\n * recebe `aria-selected=\"true\"` e `tabindex=0`, os demais `tabindex=-1`.\n *\n * @example\n * <tbk-tabs [items]=\"tabs\" [activeTabId]=\"active\" (activeTabChange)=\"active = $event\"></tbk-tabs>\n */\n@Component({\n selector: 'tbk-tabs',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent implements OnChanges {\n /** Lista de abas (deve ter `id` único por item). */\n @Input() items: readonly TabsItem[] = [];\n /** Id da aba ativa. Null → primeira aba habilitada vira ativa. */\n @Input() activeTabId: string | null = null;\n /** Rótulo acessível do `role=\"tablist\"`. */\n @Input() ariaLabel = 'Navegacao por abas';\n\n /** Emitido quando o usuário troca de aba (click ou teclado). */\n @Output() activeTabChange = new EventEmitter<string>();\n\n @ViewChildren('tabButton') private tabButtons!: QueryList<ElementRef<HTMLButtonElement>>;\n\n resolvedActiveTabId: string | null = null;\n\n ngOnChanges(_: SimpleChanges): void {\n this.syncResolvedActiveTabId();\n }\n\n trackByTabId(_: number, item: TabsItem): string {\n return item.id;\n }\n\n isActive(tabId: string): boolean {\n return this.resolvedActiveTabId === tabId;\n }\n\n getTabIndex(tabId: string): number {\n return this.isActive(tabId) ? 0 : -1;\n }\n\n selectTab(tabId: string): void {\n if (this.resolvedActiveTabId === tabId || this.isDisabled(tabId)) {\n return;\n }\n\n this.resolvedActiveTabId = tabId;\n this.activeTabChange.emit(tabId);\n }\n\n onKeydown(event: KeyboardEvent, tabId: string): void {\n const enabledTabs = (this.items ?? []).filter((item) => item && !item.disabled);\n const currentIndex = enabledTabs.findIndex((item) => item && item.id === tabId);\n\n if (currentIndex < 0) {\n return;\n }\n\n let nextIndex: number | null = null;\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % enabledTabs.length;\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n nextIndex = (currentIndex - 1 + enabledTabs.length) % enabledTabs.length;\n } else if (event.key === 'Home') {\n nextIndex = 0;\n } else if (event.key === 'End') {\n nextIndex = enabledTabs.length - 1;\n }\n\n if (nextIndex === null) {\n return;\n }\n\n event.preventDefault();\n const nextTabId = enabledTabs[nextIndex]?.id;\n if (nextTabId) {\n this.selectTab(nextTabId);\n this.focusTab(nextTabId);\n }\n }\n\n private syncResolvedActiveTabId(): void {\n const fallbackTab = (this.items ?? []).find((item) => item && !item.disabled) ?? null;\n\n if (!fallbackTab) {\n this.resolvedActiveTabId = null;\n return;\n }\n\n const hasValidActiveTab =\n this.activeTabId !== null &&\n (this.items ?? []).some((item) => item && item.id === this.activeTabId && !item.disabled);\n\n this.resolvedActiveTabId = hasValidActiveTab ? this.activeTabId : fallbackTab.id;\n }\n\n private focusTab(tabId: string): void {\n const tabButton = this.tabButtons.find(\n (buttonRef) => buttonRef.nativeElement.dataset['tabId'] === tabId\n );\n\n tabButton?.nativeElement.focus();\n }\n\n private isDisabled(tabId: string): boolean {\n return (this.items ?? []).some((item) => item && item.id === tabId && item.disabled);\n }\n}\n","<div\n class=\"tbk-tabs\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <button\n #tabButton\n *ngFor=\"let item of items; trackBy: trackByTabId\"\n class=\"tbk-tabs__tab\"\n [class.tbk-tabs__tab--active]=\"isActive(item.id)\"\n [class.tbk-tabs__tab--disabled]=\"item.disabled\"\n [attr.data-tab-id]=\"item.id\"\n [attr.aria-selected]=\"isActive(item.id)\"\n [attr.id]=\"item.id + '-tab'\"\n [attr.tabindex]=\"getTabIndex(item.id)\"\n [disabled]=\"item.disabled\"\n role=\"tab\"\n type=\"button\"\n (click)=\"selectTab(item.id)\"\n (keydown)=\"onKeydown($event, item.id)\"\n >\n <span class=\"tbk-tabs__label\">{{ item.label }}</span>\n </button>\n</div>\n","import { TemplateRef } from '@angular/core';\nimport { ButtonAppearance } from '../Button/button.component';\nimport { IconName, IconToken } from '../Icons/icons.component';\nimport { TabsItem } from '../Tabs/tabs.component';\n\nexport type ContentPanelStatus = 'default' | 'error' | 'success';\nexport type ContentPanelVariant = 'tabs' | 'consultation' | 'form' | 'custom';\n\nexport type ContentPanelActionSource = 'primary' | 'secondary' | 'panel' | 'copy';\n\nexport interface ContentPanelAction {\n readonly id: string;\n readonly label: string;\n readonly icon?: IconName;\n readonly ariaLabel?: string;\n readonly tooltip?: string;\n readonly appearance?: ButtonAppearance;\n readonly source?: Extract<ContentPanelActionSource, 'primary' | 'secondary'>;\n readonly disabled?: boolean;\n}\n\nexport interface ContentPanelActionEvent {\n readonly source: ContentPanelActionSource;\n readonly actionId?: string;\n readonly tabId?: string | null;\n readonly originalEvent: Event;\n readonly panelId?: string;\n}\n\nexport interface ContentPanelEmptyState {\n readonly title: string;\n readonly description?: string;\n readonly icon?: IconToken;\n}\n\nexport interface ContentPanelI18n {\n readonly loadingLabel?: string;\n readonly emptyTitle?: string;\n readonly emptyDescription?: string;\n readonly copyLabel?: string;\n readonly tabsAriaLabel?: string;\n readonly actionsAriaLabel?: string;\n readonly contentAriaLabel?: string;\n}\n\nexport interface ContentPanelTab extends TabsItem {\n readonly panelTemplate?: TemplateRef<void>;\n}\n\nexport const DEFAULT_CONTENT_PANEL_I18N: Required<ContentPanelI18n> = {\n loadingLabel: 'Carregando conteudo',\n emptyTitle: 'Nenhum conteudo disponivel',\n emptyDescription: 'Ajuste os filtros ou tente novamente mais tarde.',\n copyLabel: 'Copiar conteudo',\n tabsAriaLabel: 'Navegacao do painel de conteudo',\n actionsAriaLabel: 'Acoes do painel de conteudo',\n contentAriaLabel: 'Conteudo do painel',\n};\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n TemplateRef,\n booleanAttribute,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { BadgeComponent } from '../Badge/badge.component';\nimport { ButtonComponent } from '../Button/button.component';\nimport { IconColor, IconName, IconToken, IconsComponent } from '../Icons/icons.component';\nimport { TabsComponent } from '../Tabs/tabs.component';\nimport { TextColor, TextComponent } from '../Text/text.component';\nimport {\n ContentPanelAction,\n ContentPanelActionEvent,\n ContentPanelEmptyState,\n ContentPanelI18n,\n ContentPanelStatus,\n ContentPanelTab,\n ContentPanelVariant,\n DEFAULT_CONTENT_PANEL_I18N,\n} from './content-panel.types';\n\nexport type {\n ContentPanelAction,\n ContentPanelActionEvent,\n ContentPanelActionSource,\n ContentPanelEmptyState,\n ContentPanelI18n,\n ContentPanelStatus,\n ContentPanelTab,\n ContentPanelVariant,\n} from './content-panel.types';\n\n@Component({\n selector: 'tbk-content-panel',\n standalone: true,\n imports: [\n CommonModule,\n BadgeComponent,\n ButtonComponent,\n IconsComponent,\n TabsComponent,\n TextComponent,\n ],\n templateUrl: './content-panel.component.html',\n styleUrls: ['./content-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-content-panel-host--interactive]': 'isInteractive()',\n '[class.tbk-content-panel-host--selected]': 'selected()',\n '[class.tbk-content-panel-host--disabled]': 'disabled()',\n '[class.tbk-content-panel-host--readonly]': 'readonly()',\n '[class.tbk-content-panel-host--loading]': 'loading()',\n '[class.tbk-content-panel-host--error]': \"status() === 'error'\",\n '[class.tbk-content-panel-host--success]': \"status() === 'success'\",\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class ContentPanelComponent {\n private readonly internalActiveTabId = signal<string | null>(null);\n private readonly fallbackPanelId = `tbk-content-panel-${Math.random().toString(36).slice(2, 10)}`;\n\n readonly title = input.required<string>();\n readonly variant = input<ContentPanelVariant>('custom');\n readonly description = input<string>('');\n readonly eyebrow = input<string>('');\n readonly badgeLabel = input<string | number | null>(null);\n\n readonly tabs = input<readonly ContentPanelTab[]>([]);\n readonly activeTabId = input<string | null>(null);\n readonly activeTabPanel = input<TemplateRef<void> | null>(null);\n\n readonly actions = input<readonly ContentPanelAction[]>([]);\n readonly showHeader = input(true, { transform: booleanAttribute });\n readonly showTabs = input(true, { transform: booleanAttribute });\n readonly showActions = input(true, { transform: booleanAttribute });\n readonly copyable = input(false, { transform: booleanAttribute });\n readonly contentText = input<string>('');\n\n readonly status = input<ContentPanelStatus>('default');\n readonly statusMessage = input<string>('');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly clickable = input(false, { transform: booleanAttribute });\n readonly empty = input(false, { transform: booleanAttribute });\n readonly emptyState = input<ContentPanelEmptyState | null>(null);\n\n readonly panelId = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly i18n = input<ContentPanelI18n>({});\n\n readonly actionClicked = output<ContentPanelActionEvent>();\n readonly copyClicked = output<ContentPanelActionEvent>();\n readonly panelClicked = output<ContentPanelActionEvent>();\n readonly activeTabChange = output<string>();\n\n readonly resolvedI18n = computed<Required<ContentPanelI18n>>(() => ({\n ...DEFAULT_CONTENT_PANEL_I18N,\n ...this.i18n(),\n }));\n\n readonly resolvedActiveTabId = computed<string | null>(() => {\n const active = this.activeTabId();\n const internalActive = this.internalActiveTabId();\n const tabs = this.tabs();\n const fallback = tabs.find((tab) => !tab.disabled)?.id ?? null;\n if (tabs.some((tab) => tab.id === active && !tab.disabled)) return active;\n if (tabs.some((tab) => tab.id === internalActive && !tab.disabled)) return internalActive;\n return fallback;\n });\n\n readonly activeTabTemplate = computed<TemplateRef<void> | null>(() => {\n const externalTemplate = this.activeTabPanel();\n if (externalTemplate) return externalTemplate;\n const activeId = this.resolvedActiveTabId();\n return this.tabs().find((tab) => tab.id === activeId)?.panelTemplate ?? null;\n });\n\n readonly hasTabs = computed(() => this.showTabs() && this.tabs().length > 0);\n readonly hasActions = computed(\n () => this.showActions() && (this.actions().length > 0 || this.copyable()),\n );\n readonly hasHeaderMeta = computed(() => Boolean(this.eyebrow() || this.badgeLabel()));\n readonly hasDescription = computed(() => Boolean(this.description()));\n readonly hasStatusMessage = computed(() => this.status() !== 'default' && Boolean(this.statusMessage()));\n readonly shouldRenderEmpty = computed(() => this.empty() && !this.loading());\n\n readonly resolvedEmptyState = computed<Required<ContentPanelEmptyState>>(() => ({\n title: this.emptyState()?.title ?? this.resolvedI18n().emptyTitle,\n description: this.emptyState()?.description ?? this.resolvedI18n().emptyDescription,\n icon: this.emptyState()?.icon ?? 'circleInfoRegular',\n }));\n\n readonly resolvedPanelId = computed(() => this.panelId() ?? this.fallbackPanelId);\n readonly titleId = computed(() => `${this.resolvedPanelId()}-title`);\n readonly descriptionId = computed(() =>\n this.hasDescription() ? `${this.resolvedPanelId()}-description` : null,\n );\n readonly resolvedAriaLabel = computed(() => this.ariaLabel() ?? null);\n readonly ariaLabelledby = computed(() => (this.ariaLabel() ? null : this.titleId()));\n readonly tabPanelId = computed(() => {\n const id = this.panelId();\n const tabId = this.resolvedActiveTabId();\n return id && tabId ? `${id}-${tabId}-panel` : null;\n });\n readonly tabPanelLabelledby = computed(() => {\n const tabId = this.resolvedActiveTabId();\n return tabId ? `${tabId}-tab` : null;\n });\n\n readonly isInteractive = computed(\n () => this.clickable() && !this.disabled() && !this.readonly() && !this.loading(),\n );\n readonly tabIndex = computed<number | null>(() => (this.isInteractive() ? 0 : null));\n readonly hostRole = computed<string | null>(() => (this.isInteractive() ? 'button' : null));\n readonly ariaDisabled = computed<'true' | null>(() => (this.disabled() ? 'true' : null));\n readonly ariaReadonly = computed<'true' | null>(() => (this.readonly() ? 'true' : null));\n readonly ariaBusy = computed<'true' | null>(() => (this.loading() ? 'true' : null));\n readonly ariaPressed = computed<'true' | 'false' | null>(() => {\n if (!this.isInteractive()) return null;\n return this.selected() ? 'true' : 'false';\n });\n\n readonly statusIcon = computed<IconToken>(() =>\n this.status() === 'success' ? 'checkFormSectionStepper' : 'triangleExclamationRegular',\n );\n readonly statusIconColor = computed<IconColor>(() =>\n this.status() === 'success' ? 'success' : 'critical',\n );\n readonly statusTextColor = computed<TextColor>(() =>\n this.status() === 'success' ? 'Success' : 'Critical',\n );\n\n onTabChange(tabId: string): void {\n this.internalActiveTabId.set(tabId);\n this.activeTabChange.emit(tabId);\n }\n\n onActionClick(action: ContentPanelAction, event: MouseEvent): void {\n if (this.disabled() || this.loading() || action.disabled) return;\n this.actionClicked.emit({\n source: action.source ?? 'primary',\n actionId: action.id,\n tabId: this.resolvedActiveTabId(),\n originalEvent: event,\n panelId: this.panelId(),\n });\n }\n\n onCopyClick(event: MouseEvent): void {\n if (this.disabled() || this.loading() || this.readonly()) return;\n const payload: ContentPanelActionEvent = {\n source: 'copy',\n tabId: this.resolvedActiveTabId(),\n originalEvent: event,\n panelId: this.panelId(),\n };\n this.copyClicked.emit(payload);\n this.actionClicked.emit(payload);\n }\n\n onPanelClick(event: MouseEvent): void {\n if (!this.isInteractive()) return;\n const target = event.target as HTMLElement | null;\n if (this.isInteractionBlocked(target)) return;\n this.panelClicked.emit({\n source: 'panel',\n tabId: this.resolvedActiveTabId(),\n originalEvent: event,\n panelId: this.panelId(),\n });\n }\n\n @HostListener('keydown', ['$event'])\n onPanelKeydown(event: KeyboardEvent): void {\n if (!this.isInteractive()) return;\n const target = event.target as HTMLElement | null;\n if (this.isInteractionBlocked(target)) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.panelClicked.emit({\n source: 'panel',\n tabId: this.resolvedActiveTabId(),\n originalEvent: event,\n panelId: this.panelId(),\n });\n }\n }\n\n trackAction = (_index: number, action: ContentPanelAction): string => action.id;\n\n private isInteractionBlocked(target: HTMLElement | null): boolean {\n const blockedElement = target?.closest<HTMLElement>(\n [\n 'button',\n 'a',\n 'input',\n 'textarea',\n 'select',\n 'label',\n '[contenteditable=\"true\"]',\n '[role=\"tab\"]',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"switch\"]',\n '[role=\"textbox\"]',\n '[role=\"combobox\"]',\n '[data-content-panel-stop]',\n ].join(', '),\n );\n\n return Boolean(blockedElement && !blockedElement.classList.contains('tbk-content-panel'));\n }\n}\n","<article\n class=\"tbk-content-panel\"\n [attr.id]=\"resolvedPanelId()\"\n [attr.role]=\"hostRole()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"descriptionId()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [attr.aria-busy]=\"ariaBusy()\"\n [attr.aria-pressed]=\"ariaPressed()\"\n [attr.data-status]=\"status()\"\n [attr.data-variant]=\"variant()\"\n (click)=\"onPanelClick($event)\"\n>\n @if (loading()) {\n <div class=\"tbk-content-panel__loading\" role=\"status\" [attr.aria-label]=\"resolvedI18n().loadingLabel\">\n <div class=\"tbk-content-panel__skeleton tbk-content-panel__skeleton--title\"></div>\n <div class=\"tbk-content-panel__skeleton tbk-content-panel__skeleton--tabs\"></div>\n <div class=\"tbk-content-panel__skeleton tbk-content-panel__skeleton--body\"></div>\n <span class=\"tbk-content-panel__sr-only\">{{ resolvedI18n().loadingLabel }}</span>\n </div>\n } @else {\n @if (showHeader()) {\n <header class=\"tbk-content-panel__header\">\n <div class=\"tbk-content-panel__heading\">\n @if (hasHeaderMeta()) {\n <div class=\"tbk-content-panel__meta\">\n @if (eyebrow()) {\n <tbk-text\n [children]=\"eyebrow()\"\n as=\"span\"\n size=\"font-size-300\"\n color=\"Gray\"\n weight=\"font-weight-bold\"\n [uppercase]=\"true\"\n margin=\"0\"\n ></tbk-text>\n }\n\n @if (badgeLabel()) {\n <tbk-badge [label]=\"badgeLabel()!\" size=\"sm\" variant=\"primary\"></tbk-badge>\n }\n </div>\n }\n\n <tbk-text\n class=\"tbk-content-panel__title\"\n [attr.id]=\"titleId()\"\n [children]=\"title()\"\n as=\"p\"\n size=\"font-size-450\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n\n @if (hasDescription()) {\n <tbk-text\n class=\"tbk-content-panel__description\"\n [attr.id]=\"descriptionId()\"\n [children]=\"description()\"\n as=\"p\"\n size=\"font-size-325\"\n color=\"Gray\"\n weight=\"font-weight-regular\"\n margin=\"0\"\n ></tbk-text>\n }\n </div>\n\n @if (hasActions()) {\n <div class=\"tbk-content-panel__actions\" [attr.aria-label]=\"resolvedI18n().actionsAriaLabel\">\n <ng-content select=\"[tbk-content-panel-header-start]\"></ng-content>\n\n @for (action of actions(); track trackAction($index, action)) {\n <tbk-button\n [label]=\"action.label\"\n size=\"sm\"\n [appearance]=\"action.appearance ?? { variant: 'primary', fill: 'outline' }\"\n [icon]=\"action.icon\"\n iconPosition=\"left\"\n [disabled]=\"disabled() || loading() || action.disabled === true\"\n [tooltip]=\"action.tooltip ?? action.label\"\n [ariaLabel]=\"action.ariaLabel ?? action.label\"\n (clicked)=\"onActionClick(action, $event)\"\n data-content-panel-stop\n ></tbk-button>\n }\n\n @if (copyable()) {\n <tbk-button\n [label]=\"resolvedI18n().copyLabel\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'outline' }\"\n icon=\"cloneRegularFull\"\n iconPosition=\"only\"\n [disabled]=\"disabled() || loading() || readonly()\"\n [tooltip]=\"resolvedI18n().copyLabel\"\n [ariaLabel]=\"resolvedI18n().copyLabel\"\n (clicked)=\"onCopyClick($event)\"\n data-content-panel-stop\n ></tbk-button>\n }\n\n <ng-content select=\"[tbk-content-panel-header-end]\"></ng-content>\n </div>\n }\n </header>\n }\n\n @if (hasStatusMessage()) {\n <div\n class=\"tbk-content-panel__status\"\n [attr.role]=\"status() === 'error' ? 'alert' : 'status'\"\n data-content-panel-stop\n >\n <tbk-icons\n [name]=\"statusIcon()\"\n [color]=\"statusIconColor()\"\n [size]=\"16\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <tbk-text\n [children]=\"statusMessage()\"\n as=\"p\"\n size=\"font-size-300\"\n [color]=\"statusTextColor()\"\n weight=\"font-weight-medium\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n\n @if (hasTabs()) {\n <div class=\"tbk-content-panel__tabs\" data-content-panel-stop>\n <tbk-tabs\n [items]=\"tabs()\"\n [activeTabId]=\"resolvedActiveTabId()\"\n [ariaLabel]=\"resolvedI18n().tabsAriaLabel\"\n (activeTabChange)=\"onTabChange($event)\"\n ></tbk-tabs>\n </div>\n }\n\n <section\n class=\"tbk-content-panel__body\"\n [attr.id]=\"tabPanelId()\"\n [attr.role]=\"hasTabs() ? 'tabpanel' : 'region'\"\n [attr.aria-labelledby]=\"hasTabs() ? tabPanelLabelledby() : null\"\n [attr.aria-label]=\"hasTabs() ? null : resolvedI18n().contentAriaLabel\"\n >\n @if (shouldRenderEmpty()) {\n <div class=\"tbk-content-panel__empty\" role=\"status\">\n <tbk-icons\n [name]=\"resolvedEmptyState().icon\"\n color=\"blue\"\n [size]=\"24\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <tbk-text\n [children]=\"resolvedEmptyState().title\"\n as=\"p\"\n size=\"font-size-350\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n <tbk-text\n [children]=\"resolvedEmptyState().description\"\n as=\"p\"\n size=\"font-size-300\"\n color=\"Gray\"\n weight=\"font-weight-regular\"\n align=\"center\"\n margin=\"0\"\n ></tbk-text>\n <ng-content select=\"[tbk-content-panel-empty]\"></ng-content>\n </div>\n } @else if (activeTabTemplate()) {\n <ng-container [ngTemplateOutlet]=\"activeTabTemplate()\"></ng-container>\n } @else if (contentText()) {\n <pre class=\"tbk-content-panel__pre\"><code>{{ contentText() }}</code></pre>\n } @else {\n <ng-content></ng-content>\n }\n </section>\n\n <ng-content select=\"[tbk-content-panel-footer]\"></ng-content>\n }\n</article>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type CurrencyInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-currency-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './currency-input.component.html',\n styleUrl: './currency-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CurrencyInputComponent),\n multi: true,\n },\n ],\n})\nexport class CurrencyInputComponent implements ControlValueAccessor {\n @Input() label = 'Valor';\n @Input() placeholder = 'R$00.000.000,00';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: CurrencyInputStatus = 'Default';\n @Input() disabled = false;\n @Input() maxIntegerDigits = 8;\n @Input() decimalPlaces = 2;\n @Input() validateOnBlur = true;\n @Input() invalidZeroMessage = 'Verifique o valor informado';\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-currency-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n const digits = this.extractDigits(value ?? '');\n this.value = digits ? this.formatCurrency(digits) : '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(rawValue: string): void {\n const digits = this.extractDigits(rawValue);\n const formatted = digits ? this.formatCurrency(digits) : '';\n this.value = formatted;\n if (this.internalErrorMessage) {\n this.internalErrorMessage = '';\n }\n this.onChange(formatted);\n this.valueChange.emit(formatted);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const digits = this.extractDigits(pasted);\n const formatted = digits ? this.formatCurrency(digits) : '';\n this.value = formatted;\n this.onChange(formatted);\n this.valueChange.emit(formatted);\n }\n\n onBlur(): void {\n this.validateValue();\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private extractDigits(value: string): string {\n const maxDigits = this.maxIntegerDigits + this.decimalPlaces;\n return value.replace(/\\D/g, '').slice(0, maxDigits);\n }\n\n private formatCurrency(digits: string): string {\n if (!digits) {\n return '';\n }\n\n const padded = digits.padStart(this.decimalPlaces + 1, '0');\n const integerDigits = padded.slice(0, -this.decimalPlaces) || '0';\n const decimalDigits = padded.slice(-this.decimalPlaces);\n const integerNormalized = integerDigits.replace(/^0+(?=\\d)/, '');\n const grouped = integerNormalized.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n return `R$${grouped},${decimalDigits}`;\n }\n\n private validateValue(): void {\n if (!this.validateOnBlur || this.disabled || this.externalErrorMessage?.trim()) {\n return;\n }\n\n if (!this.value) {\n this.internalErrorMessage = '';\n return;\n }\n\n const digits = this.extractDigits(this.value);\n if (digits && /^0+$/.test(digits)) {\n this.internalErrorMessage = this.invalidZeroMessage;\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(this.value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(this.value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-currency-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-currency-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-currency-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-currency-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-currency-input--disabled]=\"isDisabled\"\n [class.tbk-currency-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-currency-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-currency-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-currency-input__controls\">\n <div class=\"tbk-currency-input__field\">\n <input\n class=\"tbk-currency-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Currency input'\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-currency-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-currency-input__helper\"\n [class.tbk-currency-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { IconsComponent } from '../Icons/icons.component';\r\nimport { TextComponent } from '../Text/text.component';\r\n\r\nexport interface PaginationItem {\r\n label: string | number;\r\n page?: number;\r\n active?: boolean;\r\n}\r\n\r\n/**\r\n * Paginador de listas/tabelas. Calcula janela de páginas visíveis e expõe\r\n * seletor de page size.\r\n */\r\n@Component({\r\n selector: 'tbk-pagination',\r\n standalone: true,\r\n imports: [CommonModule, IconsComponent, TextComponent],\r\n templateUrl: './pagination.layout.html',\r\n styleUrls: ['./pagination.layout.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginationComponent {\r\n @Input() totalRecords = 250;\r\n @Input() page = 1;\r\n @Input() totalPages = 1;\r\n @Input() pageSize = 25;\r\n @Input() pageSizeOptions: number[] = [10, 25, 50, 100];\r\n @Input() visiblePages = 3;\r\n @Input() loading = false;\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n isPageSizeOpen = false;\r\n\r\n constructor(private readonly hostRef: ElementRef<HTMLElement>) {}\r\n\r\n get normalizedPage(): number {\r\n const pageVal = this.page ?? 1;\r\n const totalVal = this.totalPages ?? 1;\r\n return Math.min(Math.max(1, pageVal), Math.max(1, totalVal));\r\n }\r\n\r\n get resolvedPageSizeOptions(): number[] {\r\n const options = (this.pageSizeOptions ?? []).filter((option) => Number.isFinite(option) && option > 0);\r\n const uniqueOptions = Array.from(new Set([...options, this.pageSize ?? 25]));\r\n return uniqueOptions.sort((left, right) => left - right);\r\n }\r\n\r\n get items(): PaginationItem[] {\r\n const total = Math.max(1, this.totalPages ?? 1);\r\n const current = this.normalizedPage;\r\n\r\n const items: PaginationItem[] = [];\r\n\r\n const windowSize = Math.min(Math.max(1, this.visiblePages ?? 3), total);\r\n let start = current - Math.floor((windowSize - 1) / 2);\r\n let end = start + windowSize - 1;\r\n\r\n if (start < 1) {\r\n end = Math.min(total, end + (1 - start));\r\n start = 1;\r\n }\r\n\r\n if (end > total) {\r\n start = Math.max(1, start - (end - total));\r\n end = total;\r\n }\r\n\r\n // primeira página\r\n\r\n // intervalo esquerdo com ellipsis se necessário\r\n\r\n for (let page = start; page <= end; page++) {\r\n items.push({\r\n label: page,\r\n page,\r\n active: page === current,\r\n });\r\n }\r\n\r\n // intervalo direito com ellipsis\r\n\r\n // última página\r\n\r\n return items;\r\n }\r\n\r\n get canGoPrev(): boolean {\r\n return this.normalizedPage > 1;\r\n }\r\n\r\n get canGoNext(): boolean {\r\n return this.normalizedPage < (this.totalPages ?? 1);\r\n }\r\n\r\n get pageButtonTextSize(): 'font-size-300' {\r\n return 'font-size-300';\r\n }\r\n\r\n get totalRecordsLabel(): string {\r\n return `${this.totalRecords ?? 0} resultados`;\r\n }\r\n\r\n get pageSizeLabel(): string {\r\n return String(this.pageSize ?? 25);\r\n }\r\n\r\n get controlIconSize(): number {\r\n return 12;\r\n }\r\n\r\n get resolvedSkeletonItems(): number[] {\r\n const count = Math.max(3, Math.min(5, this.visiblePages ?? 3));\r\n return Array.from({ length: count }, (_value, index) => index);\r\n }\r\n\r\n resolvePageSizeOptionLabel(option: number): string {\r\n return String(option ?? '');\r\n }\r\n\r\n resolveItemLabel(item: PaginationItem): string {\r\n return String(item?.label ?? '');\r\n }\r\n\r\n onItemClick(item: PaginationItem): void {\r\n if (this.loading || item.page == null) {\r\n return;\r\n }\r\n\r\n this.setPage(item.page);\r\n }\r\n\r\n goPrev(): void {\r\n if (this.loading) return;\r\n if (!this.canGoPrev) return;\r\n this.setPage(this.normalizedPage - 1);\r\n }\r\n\r\n goNext(): void {\r\n if (this.loading) return;\r\n if (!this.canGoNext) return;\r\n this.setPage(this.normalizedPage + 1);\r\n }\r\n\r\n togglePageSize(): void {\r\n if (this.loading) {\r\n this.isPageSizeOpen = false;\r\n return;\r\n }\r\n\r\n this.isPageSizeOpen = !this.isPageSizeOpen;\r\n }\r\n\r\n selectPageSize(option: number): void {\r\n if (this.loading) {\r\n this.isPageSizeOpen = false;\r\n return;\r\n }\r\n\r\n if (option === this.pageSize) {\r\n this.isPageSizeOpen = false;\r\n return;\r\n }\r\n\r\n this.pageSize = option;\r\n this.pageSizeChange.emit(option);\r\n this.isPageSizeOpen = false;\r\n }\r\n\r\n trackByItemLabel(_index: number, item: PaginationItem): string {\r\n return `${item.label}-${item.page ?? 'page'}`;\r\n }\r\n\r\n trackByPageSize(_index: number, option: number): number {\r\n return option;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n if (this.loading) {\r\n this.isPageSizeOpen = false;\r\n return;\r\n }\r\n\r\n if (!this.isPageSizeOpen) {\r\n return;\r\n }\r\n\r\n const target = event.target as Node | null;\r\n if (target && this.hostRef.nativeElement.contains(target)) {\r\n return;\r\n }\r\n\r\n this.isPageSizeOpen = false;\r\n }\r\n\r\n private setPage(next: number): void {\r\n const total = Math.max(1, this.totalPages);\r\n const normalized = Math.min(Math.max(1, next), total);\r\n if (normalized === this.normalizedPage) return;\r\n this.page = normalized;\r\n this.pageChange.emit(this.page);\r\n }\r\n}\r\n","<nav\n class=\"tbk-pagination\"\n [class.tbk-pagination--loading]=\"loading\"\n [attr.aria-busy]=\"loading\"\n aria-label=\"Paginacao de resultados\"\n>\n <ng-container *ngIf=\"loading; else paginationContent\">\n <div class=\"tbk-pagination__meta tbk-pagination__meta--skeleton\" aria-hidden=\"true\">\n <div class=\"tbk-pagination__summary\">\n <span class=\"tbk-pagination__skeleton tbk-pagination__skeleton--summary\"></span>\n </div>\n\n <div class=\"tbk-pagination__page-size\">\n <span class=\"tbk-pagination__skeleton tbk-pagination__skeleton--page-size-label\"></span>\n <span class=\"tbk-pagination__skeleton tbk-pagination__skeleton--page-size-trigger\"></span>\n </div>\n </div>\n\n <div class=\"tbk-pagination__navigation tbk-pagination__navigation--skeleton\" aria-hidden=\"true\">\n <span class=\"tbk-pagination__skeleton tbk-pagination__skeleton--control\"></span>\n\n <ul class=\"tbk-pagination__list\">\n <li\n *ngFor=\"let skeletonItem of resolvedSkeletonItems; trackBy: trackByPageSize\"\n class=\"tbk-pagination__item\"\n >\n <span\n class=\"tbk-pagination__skeleton tbk-pagination__skeleton--page\"\n [class.tbk-pagination__skeleton--page-active]=\"skeletonItem === 1\"\n ></span>\n </li>\n </ul>\n\n <span class=\"tbk-pagination__skeleton tbk-pagination__skeleton--control\"></span>\n </div>\n </ng-container>\n\n <ng-template #paginationContent>\n <div class=\"tbk-pagination__meta\">\n <div class=\"tbk-pagination__summary\">\n <tbk-icons\n class=\"tbk-pagination__summary-icon\"\n [name]=\"'bookOpenLinesRegularFull'\"\n [size]=\"14\"\n [color]=\"'gray'\"\n ></tbk-icons>\n\n <tbk-text\n [children]=\"totalRecordsLabel\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [color]=\"'Secondary'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n\n <div class=\"tbk-pagination__page-size\">\n <tbk-text\n [children]=\"'Itens por pagina'\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [color]=\"'Secondary'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n\n <div class=\"tbk-pagination__page-size-select\">\n <button\n type=\"button\"\n class=\"tbk-pagination__page-size-trigger\"\n [attr.aria-expanded]=\"isPageSizeOpen\"\n aria-haspopup=\"listbox\"\n aria-label=\"Selecionar itens por pagina\"\n (click)=\"togglePageSize()\"\n >\n <tbk-text\n [children]=\"pageSizeLabel\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [color]=\"'Secondary'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n\n <tbk-icons\n [name]=\"'chevronDownSolidFull'\"\n [size]=\"12\"\n [color]=\"'secondary'\"\n ></tbk-icons>\n </button>\n\n <div\n *ngIf=\"isPageSizeOpen\"\n class=\"tbk-pagination__page-size-menu\"\n role=\"listbox\"\n aria-label=\"Itens por pagina\"\n >\n <button\n *ngFor=\"let option of resolvedPageSizeOptions; trackBy: trackByPageSize\"\n type=\"button\"\n class=\"tbk-pagination__page-size-option\"\n [class.tbk-pagination__page-size-option--active]=\"option === pageSize\"\n (click)=\"selectPageSize(option)\"\n >\n <tbk-text\n [children]=\"resolvePageSizeOptionLabel(option)\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [color]=\"'Secondary'\"\n [weight]=\"option === pageSize ? 'font-weight-bold' : 'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tbk-pagination__navigation\">\n <button\n type=\"button\"\n class=\"tbk-pagination__control\"\n [disabled]=\"!canGoPrev\"\n (click)=\"goPrev()\"\n aria-label=\"Pagina anterior\"\n >\n <tbk-icons\n [name]=\"'arrowLeftSolidRegular'\"\n [size]=\"controlIconSize\"\n [color]=\"canGoPrev ? 'secondary' : 'disabled'\"\n ></tbk-icons>\n </button>\n\n <ul class=\"tbk-pagination__list\">\n <li\n *ngFor=\"let item of items; trackBy: trackByItemLabel\"\n class=\"tbk-pagination__item\"\n [class.tbk-pagination__item--active]=\"item.active\"\n >\n <button\n type=\"button\"\n class=\"tbk-pagination__page\"\n (click)=\"onItemClick(item)\"\n >\n <tbk-text\n [children]=\"resolveItemLabel(item)\"\n [as]=\"'span'\"\n [size]=\"pageButtonTextSize\"\n [color]=\"'Secondary'\"\n [weight]=\"item.active ? 'font-weight-bold' : 'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </button>\n </li>\n </ul>\n\n <button\n type=\"button\"\n class=\"tbk-pagination__control\"\n [disabled]=\"!canGoNext\"\n (click)=\"goNext()\"\n aria-label=\"Proxima pagina\"\n >\n <tbk-icons\n [name]=\"'arrowRightSolidRegular'\"\n [size]=\"controlIconSize\"\n [color]=\"canGoNext ? 'secondary' : 'disabled'\"\n ></tbk-icons>\n </button>\n </div>\n </ng-template>\n</nav>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n RendererFactory2,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ResolvedTooltipPlacement, TooltipPlacement } from './tooltip.types';\n\nconst FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]';\nconst VIEWPORT_PADDING_PX = 8;\nconst TRIGGER_GAP_PX = 12;\nconst ARROW_EDGE_INSET_PX = 20;\nconst DEFAULT_MAX_WIDTH_PX = 250;\nconst DEFAULT_OPEN_DELAY_MS = 150;\nlet nextTooltipId = 0;\n\n/**\n * Tooltip contextual ancorado a um trigger projetado via `ng-content`.\n *\n * - Renderiza o balão em `document.body` para evitar clipping por `overflow`.\n * - Faz auto-flip top ↔ bottom conforme espaço disponível.\n * - Acessível: `role=\"tooltip\"` + `aria-describedby` no primeiro filho focável\n * (ou no próprio trigger, com `tabindex=\"0\"`, quando não há filho focável).\n * - Respeita `prefers-reduced-motion`.\n *\n * @example\n * <tbk-tooltip content=\"Salvar rascunho\">\n * <button type=\"button\">Salvar</button>\n * </tbk-tooltip>\n */\n@Component({\n selector: 'tbk-tooltip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-tooltip-host--full-width]': 'fullWidth',\n },\n})\nexport class TooltipComponent implements AfterViewInit, OnChanges, OnDestroy {\n /** Conteúdo do balão. Quando vazio, reusa o texto do trigger. */\n @Input() content: string | null = null;\n\n /** Largura máxima do balão em px. Valores ≤ 0 caem para o default (250). */\n @Input() maxWidth = DEFAULT_MAX_WIDTH_PX;\n\n /** Desabilita exibição — útil para alternar via condição sem desmontar o trigger. */\n @Input() disabled = false;\n\n /** Faz o trigger ocupar 100% da largura do container. */\n @Input() fullWidth = false;\n\n /** Preferência de posicionamento. `auto` tenta top e flippa para bottom se necessário. */\n @Input() placement: TooltipPlacement = 'auto';\n\n /** Atraso em ms antes de abrir (anti-flicker em hover acidental). 0 desabilita. */\n @Input() openDelay = DEFAULT_OPEN_DELAY_MS;\n\n /** Emitido quando o balão se torna visível. */\n @Output() opened = new EventEmitter<void>();\n\n /** Emitido quando o balão é ocultado. */\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('triggerContent', { static: true })\n private readonly triggerContentRef?: ElementRef<HTMLElement>;\n\n isOpen = false;\n\n private readonly renderer: Renderer2;\n private bubbleElement?: HTMLSpanElement;\n private bubbleTextElement?: HTMLSpanElement;\n private bubbleArrowElement?: HTMLSpanElement;\n private describedElement?: HTMLElement;\n private animationFrameId: number | null = null;\n private openTimerId: ReturnType<typeof setTimeout> | null = null;\n private fallbackTabindexApplied = false;\n private readonly bubbleId = `tbk-tooltip-${++nextTooltipId}`;\n private hasHover = false;\n private hasFocusWithin = false;\n\n private readonly viewportChangeHandler = () => {\n if (this.isOpen) {\n this.schedulePositionUpdate();\n }\n };\n\n private readonly documentEscapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isOpen) {\n this.hide();\n }\n };\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n rendererFactory: RendererFactory2,\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n get resolvedContent(): string {\n const customContent = (this.content ?? '').trim();\n if (customContent) {\n return customContent;\n }\n return this.triggerContentRef?.nativeElement?.textContent?.trim() ?? '';\n }\n\n private get resolvedMaxWidth(): number {\n const maxW = this.maxWidth ?? DEFAULT_MAX_WIDTH_PX;\n return maxW > 0 ? maxW : DEFAULT_MAX_WIDTH_PX;\n }\n\n ngAfterViewInit(): void {\n this.applyFallbackTabindex();\n if (this.isOpen) {\n this.schedulePositionUpdate();\n }\n }\n\n ngOnChanges(): void {\n this.applyFallbackTabindex();\n\n if (!this.isOpen) {\n return;\n }\n\n if (!this.resolvedContent || this.disabled) {\n this.hide();\n return;\n }\n\n this.syncBubbleContent();\n this.schedulePositionUpdate();\n }\n\n ngOnDestroy(): void {\n this.cancelOpenTimer();\n this.syncTriggerDescription(false);\n this.removeViewportListeners();\n this.removeDocumentEscapeListener();\n\n if (this.animationFrameId != null) {\n this.windowRef?.cancelAnimationFrame(this.animationFrameId);\n }\n\n this.destroyBubble();\n }\n\n show(): void {\n this.syncVisibility(true);\n }\n\n hide(): void {\n this.hasHover = false;\n this.hasFocusWithin = false;\n this.cancelOpenTimer();\n this.syncVisibility(false);\n }\n\n @HostListener('mouseenter')\n @HostListener('pointerenter')\n onHoverStart(): void {\n this.hasHover = true;\n this.scheduleOpen();\n }\n\n @HostListener('mouseleave')\n @HostListener('pointerleave')\n onHoverEnd(): void {\n this.hasHover = false;\n this.cancelOpenTimer();\n this.syncVisibility(false);\n }\n\n @HostListener('focusin')\n onFocusIn(): void {\n this.hasFocusWithin = true;\n // Foco por teclado abre imediatamente — delay é só para hover.\n this.syncVisibility(true);\n }\n\n @HostListener('focusout', ['$event'])\n onFocusOut(event: FocusEvent): void {\n const nextFocusedElement = event.relatedTarget as Node | null;\n if (nextFocusedElement && this.triggerContentRef?.nativeElement.contains(nextFocusedElement)) {\n return;\n }\n\n this.hasFocusWithin = false;\n this.syncVisibility(false);\n }\n\n private scheduleOpen(): void {\n if (this.disabled || !this.resolvedContent) {\n return;\n }\n\n if (this.openDelay <= 0 || this.isOpen) {\n this.syncVisibility(true);\n return;\n }\n\n this.cancelOpenTimer();\n this.openTimerId = setTimeout(() => {\n this.openTimerId = null;\n if (this.hasHover || this.hasFocusWithin) {\n this.syncVisibility(true);\n }\n }, this.openDelay);\n }\n\n private cancelOpenTimer(): void {\n if (this.openTimerId != null) {\n clearTimeout(this.openTimerId);\n this.openTimerId = null;\n }\n }\n\n private syncVisibility(forceShow: boolean): void {\n if (this.disabled || !this.resolvedContent) {\n this.hasHover = false;\n this.hasFocusWithin = false;\n this.closeTooltip();\n return;\n }\n\n if (!forceShow && !this.hasHover && !this.hasFocusWithin) {\n this.closeTooltip();\n return;\n }\n\n const windowRef = this.windowRef;\n if (!windowRef || !this.documentRef.body) {\n return;\n }\n\n const wasOpen = this.isOpen;\n this.isOpen = true;\n this.ensureBubble();\n this.syncBubbleContent();\n this.syncTriggerDescription(true);\n this.addViewportListeners();\n this.addDocumentEscapeListener();\n this.schedulePositionUpdate();\n\n if (!wasOpen) {\n this.opened.emit();\n }\n }\n\n private closeTooltip(): void {\n const wasOpen = this.isOpen;\n this.isOpen = false;\n this.syncTriggerDescription(false);\n this.removeViewportListeners();\n this.removeDocumentEscapeListener();\n\n if (this.animationFrameId != null) {\n this.windowRef?.cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n\n if (this.bubbleElement) {\n this.renderer.setAttribute(this.bubbleElement, 'aria-hidden', 'true');\n }\n\n this.destroyBubble();\n\n if (wasOpen) {\n this.closed.emit();\n }\n }\n\n private schedulePositionUpdate(): void {\n const windowRef = this.windowRef;\n if (!windowRef) {\n return;\n }\n\n if (this.animationFrameId != null) {\n windowRef.cancelAnimationFrame(this.animationFrameId);\n }\n\n this.animationFrameId = windowRef.requestAnimationFrame(() => {\n this.animationFrameId = null;\n this.updatePosition();\n });\n }\n\n private updatePosition(): void {\n const windowRef = this.windowRef;\n const triggerContent = this.triggerContentRef?.nativeElement;\n const bubble = this.bubbleElement;\n const bubbleArrow = this.bubbleArrowElement;\n\n if (!windowRef || !triggerContent || !bubble || !bubbleArrow || !this.resolvedContent) {\n return;\n }\n\n const triggerRect = triggerContent.getBoundingClientRect();\n const viewportWidth = windowRef.innerWidth;\n const viewportHeight = windowRef.innerHeight;\n\n this.renderer.setStyle(bubble, 'max-width', `${this.resolvedMaxWidth}px`);\n this.renderer.removeClass(bubble, 'tbk-tooltip__portal--visible');\n this.renderer.setStyle(bubble, 'top', '0px');\n this.renderer.setStyle(bubble, 'left', '0px');\n\n const bubbleRect = bubble.getBoundingClientRect();\n const { placement, top, left } = computeTooltipPosition({\n preferred: this.placement,\n trigger: triggerRect,\n bubble: bubbleRect,\n viewportWidth,\n viewportHeight,\n });\n\n const arrowOffset = Math.min(\n Math.max(triggerRect.left + triggerRect.width / 2 - left, ARROW_EDGE_INSET_PX),\n bubbleRect.width - ARROW_EDGE_INSET_PX,\n );\n\n if (placement === 'bottom') {\n this.renderer.addClass(bubble, 'tbk-tooltip__portal--bottom');\n } else {\n this.renderer.removeClass(bubble, 'tbk-tooltip__portal--bottom');\n }\n\n this.renderer.setStyle(bubble, 'top', `${Math.round(top)}px`);\n this.renderer.setStyle(bubble, 'left', `${Math.round(left)}px`);\n this.renderer.setStyle(bubbleArrow, 'left', `${Math.round(arrowOffset)}px`);\n this.renderer.setAttribute(bubble, 'aria-hidden', 'false');\n this.renderer.addClass(bubble, 'tbk-tooltip__portal--visible');\n }\n\n private addViewportListeners(): void {\n const windowRef = this.windowRef;\n if (!windowRef) {\n return;\n }\n\n windowRef.addEventListener('resize', this.viewportChangeHandler, { passive: true });\n this.documentRef.addEventListener('scroll', this.viewportChangeHandler, {\n capture: true,\n passive: true,\n });\n }\n\n private removeViewportListeners(): void {\n this.windowRef?.removeEventListener('resize', this.viewportChangeHandler);\n this.documentRef.removeEventListener('scroll', this.viewportChangeHandler, true);\n }\n\n private addDocumentEscapeListener(): void {\n this.documentRef.addEventListener('keydown', this.documentEscapeHandler);\n }\n\n private removeDocumentEscapeListener(): void {\n this.documentRef.removeEventListener('keydown', this.documentEscapeHandler);\n }\n\n private ensureBubble(): void {\n if (this.bubbleElement) {\n return;\n }\n\n const bubble = this.renderer.createElement('span') as HTMLSpanElement;\n const text = this.renderer.createElement('span') as HTMLSpanElement;\n const arrow = this.renderer.createElement('span') as HTMLSpanElement;\n\n this.renderer.addClass(bubble, 'tbk-tooltip__portal');\n this.renderer.addClass(text, 'tbk-tooltip__portal-text');\n this.renderer.addClass(arrow, 'tbk-tooltip__portal-arrow');\n this.renderer.setAttribute(bubble, 'id', this.bubbleId);\n this.renderer.setAttribute(bubble, 'role', 'tooltip');\n this.renderer.setAttribute(bubble, 'aria-hidden', 'true');\n\n this.renderer.appendChild(bubble, text);\n this.renderer.appendChild(bubble, arrow);\n this.renderer.appendChild(this.documentRef.body, bubble);\n\n this.bubbleElement = bubble;\n this.bubbleTextElement = text;\n this.bubbleArrowElement = arrow;\n }\n\n private destroyBubble(): void {\n if (!this.bubbleElement) {\n return;\n }\n\n this.renderer.removeChild(this.documentRef.body, this.bubbleElement);\n this.bubbleElement = undefined;\n this.bubbleTextElement = undefined;\n this.bubbleArrowElement = undefined;\n }\n\n private syncBubbleContent(): void {\n if (!this.bubbleTextElement) {\n return;\n }\n\n this.renderer.setProperty(this.bubbleTextElement, 'textContent', this.resolvedContent);\n }\n\n private syncTriggerDescription(shouldDescribe: boolean): void {\n const nextDescribedElement = shouldDescribe ? this.resolveDescribedElement() : this.describedElement;\n\n if (!nextDescribedElement) {\n return;\n }\n\n const currentValue = `${nextDescribedElement.getAttribute('aria-describedby') ?? ''}`.trim();\n const ids = currentValue ? currentValue.split(/\\s+/).filter(Boolean) : [];\n const hasTooltipId = ids.includes(this.bubbleId);\n\n if (shouldDescribe) {\n if (!hasTooltipId) {\n ids.push(this.bubbleId);\n this.renderer.setAttribute(nextDescribedElement, 'aria-describedby', ids.join(' '));\n }\n this.describedElement = nextDescribedElement;\n return;\n }\n\n if (hasTooltipId) {\n const nextIds = ids.filter((id) => id !== this.bubbleId);\n if (nextIds.length) {\n this.renderer.setAttribute(nextDescribedElement, 'aria-describedby', nextIds.join(' '));\n } else {\n this.renderer.removeAttribute(nextDescribedElement, 'aria-describedby');\n }\n }\n\n this.describedElement = undefined;\n }\n\n private resolveDescribedElement(): HTMLElement | undefined {\n const triggerRoot = this.triggerContentRef?.nativeElement;\n if (!triggerRoot) {\n return undefined;\n }\n\n const focusableChild = triggerRoot.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n if (focusableChild) {\n return focusableChild;\n }\n\n return triggerRoot.firstElementChild instanceof HTMLElement\n ? triggerRoot.firstElementChild\n : triggerRoot;\n }\n\n /**\n * Garante alcançabilidade por teclado: quando o conteúdo projetado não tem\n * filho focável, aplica `tabindex=\"0\"` no wrapper do trigger.\n */\n private applyFallbackTabindex(): void {\n const triggerRoot = this.triggerContentRef?.nativeElement;\n if (!triggerRoot) {\n return;\n }\n\n const hasFocusable = !!triggerRoot.querySelector(FOCUSABLE_SELECTOR);\n\n if (!hasFocusable && !this.fallbackTabindexApplied) {\n this.renderer.setAttribute(triggerRoot, 'tabindex', '0');\n this.fallbackTabindexApplied = true;\n return;\n }\n\n if (hasFocusable && this.fallbackTabindexApplied) {\n this.renderer.removeAttribute(triggerRoot, 'tabindex');\n this.fallbackTabindexApplied = false;\n }\n }\n\n private get windowRef(): Window | null {\n return this.documentRef.defaultView;\n }\n}\n\ninterface TooltipPositionInput {\n preferred: TooltipPlacement;\n trigger: DOMRect;\n bubble: DOMRect;\n viewportWidth: number;\n viewportHeight: number;\n}\n\ninterface TooltipPositionOutput {\n placement: ResolvedTooltipPlacement;\n top: number;\n left: number;\n}\n\n/**\n * Função pura de posicionamento — extraída para isolar do ciclo do Angular\n * e facilitar teste unitário sem DOM real.\n */\nexport function computeTooltipPosition(input: TooltipPositionInput): TooltipPositionOutput {\n const { preferred, trigger, bubble, viewportWidth, viewportHeight } = input;\n\n const topPlacementY = trigger.top - bubble.height - TRIGGER_GAP_PX;\n const bottomPlacementY = trigger.bottom + TRIGGER_GAP_PX;\n\n let placement: ResolvedTooltipPlacement;\n if (preferred === 'top') {\n placement = 'top';\n } else if (preferred === 'bottom') {\n placement = 'bottom';\n } else {\n placement = topPlacementY < VIEWPORT_PADDING_PX ? 'bottom' : 'top';\n }\n\n let top = placement === 'top' ? topPlacementY : bottomPlacementY;\n\n if (top + bubble.height > viewportHeight - VIEWPORT_PADDING_PX) {\n top = Math.max(VIEWPORT_PADDING_PX, viewportHeight - bubble.height - VIEWPORT_PADDING_PX);\n }\n if (top < VIEWPORT_PADDING_PX) {\n top = VIEWPORT_PADDING_PX;\n }\n\n let left = trigger.left + trigger.width / 2 - bubble.width / 2;\n left = Math.min(\n Math.max(left, VIEWPORT_PADDING_PX),\n viewportWidth - bubble.width - VIEWPORT_PADDING_PX,\n );\n\n return { placement, top, left };\n}\n","<span class=\"tbk-tooltip\" [class.tbk-tooltip--full-width]=\"fullWidth\">\n <span\n #triggerContent\n class=\"tbk-tooltip__trigger\"\n [class.tbk-tooltip__trigger--full-width]=\"fullWidth\"\n >\n <ng-content></ng-content>\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CheckboxComponent } from '../Checkbox/checkbox.component';\nimport { IconColor, IconName, IconToken, IconsComponent } from '../Icons/icons.component';\nimport { PaginationComponent } from '../Pagination/pagination.component';\nimport { TextComponent, TextColor, TextWeight } from '../Text/text.component';\nimport { TooltipComponent } from '../Tooltip/tooltip.component';\n\nexport type DataTableColumnAlign = 'left' | 'center' | 'right';\nexport type DataTableSortDirection = 'asc' | 'desc';\nexport type DataTableSelectionKey = string | number;\nexport type DataTableStatus = 'default' | 'error' | 'success';\n\nexport interface DataTableSelectionChange<T extends Record<string, unknown> = Record<string, unknown>> {\n selectedKeys: DataTableSelectionKey[];\n selectedRows: T[];\n}\n\nexport interface DataTableSortChange<T extends Record<string, unknown> = Record<string, unknown>> {\n column: DataTableColumn<T>;\n columnId: string;\n direction: DataTableSortDirection | null;\n}\n\nexport type DataTableRowActionResolver<T extends Record<string, unknown> = Record<string, unknown>> =\n (row: T, rowIndex: number) => {\n icon?: IconName;\n ariaLabel?: string;\n tooltip?: string;\n disabled?: boolean;\n };\n\nexport type DataTableCellTooltipResolver<T extends Record<string, unknown> = Record<string, unknown>> =\n | string\n | ((context: {\n row: T;\n column: DataTableColumn<T>;\n value: unknown;\n text: string;\n }) => string);\n\nexport type DataTableRowAriaLabelResolver<T extends Record<string, unknown> = Record<string, unknown>> =\n (context: { row: T; rowIndex: number; key: DataTableSelectionKey }) => string;\n\nexport interface DataTableColumn<T extends Record<string, unknown> = Record<string, unknown>> {\n id: string;\n header: string;\n field: string;\n align?: DataTableColumnAlign;\n width?: string;\n minWidth?: string;\n grow?: number;\n headerTooltip?: string;\n cellTooltip?: DataTableCellTooltipResolver<T>;\n emptyLabel?: string;\n emptyIcon?: IconToken;\n emptyColor?: IconColor;\n cellColor?: TextColor | ((context: { row: T; value: unknown }) => TextColor);\n cellWeight?: TextWeight | ((context: { row: T; value: unknown }) => TextWeight);\n cellIcon?: IconToken | ((context: { row: T; value: unknown }) => IconToken | null | undefined);\n}\n\n@Component({\n selector: 'tbk-data-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TextComponent,\n IconsComponent,\n TooltipComponent,\n PaginationComponent,\n CheckboxComponent,\n ],\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent<T extends Record<string, unknown> = Record<string, unknown>>\n implements AfterViewInit, OnChanges, OnDestroy\n{\n readonly actionsColumnWidth = '56px';\n readonly actionsColumnWidthPx = 56;\n readonly selectionColumnWidth = '48px';\n readonly selectionColumnWidthPx = 48;\n readonly accordionExpandColumnWidth = '56px';\n readonly accordionExpandColumnWidthPx = 56;\n readonly defaultColumnMinWidth = '88px';\n readonly headerCellHorizontalPaddingPx = 52;\n readonly centeredHeaderCellHorizontalPaddingPx = 72;\n readonly bodyCellHorizontalPaddingPx = 32;\n private readonly defaultColumnMinWidthPx = 88;\n private readonly defaultColumnWidth = this.defaultColumnMinWidth;\n private resizeObserver?: ResizeObserver;\n private syncFrameId: number | null = null;\n private selectedRowKeysState: DataTableSelectionKey[] = [];\n\n @Input() caption = 'Tabela de dados';\n @Input() columns: DataTableColumn<T>[] = [];\n @Input() rows: ReadonlyArray<T> = [];\n @Input() rowKeyField: string | null = null;\n @Input() rowAriaLabel: DataTableRowAriaLabelResolver<T> | null = null;\n @Input() striped = false;\n @Input() selectable = false;\n @Input() selectedKeys: readonly DataTableSelectionKey[] | null = null;\n @Input() fixedLastColumn = false;\n @Input() fixedPenultimateColumn = false;\n @Input() showPagination = true;\n @Input() showRowActions = true;\n @Input() totalRecords: number | null = null;\n @Input() totalPages: number | null = null;\n @Input() page = 1;\n @Input() pageSize = 25;\n @Input() pageSizeOptions: number[] = [10, 25, 50, 100];\n @Input() visiblePages = 3;\n @Input() loading = false;\n @Input() skeletonRows = 8;\n @Input() disabled = false;\n @Input() status: DataTableStatus = 'default';\n @Input() emptyMessage = 'Nenhum dado encontrado';\n @Input() errorMessage = 'Não foi possível carregar os dados';\n @Input() successMessage = '';\n @Input() selectedColumnId: string | null = null;\n @Input() selectedColumnSortDirection: DataTableSortDirection = 'asc';\n @Input() accordion = false;\n @Input() rowActionIcon: IconName = 'ellipsisSolid';\n @Input() rowActionAriaLabel = 'Abrir menu da linha';\n @Input() rowActionResolver: DataTableRowActionResolver<T> | null = null;\n\n @Input() accordionTemplate: TemplateRef<{ row: T; rowIndex: number }> | null = null;\n\n @ViewChild('container', { static: true }) private readonly containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('table', { static: true }) private readonly tableRef?: ElementRef<HTMLTableElement>;\n\n @Output() headerClick = new EventEmitter<DataTableColumn<T>>();\n @Output() rowClick = new EventEmitter<T>();\n @Output() menuClick = new EventEmitter<T>();\n @Output() pageChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n @Output() selectionChange = new EventEmitter<DataTableSelectionChange<T>>();\n @Output() selectedKeysChange = new EventEmitter<DataTableSelectionKey[]>();\n @Output() sortChange = new EventEmitter<DataTableSortChange<T>>();\n\n hasHorizontalOverflow = false;\n lastColumnWidth = this.defaultColumnWidth;\n tablePixelWidth: number | null = null;\n columnWidths: string[] = [];\n private expandedRowKeys = new Set<DataTableSelectionKey>();\n\n constructor(\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly ngZone: NgZone,\n ) {}\n\n get gridTemplateColumns(): string {\n const hasTrailingColumn = this.hasRowActions || this.accordion;\n\n const dataColumns =\n this.columnWidths.length > 0\n ? this.columnWidths.map((w, i) => {\n const isLast = i === this.columnWidths.length - 1;\n // When there is no trailing column (menu or accordion), stretch the last\n // data column so it fills remaining space instead of leaving an empty gap.\n return isLast && !hasTrailingColumn ? `minmax(${w}, 1fr)` : w;\n })\n : this.columns.map(\n (column) =>\n `minmax(${this.resolveColumnMinWidth(column)}, ${this.resolveColumnGrowWeight(column)}fr)`,\n );\n\n return [\n ...(this.selectable ? [this.selectionColumnWidth] : []),\n ...dataColumns,\n ...(this.accordion ? [this.accordionExpandColumnWidth] : []),\n ...(this.hasRowActions ? [this.actionsColumnWidth] : []),\n ].join(' ');\n }\n\n get tableMinWidth(): string {\n return this.tablePixelWidth != null ? `${this.tablePixelWidth}px` : '100%';\n }\n\n // Right offset for the sticky expand (accordion) column.\n // When a menu column is also present it sits to the right of the expand column.\n get stickyExpandRight(): string {\n return this.hasRowActions ? this.actionsColumnWidth : '0';\n }\n\n // Right offset for the sticky last DATA column.\n // = total width of every trailing fixed column (expand + menu).\n get stickyLastRight(): string {\n const expandWidth = this.accordion ? this.accordionExpandColumnWidthPx : 0;\n const menuWidth = this.hasRowActions ? this.actionsColumnWidthPx : 0;\n return `${expandWidth + menuWidth}px`;\n }\n\n get penultimateColumnRight(): string {\n return `calc(${this.stickyLastRight} + ${this.lastColumnWidth})`;\n }\n\n get lastColumnGridSpan(): string {\n // Both accordion and menu columns now have their own <th>, so the last\n // data column always occupies exactly one grid column.\n return 'auto';\n }\n\n get resolvedTotalRecords(): number {\n return Math.max(0, this.totalRecords ?? this.rows.length);\n }\n\n get resolvedPageSize(): number {\n return Number.isFinite(this.pageSize) && this.pageSize > 0 ? this.pageSize : 25;\n }\n\n get resolvedTotalPages(): number {\n if (this.totalPages != null && Number.isFinite(this.totalPages) && this.totalPages > 0) {\n return Math.max(1, Math.trunc(this.totalPages));\n }\n\n return Math.max(1, Math.ceil(this.resolvedTotalRecords / this.resolvedPageSize) || 1);\n }\n\n get resolvedPage(): number {\n return Math.min(Math.max(1, this.page), this.resolvedTotalPages);\n }\n\n get resolvedSkeletonRows(): number[] {\n const count =\n Number.isFinite(this.skeletonRows) && this.skeletonRows > 0\n ? Math.max(1, Math.trunc(this.skeletonRows))\n : 8;\n\n return Array.from({ length: count }, (_value, index) => index);\n }\n\n get selectionColspan(): number {\n return (\n this.columns.length\n + (this.selectable ? 1 : 0)\n + (this.accordion ? 1 : 0)\n + (this.hasRowActions ? 1 : 0)\n );\n }\n\n get hasRowActions(): boolean {\n return this.showRowActions;\n }\n\n get isInteractionDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n get isRowInteractive(): boolean {\n return !this.isInteractionDisabled && (this.rowClick.observed || this.accordion);\n }\n\n get resolvedStatusMessage(): string {\n if (this.status === 'error') {\n return this.errorMessage.trim();\n }\n\n if (this.status === 'success') {\n return this.successMessage.trim();\n }\n\n return '';\n }\n\n get hasStatusMessage(): boolean {\n return Boolean(this.resolvedStatusMessage);\n }\n\n get areAllVisibleRowsSelected(): boolean {\n return this.visibleSelectionKeys.length > 0\n && this.visibleSelectionKeys.every((key) => this.hasSelectedRowKey(key));\n }\n\n get hasPartialSelection(): boolean {\n if (!this.visibleSelectionKeys.length) {\n return false;\n }\n\n const selectedVisibleCount = this.visibleSelectionKeys.filter((key) => this.hasSelectedRowKey(key)).length;\n\n return selectedVisibleCount > 0 && selectedVisibleCount < this.visibleSelectionKeys.length;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['accordion'] || changes['accordionTemplate']) {\n this.scheduleLayoutSync();\n }\n\n if (changes['selectedKeys'] && this.selectedKeys) {\n this.selectedRowKeysState = this.normalizeSelectionKeys(this.selectedKeys);\n }\n\n if (changes['rows'] || changes['rowKeyField'] || changes['selectable']) {\n this.syncSelectionState(Boolean(changes['rows']) && !this.rowKeyField);\n }\n\n // When the set of fixed columns changes (showRowActions, selectable, accordion),\n // immediately invalidate the cached layout so the stale pixel widths (which\n // included the now-removed column's space) are cleared before the next render.\n // The scheduled layout sync below will recompute correct values after the DOM\n // has been updated.\n if (changes['showRowActions'] || changes['selectable'] || changes['accordion']) {\n this.columnWidths = [];\n this.tablePixelWidth = null;\n }\n\n this.scheduleLayoutSync();\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.scheduleLayoutSync());\n this.observeLayoutTargets();\n }\n\n this.scheduleLayoutSync();\n });\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n\n if (this.syncFrameId != null) {\n cancelAnimationFrame(this.syncFrameId);\n }\n }\n\n trackByRow = (_index: number, row: T): string | number => {\n if (this.rowKeyField && row[this.rowKeyField] != null) {\n return String(row[this.rowKeyField]);\n }\n return _index;\n };\n\n onRowClick(row: T, rowIndex: number): void {\n if (this.isInteractionDisabled) {\n return;\n }\n\n if (this.accordion) {\n this.toggleAccordionInternal(row, rowIndex);\n }\n\n this.rowClick.emit(row);\n }\n\n onRowKeydown(row: T, rowIndex: number, event: Event): void {\n if (!this.isRowInteractive) {\n return;\n }\n\n event.preventDefault();\n this.onRowClick(row, rowIndex);\n }\n\n onHeaderClick(column: DataTableColumn<T>): void {\n if (this.isInteractionDisabled) {\n return;\n }\n\n if (this.selectedColumnId !== column.id) {\n this.selectedColumnId = column.id;\n this.selectedColumnSortDirection = 'asc';\n } else if (this.selectedColumnSortDirection === 'asc') {\n this.selectedColumnSortDirection = 'desc';\n } else {\n this.selectedColumnId = null;\n this.selectedColumnSortDirection = 'asc';\n }\n\n this.headerClick.emit(column);\n this.sortChange.emit({\n column,\n columnId: column.id,\n direction: this.selectedColumnId === column.id ? this.selectedColumnSortDirection : null,\n });\n }\n\n onMenuClick(row: T, event: MouseEvent): void {\n event.stopPropagation();\n\n if (this.isInteractionDisabled) {\n return;\n }\n\n this.menuClick.emit(row);\n }\n\n onPageChange(nextPage: number): void {\n if (this.isInteractionDisabled) {\n return;\n }\n\n this.page = nextPage;\n this.pageChange.emit(nextPage);\n }\n\n onPageSizeChange(nextPageSize: number): void {\n if (this.isInteractionDisabled) {\n return;\n }\n\n this.pageSize = nextPageSize;\n this.pageSizeChange.emit(nextPageSize);\n }\n\n onHeaderSelectionChange(checked: boolean): void {\n if (!this.selectable || this.isInteractionDisabled) {\n return;\n }\n\n this.selectedRowKeysState = checked ? [...this.visibleSelectionKeys] : [];\n\n this.emitSelectionChange();\n }\n\n onRowSelectionChange(\n row: T,\n rowIndex: number,\n checked: boolean,\n ): void {\n if (!this.selectable || this.isInteractionDisabled) {\n return;\n }\n\n const rowKey = this.resolveSelectionKey(row, rowIndex);\n\n this.selectedRowKeysState = checked\n ? Array.from(new Set([...this.selectedRowKeysState, rowKey]))\n : this.selectedRowKeysState.filter((selectedKey) => selectedKey !== rowKey);\n\n this.emitSelectionChange();\n }\n\n resolveAlign(column: DataTableColumn<T>): DataTableColumnAlign {\n return column.align ?? 'left';\n }\n\n resolveTextAlign(column: DataTableColumn<T>): 'left' | 'center' | 'right' {\n return this.resolveAlign(column);\n }\n\n isColumnSelected(column: DataTableColumn<T>): boolean {\n return this.selectedColumnId === column.id;\n }\n\n resolveHeaderTextColor(column: DataTableColumn<T>): 'Primary' | 'Secondary' {\n return this.isColumnSelected(column) ? 'Primary' : 'Secondary';\n }\n\n resolveHeaderAriaSort(column: DataTableColumn<T>): 'ascending' | 'descending' | 'none' {\n if (!this.isColumnSelected(column)) {\n return 'none';\n }\n\n return this.selectedColumnSortDirection === 'desc' ? 'descending' : 'ascending';\n }\n\n resolveHeaderAriaLabel(column: DataTableColumn<T>): string {\n if (!this.isColumnSelected(column)) {\n return `Ordenar por ${column.header}`;\n }\n\n return this.selectedColumnSortDirection === 'asc'\n ? `Ordenar ${column.header} em ordem decrescente`\n : `Remover ordenação de ${column.header}`;\n }\n\n resolveSkeletonWidth(columnIndex: number): string {\n const widths = ['74%', '58%', '66%', '32%', '44%', '72%', '62%'];\n return widths[columnIndex % widths.length];\n }\n\n resolveHeaderSkeletonWidth(columnIndex: number): string {\n const widths = ['48%', '54%', '52%', '28%', '42%', '58%', '46%'];\n return widths[columnIndex % widths.length];\n }\n\n resolveRowTabIndex(): number | null {\n return this.isRowInteractive ? 0 : null;\n }\n\n isRowSelected(row: T, rowIndex: number): boolean {\n const rowKey = this.resolveSelectionKey(row, rowIndex);\n return this.hasSelectedRowKey(rowKey);\n }\n\n resolveRowActionIconValue(row: T, rowIndex: number): IconName {\n return this.rowActionResolver?.(row, rowIndex)?.icon ?? this.rowActionIcon;\n }\n\n resolveRowActionAriaLabelValue(row: T, rowIndex: number): string {\n return this.rowActionResolver?.(row, rowIndex)?.ariaLabel ?? this.rowActionAriaLabel;\n }\n\n resolveRowActionTooltipValue(row: T, rowIndex: number): string {\n return this.rowActionResolver?.(row, rowIndex)?.tooltip ?? this.rowActionAriaLabel;\n }\n\n resolveRowActionIsDisabled(row: T, rowIndex: number): boolean {\n return this.rowActionResolver?.(row, rowIndex)?.disabled ?? false;\n }\n\n resolveMenuSkeletonSize(rowIndex: number): string {\n return rowIndex % 2 === 0 ? '20px' : '16px';\n }\n\n resolveHeaderHorizontalPadding(column: DataTableColumn<T>): number {\n return this.resolveAlign(column) === 'center'\n ? this.centeredHeaderCellHorizontalPaddingPx\n : this.headerCellHorizontalPaddingPx;\n }\n\n resolveCellValue(row: T, column: DataTableColumn<T>): unknown {\n return row[column.field];\n }\n\n resolveCellColor(row: T, column: DataTableColumn<T>): TextColor {\n if (!column.cellColor) {\n return 'Primary';\n }\n if (typeof column.cellColor === 'function') {\n return column.cellColor({ row, value: this.resolveCellValue(row, column) });\n }\n return column.cellColor;\n }\n\n resolveCellWeight(row: T, column: DataTableColumn<T>): TextWeight {\n if (!column.cellWeight) return 'font-weight-regular';\n if (typeof column.cellWeight === 'function') {\n return column.cellWeight({ row, value: this.resolveCellValue(row, column) });\n }\n return column.cellWeight;\n }\n\n resolveCellIcon(row: T, column: DataTableColumn<T>): IconToken | null | undefined {\n if (!column.cellIcon) return null;\n if (typeof column.cellIcon === 'function') {\n return column.cellIcon({ row, value: this.resolveCellValue(row, column) });\n }\n return column.cellIcon;\n }\n\n resolveCellIconColor(row: T, column: DataTableColumn<T>): IconColor {\n return this.resolveCellColor(row, column).toLowerCase() as IconColor;\n }\n\n resolveCellText(row: T, column: DataTableColumn<T>): string {\n const value = this.resolveCellValue(row, column);\n return value == null ? '' : String(value);\n }\n\n resolveHeaderTooltip(column: DataTableColumn<T>): string {\n return column.headerTooltip?.trim() || column.header;\n }\n\n resolveCellTooltip(row: T, column: DataTableColumn<T>): string {\n const text = this.resolveCellText(row, column);\n\n if (!column.cellTooltip) {\n return text;\n }\n\n if (typeof column.cellTooltip === 'function') {\n const resolvedTooltip = column.cellTooltip({\n row,\n column,\n value: this.resolveCellValue(row, column),\n text,\n });\n\n return resolvedTooltip?.trim() || text;\n }\n\n return column.cellTooltip.trim() || text;\n }\n\n resolveColumnMinWidth(column: DataTableColumn<T>): string {\n return column.minWidth?.trim() || column.width?.trim() || this.defaultColumnMinWidth;\n }\n\n isLastDataColumn(columnIndex: number): boolean {\n return columnIndex === this.columns.length - 1;\n }\n\n isPenultimateDataColumn(columnIndex: number): boolean {\n return columnIndex === this.columns.length - 2;\n }\n\n resolveRowAriaLabel(row: T, rowIndex: number): string | null {\n if (!this.isRowInteractive) {\n return null;\n }\n\n const key = this.resolveSelectionKey(row, rowIndex);\n return this.rowAriaLabel?.({ row, rowIndex, key }) ?? `Abrir linha ${key}`;\n }\n\n resolveRowSelectionLabel(row: T, rowIndex: number): string {\n const rowKey = this.resolveSelectionKey(row, rowIndex);\n return `Selecionar linha ${rowKey}`;\n }\n\n isRowExpanded(row: T, rowIndex: number): boolean {\n return this.expandedRowKeys.has(this.resolveSelectionKey(row, rowIndex));\n }\n\n toggleAccordion(row: T, rowIndex: number, event: MouseEvent): void {\n event.stopPropagation();\n if (this.isInteractionDisabled) return;\n this.toggleAccordionInternal(row, rowIndex);\n }\n\n private toggleAccordionInternal(row: T, rowIndex: number): void {\n const key = this.resolveSelectionKey(row, rowIndex);\n if (this.expandedRowKeys.has(key)) {\n this.expandedRowKeys.delete(key);\n } else {\n this.expandedRowKeys.add(key);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private get visibleSelectionKeys(): DataTableSelectionKey[] {\n return this.rows.map((row, rowIndex) => this.resolveSelectionKey(row, rowIndex));\n }\n\n private resolveColumnGrowWeight(column: DataTableColumn<T>): number {\n if (typeof column.grow === 'number' && column.grow > 0) {\n return column.grow;\n }\n\n const preferredWidth = this.parseCssLengthToPixels(column.width);\n\n if (preferredWidth) {\n return Math.max(preferredWidth / this.defaultColumnMinWidthPx, 0.75);\n }\n\n return 1;\n }\n\n private parseCssLengthToPixels(value?: string): number | null {\n if (!value) {\n return null;\n }\n\n const match = value.trim().toLowerCase().match(/^([0-9]*\\.?[0-9]+)(px|rem|em)?$/);\n\n if (!match) {\n return null;\n }\n\n const numericValue = Number.parseFloat(match[1]);\n\n if (Number.isNaN(numericValue)) {\n return null;\n }\n\n const unit = match[2] ?? 'px';\n\n if (unit === 'rem' || unit === 'em') {\n return numericValue * 16;\n }\n\n return numericValue;\n }\n\n private observeLayoutTargets(): void {\n const container = this.containerRef?.nativeElement;\n\n if (!this.resizeObserver || !container) {\n return;\n }\n\n this.resizeObserver.observe(container);\n }\n\n private scheduleLayoutSync(): void {\n if (this.syncFrameId != null) {\n cancelAnimationFrame(this.syncFrameId);\n }\n\n this.syncFrameId = requestAnimationFrame(() => {\n this.syncFrameId = null;\n this.syncLayoutState();\n });\n }\n\n private syncLayoutState(): void {\n const container = this.containerRef?.nativeElement;\n const table = this.tableRef?.nativeElement;\n\n if (!container || !table) {\n return;\n }\n\n const fixedColumnsWidth =\n (this.hasRowActions ? this.actionsColumnWidthPx : 0) +\n (this.selectable ? this.selectionColumnWidthPx : 0) +\n (this.accordion ? this.accordionExpandColumnWidthPx : 0);\n\n const configuredMinColumnWidths = this.columns.map(\n (column) =>\n this.parseCssLengthToPixels(this.resolveColumnMinWidth(column)) ??\n this.defaultColumnMinWidthPx,\n );\n const headerMinimumWidths = this.measureHeaderMinimumWidths(table);\n const minColumnWidths = configuredMinColumnWidths.map((columnWidth, columnIndex) =>\n Math.max(columnWidth, headerMinimumWidths[columnIndex] ?? 0),\n );\n const idealColumnWidths = this.measureIdealColumnWidths(table, minColumnWidths);\n const totalMinimumWidth = minColumnWidths.reduce(\n (totalWidth, columnWidth) => totalWidth + columnWidth,\n fixedColumnsWidth,\n );\n const totalIdealWidth = idealColumnWidths.reduce(\n (totalWidth, columnWidth) => totalWidth + columnWidth,\n fixedColumnsWidth,\n );\n const availableDataWidth = Math.max(container.clientWidth - fixedColumnsWidth, 0);\n const nextOverflowState = totalMinimumWidth - container.clientWidth > 1;\n const nextResponsiveColumnWidths = nextOverflowState\n ? idealColumnWidths\n : this.distributeResponsiveColumnWidths(\n idealColumnWidths,\n minColumnWidths,\n availableDataWidth,\n );\n const nextColumnWidths = nextResponsiveColumnWidths.map((columnWidth) => `${columnWidth}px`);\n const nextTablePixelWidth = nextOverflowState ? totalIdealWidth : null;\n const nextLastColumnWidth = nextColumnWidths.at(-1) ?? this.measureLastColumnWidth(table);\n const shouldScheduleFollowUp = nextOverflowState !== this.hasHorizontalOverflow;\n\n if (\n nextOverflowState === this.hasHorizontalOverflow &&\n nextLastColumnWidth === this.lastColumnWidth &&\n nextTablePixelWidth === this.tablePixelWidth &&\n this.areColumnWidthsEqual(nextColumnWidths, this.columnWidths)\n ) {\n return;\n }\n\n this.ngZone.run(() => {\n this.hasHorizontalOverflow = nextOverflowState;\n this.lastColumnWidth = nextLastColumnWidth;\n this.tablePixelWidth = nextTablePixelWidth;\n this.columnWidths = nextColumnWidths;\n this.changeDetectorRef.markForCheck();\n });\n\n if (shouldScheduleFollowUp) {\n this.scheduleLayoutSync();\n }\n }\n\n private measureLastColumnWidth(table: HTMLTableElement): string {\n const headerCells = table.querySelectorAll<HTMLTableCellElement>(\n '.tbk-data-table__head-cell:not(.tbk-data-table__head-cell--menu)',\n );\n const lastCell = headerCells.item(headerCells.length - 1);\n\n if (!lastCell) {\n return this.defaultColumnWidth;\n }\n\n return `${Math.ceil(lastCell.getBoundingClientRect().width)}px`;\n }\n\n private measureHeaderMinimumWidths(table: HTMLTableElement): number[] {\n const headerLabels = Array.from(\n table.querySelectorAll<HTMLElement>('.tbk-data-table__head-label'),\n );\n\n return this.columns.map((column, columnIndex) => {\n const headerLabel = headerLabels[columnIndex];\n\n if (!headerLabel) {\n return 0;\n }\n\n return Math.ceil(headerLabel.scrollWidth + this.resolveHeaderHorizontalPadding(column));\n });\n }\n\n private measureIdealColumnWidths(table: HTMLTableElement, minColumnWidths: number[]): number[] {\n const headerLabels = Array.from(\n table.querySelectorAll<HTMLElement>('.tbk-data-table__head-label'),\n );\n const bodyCellTexts = Array.from(\n table.querySelectorAll<HTMLElement>('.tbk-data-table__cell-text'),\n );\n\n return this.columns.map((column, columnIndex) => {\n const headerLabel = headerLabels[columnIndex];\n const preferredWidth = this.parseCssLengthToPixels(column.width) ?? 0;\n const headerWidth = headerLabel\n ? headerLabel.scrollWidth + this.resolveHeaderHorizontalPadding(column)\n : 0;\n\n let bodyWidth = 0;\n\n for (\n let bodyCellIndex = columnIndex;\n bodyCellIndex < bodyCellTexts.length;\n bodyCellIndex += this.columns.length\n ) {\n bodyWidth = Math.max(\n bodyWidth,\n bodyCellTexts[bodyCellIndex].scrollWidth + this.bodyCellHorizontalPaddingPx,\n );\n }\n\n return Math.max(\n minColumnWidths[columnIndex] ?? this.defaultColumnMinWidthPx,\n preferredWidth,\n Math.ceil(Math.max(headerWidth, bodyWidth, 0)),\n );\n });\n }\n\n private areColumnWidthsEqual(nextWidths: string[], currentWidths: string[]): boolean {\n if (nextWidths.length !== currentWidths.length) {\n return false;\n }\n\n return nextWidths.every((width, index) => width === currentWidths[index]);\n }\n\n private distributeResponsiveColumnWidths(\n idealColumnWidths: number[],\n minColumnWidths: number[],\n availableDataWidth: number,\n ): number[] {\n const totalIdealWidth = idealColumnWidths.reduce(\n (totalWidth, columnWidth) => totalWidth + columnWidth,\n 0,\n );\n const totalMinimumWidth = minColumnWidths.reduce(\n (totalWidth, columnWidth) => totalWidth + columnWidth,\n 0,\n );\n\n if (availableDataWidth >= totalIdealWidth) {\n return this.expandColumnWidths(idealColumnWidths, availableDataWidth - totalIdealWidth);\n }\n\n if (availableDataWidth <= totalMinimumWidth || totalIdealWidth <= totalMinimumWidth) {\n return minColumnWidths;\n }\n\n const shrinkRatio =\n (totalIdealWidth - availableDataWidth) / (totalIdealWidth - totalMinimumWidth);\n\n return idealColumnWidths.map((idealWidth, index) => {\n const minWidth = minColumnWidths[index] ?? this.defaultColumnMinWidthPx;\n const responsiveWidth = idealWidth - (idealWidth - minWidth) * shrinkRatio;\n\n return Number(responsiveWidth.toFixed(2));\n });\n }\n\n private expandColumnWidths(baseColumnWidths: number[], extraWidth: number): number[] {\n if (extraWidth <= 0) {\n return baseColumnWidths;\n }\n\n const weights = this.columns.map((column) => this.resolveColumnGrowWeight(column));\n let remainingExtraWidth = extraWidth;\n let remainingWeight = weights.reduce((totalWeight, weight) => totalWeight + weight, 0);\n\n return baseColumnWidths.map((columnWidth, columnIndex) => {\n if (columnIndex === baseColumnWidths.length - 1 || remainingWeight <= 0) {\n return Number((columnWidth + remainingExtraWidth).toFixed(2));\n }\n\n const weight = weights[columnIndex];\n const extraWidthForColumn = (remainingExtraWidth * weight) / remainingWeight;\n\n remainingExtraWidth -= extraWidthForColumn;\n remainingWeight -= weight;\n\n return Number((columnWidth + extraWidthForColumn).toFixed(2));\n });\n }\n\n private resolveSelectionKey(row: T, rowIndex: number): DataTableSelectionKey {\n if (this.rowKeyField) {\n const keyValue = row[this.rowKeyField];\n\n if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n return keyValue;\n }\n\n if (keyValue != null) {\n return String(keyValue);\n }\n }\n\n return rowIndex;\n }\n\n private hasSelectedRowKey(rowKey: DataTableSelectionKey): boolean {\n return this.selectedRowKeysState.includes(rowKey);\n }\n\n private syncSelectionState(resetWithoutRowKey = false): void {\n const requestedSelection = this.selectedKeys\n ? this.normalizeSelectionKeys(this.selectedKeys)\n : this.selectedRowKeysState;\n const nextSelectedRowKeys = !this.selectable\n ? []\n : resetWithoutRowKey\n ? []\n : requestedSelection.filter((selectedKey) =>\n this.visibleSelectionKeys.includes(selectedKey),\n );\n\n if (this.areSelectionKeysEqual(nextSelectedRowKeys, this.selectedRowKeysState)) {\n return;\n }\n\n this.selectedRowKeysState = nextSelectedRowKeys;\n }\n\n private emitSelectionChange(): void {\n const selectedKeySet = new Set(this.selectedRowKeysState);\n const selectedRows = this.rows.filter((row, rowIndex) =>\n selectedKeySet.has(this.resolveSelectionKey(row, rowIndex)),\n );\n\n this.selectionChange.emit({\n selectedKeys: [...this.selectedRowKeysState],\n selectedRows: [...selectedRows],\n });\n this.selectedKeysChange.emit([...this.selectedRowKeysState]);\n }\n\n private normalizeSelectionKeys(keys: readonly DataTableSelectionKey[]): DataTableSelectionKey[] {\n return Array.from(new Set(keys.filter((key) => typeof key === 'string' || typeof key === 'number')));\n }\n\n private areSelectionKeysEqual(\n nextKeys: DataTableSelectionKey[],\n currentKeys: DataTableSelectionKey[],\n ): boolean {\n if (nextKeys.length !== currentKeys.length) {\n return false;\n }\n\n return nextKeys.every((key, index) => key === currentKeys[index]);\n }\n}\n","<div\r\n #container\r\n class=\"tbk-data-table__container\"\r\n>\r\n <table\r\n #table\r\n class=\"tbk-data-table\"\r\n [class.tbk-data-table--striped]=\"striped\"\r\n [class.tbk-data-table--overflowing]=\"hasHorizontalOverflow\"\r\n [class.tbk-data-table--loading]=\"loading\"\r\n [class.tbk-data-table--disabled]=\"disabled\"\r\n [class.tbk-data-table--error]=\"status === 'error'\"\r\n [class.tbk-data-table--success]=\"status === 'success'\"\r\n [style.width.px]=\"tablePixelWidth\"\r\n [style.min-width]=\"tableMinWidth\"\r\n [attr.aria-busy]=\"loading\"\r\n >\r\n <caption class=\"tbk-data-table__caption\">{{ caption }}</caption>\r\n\r\n <thead class=\"tbk-data-table__head\">\r\n <ng-container *ngIf=\"loading; else dataTableHead\">\r\n <tr\r\n class=\"tbk-data-table__head-row tbk-data-table__head-row--skeleton\"\r\n [style.grid-template-columns]=\"gridTemplateColumns\"\r\n aria-hidden=\"true\"\r\n >\r\n <th\r\n *ngIf=\"selectable\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--selection\"\r\n scope=\"col\"\r\n >\r\n <div class=\"tbk-data-table__head-skeleton\">\r\n <span\r\n class=\"tbk-data-table__skeleton-dot tbk-data-table__skeleton-dot--control\"\r\n ></span>\r\n </div>\r\n </th>\r\n <th\r\n *ngFor=\"let column of columns; let columnIndex = index\"\r\n class=\"tbk-data-table__head-cell\"\r\n [class.tbk-data-table__head-cell--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__head-cell--align-right]=\"resolveAlign(column) === 'right'\"\r\n [class.tbk-data-table__head-cell--sticky-penultimate]=\"fixedPenultimateColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__head-cell--sticky-penultimate-with-last]=\"fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__head-cell--sticky-last]=\"fixedLastColumn && isLastDataColumn(columnIndex)\"\r\n [style.right]=\"fixedLastColumn && isLastDataColumn(columnIndex) ? stickyLastRight : (fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex) ? penultimateColumnRight : null)\"\r\n [style.grid-column]=\"isLastDataColumn(columnIndex) ? lastColumnGridSpan : null\"\r\n scope=\"col\"\r\n >\r\n <div class=\"tbk-data-table__head-skeleton\">\r\n <span\r\n class=\"tbk-data-table__skeleton-line tbk-data-table__skeleton-line--head\"\r\n [style.width]=\"resolveHeaderSkeletonWidth(columnIndex)\"\r\n ></span>\r\n </div>\r\n </th>\r\n <th\r\n *ngIf=\"accordion\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--expand\"\r\n [style.right]=\"stickyExpandRight\"\r\n scope=\"col\"\r\n aria-hidden=\"true\"\r\n ></th>\r\n <th\r\n *ngIf=\"hasRowActions\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--menu\"\r\n [class.tbk-data-table__head-cell--sticky-menu]=\"fixedLastColumn || fixedPenultimateColumn\"\r\n scope=\"col\"\r\n aria-hidden=\"true\"\r\n ></th>\r\n </tr>\r\n </ng-container>\r\n\r\n <ng-template #dataTableHead>\r\n <tr class=\"tbk-data-table__head-row\" [style.grid-template-columns]=\"gridTemplateColumns\">\r\n <th\r\n *ngIf=\"selectable\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--selection\"\r\n scope=\"col\"\r\n >\r\n <div\r\n class=\"tbk-data-table__selection-checkbox tbk-data-table__selection-checkbox--head\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <tbk-checkbox\r\n [ariaLabel]=\"'Selecionar todas as linhas'\"\r\n [checked]=\"areAllVisibleRowsSelected\"\r\n [indeterminate]=\"hasPartialSelection\"\r\n [disabled]=\"isInteractionDisabled || rows.length === 0\"\r\n (changed)=\"onHeaderSelectionChange($event.checked)\"\r\n ></tbk-checkbox>\r\n </div>\r\n </th>\r\n <th\r\n *ngFor=\"let column of columns; let columnIndex = index\"\r\n class=\"tbk-data-table__head-cell\"\r\n [class.tbk-data-table__head-cell--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__head-cell--align-right]=\"resolveAlign(column) === 'right'\"\r\n [class.tbk-data-table__head-cell--selected]=\"isColumnSelected(column)\"\r\n [class.tbk-data-table__head-cell--sticky-penultimate]=\"fixedPenultimateColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__head-cell--sticky-penultimate-with-last]=\"fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__head-cell--sticky-last]=\"fixedLastColumn && isLastDataColumn(columnIndex)\"\r\n [style.right]=\"fixedLastColumn && isLastDataColumn(columnIndex) ? stickyLastRight : (fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex) ? penultimateColumnRight : null)\"\r\n [style.grid-column]=\"isLastDataColumn(columnIndex) ? lastColumnGridSpan : null\"\r\n [attr.aria-sort]=\"resolveHeaderAriaSort(column)\"\r\n scope=\"col\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"tbk-data-table__head-button\"\r\n [class.tbk-data-table__head-button--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__head-button--align-right]=\"resolveAlign(column) === 'right'\"\r\n [class.tbk-data-table__head-button--selected]=\"isColumnSelected(column)\"\r\n [disabled]=\"isInteractionDisabled\"\r\n [attr.aria-label]=\"resolveHeaderAriaLabel(column)\"\r\n [attr.aria-pressed]=\"isColumnSelected(column)\"\r\n (click)=\"onHeaderClick(column)\"\r\n >\r\n <span\r\n class=\"tbk-data-table__head-button-content\"\r\n [class.tbk-data-table__head-button-content--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__head-button-content--selected]=\"isColumnSelected(column)\"\r\n >\r\n <tbk-tooltip\r\n class=\"tbk-data-table__text-tooltip tbk-data-table__text-tooltip--head\"\r\n [content]=\"resolveHeaderTooltip(column)\"\r\n >\r\n <tbk-text\r\n class=\"tbk-data-table__head-label\"\r\n [children]=\"column.header\"\r\n [as]=\"'span'\"\r\n [size]=\"'font-size-300'\"\r\n [color]=\"resolveHeaderTextColor(column)\"\r\n [weight]=\"'font-weight-bold'\"\r\n [align]=\"resolveTextAlign(column)\"\r\n [uppercase]=\"true\"\r\n [margin]=\"'0'\"\r\n ></tbk-text>\r\n </tbk-tooltip>\r\n\r\n <tbk-icons\r\n class=\"tbk-data-table__head-icon\"\r\n [class.tbk-data-table__head-icon--desc]=\"isColumnSelected(column) && selectedColumnSortDirection === 'desc'\"\r\n [name]=\"'arrowDownArrowUpRegularFull'\"\r\n [size]=\"14\"\r\n [color]=\"isColumnSelected(column) ? 'secondary' : 'gray'\"\r\n ></tbk-icons>\r\n </span>\r\n </button>\r\n </th>\r\n <th\r\n *ngIf=\"accordion\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--expand\"\r\n [style.right]=\"stickyExpandRight\"\r\n scope=\"col\"\r\n aria-hidden=\"true\"\r\n ></th>\r\n <th\r\n *ngIf=\"hasRowActions\"\r\n class=\"tbk-data-table__head-cell tbk-data-table__head-cell--menu\"\r\n [class.tbk-data-table__head-cell--sticky-menu]=\"fixedLastColumn || fixedPenultimateColumn\"\r\n scope=\"col\"\r\n aria-hidden=\"true\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n </thead>\r\n\r\n <tbody class=\"tbk-data-table__body\">\r\n <ng-container *ngIf=\"loading; else dataTableRows\">\r\n <tr\r\n *ngFor=\"let skeletonRow of resolvedSkeletonRows\"\r\n class=\"tbk-data-table__row tbk-data-table__row--skeleton\"\r\n [style.grid-template-columns]=\"gridTemplateColumns\"\r\n aria-hidden=\"true\"\r\n >\r\n <td\r\n *ngIf=\"selectable\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--selection\"\r\n >\r\n <span\r\n class=\"tbk-data-table__skeleton-dot tbk-data-table__skeleton-dot--control\"\r\n ></span>\r\n </td>\r\n <td\r\n *ngFor=\"let column of columns; let columnIndex = index\"\r\n class=\"tbk-data-table__cell\"\r\n [class.tbk-data-table__cell--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__cell--align-right]=\"resolveAlign(column) === 'right'\"\r\n [class.tbk-data-table__cell--sticky-penultimate]=\"fixedPenultimateColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__cell--sticky-penultimate-with-last]=\"fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__cell--sticky-last]=\"fixedLastColumn && isLastDataColumn(columnIndex)\"\r\n [style.right]=\"fixedLastColumn && isLastDataColumn(columnIndex) ? stickyLastRight : (fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex) ? penultimateColumnRight : null)\"\r\n >\r\n <span\r\n class=\"tbk-data-table__skeleton-line\"\r\n [style.width]=\"resolveSkeletonWidth(columnIndex)\"\r\n ></span>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"accordion\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--expand\"\r\n [style.right]=\"stickyExpandRight\"\r\n ></td>\r\n <td\r\n *ngIf=\"hasRowActions\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--menu\"\r\n [class.tbk-data-table__cell--sticky-menu]=\"fixedLastColumn || fixedPenultimateColumn\"\r\n >\r\n <span\r\n class=\"tbk-data-table__skeleton-dot\"\r\n [style.width]=\"resolveMenuSkeletonSize(skeletonRow)\"\r\n [style.height]=\"resolveMenuSkeletonSize(skeletonRow)\"\r\n ></span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n <ng-template #dataTableRows>\r\n <ng-container *ngFor=\"let row of rows; let rowIndex = index; trackBy: trackByRow\">\r\n <tr\r\n class=\"tbk-data-table__row\"\r\n [class.tbk-data-table__row--interactive]=\"isRowInteractive\"\r\n [class.tbk-data-table__row--selected]=\"isRowSelected(row, rowIndex)\"\r\n [style.grid-template-columns]=\"gridTemplateColumns\"\r\n [attr.tabindex]=\"resolveRowTabIndex()\"\r\n [attr.aria-label]=\"resolveRowAriaLabel(row, rowIndex)\"\r\n (click)=\"onRowClick(row, rowIndex)\"\r\n (keydown.enter)=\"onRowKeydown(row, rowIndex, $event)\"\r\n (keydown.space)=\"onRowKeydown(row, rowIndex, $event)\"\r\n >\r\n <td\r\n *ngIf=\"selectable\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--selection\"\r\n >\r\n <div\r\n class=\"tbk-data-table__selection-checkbox tbk-data-table__selection-checkbox--row\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <tbk-checkbox\r\n [ariaLabel]=\"resolveRowSelectionLabel(row, rowIndex)\"\r\n [checked]=\"isRowSelected(row, rowIndex)\"\r\n [disabled]=\"isInteractionDisabled\"\r\n (changed)=\"onRowSelectionChange(row, rowIndex, $event.checked)\"\r\n ></tbk-checkbox>\r\n </div>\r\n </td>\r\n <td\r\n *ngFor=\"let column of columns; let columnIndex = index\"\r\n class=\"tbk-data-table__cell\"\r\n [class.tbk-data-table__cell--align-center]=\"resolveAlign(column) === 'center'\"\r\n [class.tbk-data-table__cell--align-right]=\"resolveAlign(column) === 'right'\"\r\n [class.tbk-data-table__cell--sticky-penultimate]=\"fixedPenultimateColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__cell--sticky-penultimate-with-last]=\"fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex)\"\r\n [class.tbk-data-table__cell--sticky-last]=\"fixedLastColumn && isLastDataColumn(columnIndex)\"\r\n [style.right]=\"fixedLastColumn && isLastDataColumn(columnIndex) ? stickyLastRight : (fixedPenultimateColumn && fixedLastColumn && isPenultimateDataColumn(columnIndex) ? penultimateColumnRight : null)\"\r\n >\r\n <ng-container *ngIf=\"!resolveCellText(row, column) && column.emptyLabel; else defaultCellContent\">\r\n <tbk-tooltip\r\n class=\"tbk-data-table__text-tooltip\"\r\n [content]=\"column.emptyLabel\"\r\n >\r\n <span class=\"tbk-data-table__cell-empty-state\">\r\n <tbk-icons\r\n *ngIf=\"column.emptyIcon\"\r\n [name]=\"column.emptyIcon\"\r\n [color]=\"column.emptyColor || 'critical'\"\r\n [size]=\"14\"\r\n ></tbk-icons>\r\n <tbk-text\r\n class=\"tbk-data-table__cell-text\"\r\n [children]=\"column.emptyLabel\"\r\n [as]=\"'span'\"\r\n [size]=\"'font-size-350'\"\r\n [color]=\"'Critical'\"\r\n [weight]=\"'font-weight-medium'\"\r\n [align]=\"resolveTextAlign(column)\"\r\n [margin]=\"'0'\"\r\n ></tbk-text>\r\n </span>\r\n </tbk-tooltip>\r\n </ng-container>\r\n <ng-template #defaultCellContent>\r\n <tbk-tooltip\r\n class=\"tbk-data-table__text-tooltip\"\r\n [content]=\"resolveCellTooltip(row, column)\"\r\n >\r\n <span class=\"tbk-data-table__cell-default\">\r\n <tbk-icons\r\n *ngIf=\"resolveCellIcon(row, column) as cellIcon\"\r\n [name]=\"cellIcon\"\r\n [color]=\"resolveCellIconColor(row, column)\"\r\n [size]=\"14\"\r\n ></tbk-icons>\r\n <tbk-text\r\n class=\"tbk-data-table__cell-text\"\r\n [children]=\"resolveCellText(row, column)\"\r\n [as]=\"'span'\"\r\n [size]=\"'font-size-350'\"\r\n [color]=\"resolveCellColor(row, column)\"\r\n [weight]=\"resolveCellWeight(row, column)\"\r\n [align]=\"resolveTextAlign(column)\"\r\n [margin]=\"'0'\"\r\n ></tbk-text>\r\n </span>\r\n </tbk-tooltip>\r\n </ng-template>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"accordion\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--expand\"\r\n [style.right]=\"stickyExpandRight\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"tbk-data-table__expand-button\"\r\n [class.tbk-data-table__expand-button--expanded]=\"isRowExpanded(row, rowIndex)\"\r\n [disabled]=\"isInteractionDisabled\"\r\n [attr.aria-expanded]=\"isRowExpanded(row, rowIndex)\"\r\n [attr.aria-label]=\"isRowExpanded(row, rowIndex) ? 'Recolher linha' : 'Expandir linha'\"\r\n (click)=\"toggleAccordion(row, rowIndex, $event)\"\r\n >\r\n <tbk-icons\r\n [name]=\"'chevronDownSolidFull'\"\r\n [size]=\"12\"\r\n [color]=\"'gray'\"\r\n ></tbk-icons>\r\n </button>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"hasRowActions\"\r\n class=\"tbk-data-table__cell tbk-data-table__cell--menu\"\r\n [class.tbk-data-table__cell--sticky-menu]=\"fixedLastColumn || fixedPenultimateColumn\"\r\n >\r\n <tbk-tooltip [content]=\"resolveRowActionTooltipValue(row, rowIndex)\">\r\n <button\r\n type=\"button\"\r\n class=\"tbk-data-table__menu-button\"\r\n (click)=\"onMenuClick(row, $event)\"\r\n [disabled]=\"isInteractionDisabled || resolveRowActionIsDisabled(row, rowIndex)\"\r\n [attr.aria-label]=\"resolveRowActionAriaLabelValue(row, rowIndex)\"\r\n >\r\n <tbk-icons\r\n [icon]=\"resolveRowActionIconValue(row, rowIndex)\"\r\n [size]=\"18\"\r\n [color]=\"'gray'\"\r\n ></tbk-icons>\r\n </button>\r\n </tbk-tooltip>\r\n </td>\r\n </tr>\r\n\r\n <tr\r\n *ngIf=\"accordion && isRowExpanded(row, rowIndex)\"\r\n class=\"tbk-data-table__row tbk-data-table__row--accordion\"\r\n [style.grid-template-columns]=\"gridTemplateColumns\"\r\n >\r\n <td\r\n class=\"tbk-data-table__cell tbk-data-table__cell--accordion-content\"\r\n [attr.colspan]=\"selectionColspan\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"accordionTemplate\"\r\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr\r\n *ngIf=\"!rows.length\"\r\n class=\"tbk-data-table__row tbk-data-table__row--empty-state\"\r\n [style.grid-template-columns]=\"gridTemplateColumns\"\r\n >\r\n <td\r\n class=\"tbk-data-table__cell tbk-data-table__cell--empty\"\r\n [attr.colspan]=\"selectionColspan\"\r\n >\r\n <tbk-text\r\n [children]=\"emptyMessage\"\r\n [size]=\"'font-size-350'\"\r\n [color]=\"'Gray'\"\r\n [weight]=\"'font-weight-regular'\"\r\n [margin]=\"'0'\"\r\n ></tbk-text>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"hasStatusMessage\"\r\n role=\"status\"\r\n>\r\n <tbk-text\r\n [children]=\"resolvedStatusMessage\"\r\n [as]=\"'p'\"\r\n [size]=\"'font-size-325'\"\r\n [color]=\"status === 'error' ? 'Critical' : 'Success'\"\r\n [weight]=\"'font-weight-regular'\"\r\n [margin]=\"'var(--tbk-ds-gap-8) 0 0'\"\r\n ></tbk-text>\r\n</div>\r\n\r\n<div *ngIf=\"showPagination\" class=\"tbk-data-table__pagination\">\r\n <tbk-pagination\r\n [totalRecords]=\"resolvedTotalRecords\"\r\n [page]=\"resolvedPage\"\r\n [totalPages]=\"resolvedTotalPages\"\r\n [pageSize]=\"resolvedPageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [visiblePages]=\"visiblePages\"\r\n [loading]=\"loading\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n ></tbk-pagination>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChildren,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextInputComponent } from '../TextInput/text-input.component';\n\nexport type DatePickerMode = 'single' | 'range';\nexport type DatePickerStatus =\n | 'Default'\n | 'Error'\n | 'Disabled'\n | 'Success'\n | 'Loading'\n | 'Readonly';\nexport type DatePickerValue = Date | [Date, Date] | null;\n\ntype CalendarDay = {\n date: Date | null;\n label: number | null;\n};\n\nlet nextDatePickerId = 0;\n\n@Component({\n selector: 'tbk-date-picker',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextInputComponent],\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @ViewChildren('dayButton') private readonly dayButtons?: QueryList<ElementRef<HTMLButtonElement>>;\n private readonly instanceId = ++nextDatePickerId;\n\n /** Label acima do campo, seguindo o padrao dos outros inputs. */\n @Input() label = 'Label';\n @Input() id = '';\n @Input() name = '';\n @Input() ariaLabel = '';\n\n /** Placeholder dentro do campo. */\n @Input() placeholder = 'Selecione uma data';\n\n /** Indica se o campo e obrigatorio (exibe asterisco). */\n @Input() required = false;\n\n /** Estado visual (p.ex. Default, Error, Disabled). */\n @Input() status: DatePickerStatus = 'Default';\n\n /** Modo de selecao: data unica ou intervalo. */\n @Input() mode: DatePickerMode = 'single';\n @Input() closeOnRangeSelection = true;\n\n /** Desabilitar o componente. */\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() loading = false;\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() minDateErrorMessage = 'Selecione uma data dentro do periodo permitido';\n @Input() maxDateErrorMessage = 'Selecione uma data dentro do periodo permitido';\n @Input() helperTextInput = '';\n @Input() showHelperText = false;\n @Input() externalErrorMessage = '';\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n @Input() locale = 'pt-BR';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n @Output() readonly valueChange = new EventEmitter<DatePickerValue>();\n @Output() readonly dateChange = new EventEmitter<DatePickerValue>();\n @Output() readonly openedChange = new EventEmitter<boolean>();\n\n /** Valor interno: Date ou [Date, Date] para range. */\n value: DatePickerValue = null;\n inputValue = '';\n hasInvalidManualDate = false;\n private internalErrorMessage = '';\n private pendingRangeStart: Date | null = null;\n private focusTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private dayButtonsChangesSubscription?: Subscription;\n\n /** Exibicao do painel de calendario. */\n isOpen = false;\n\n /** Mes/ano em exibicao no calendario. */\n viewMonth = new Date().getMonth();\n viewYear = new Date().getFullYear();\n\n /** Exibicao do seletor de mes. */\n showMonthPicker = false;\n showYearPicker = false;\n activeDate = this.normalizeDate(new Date())!;\n\n readonly weekdayLabels = ['Seg', 'Te', 'Qua', 'Qui', 'Sex', 'Sab', 'Dom'];\n\n readonly monthLabels = [\n 'Janeiro',\n 'Fevereiro',\n 'Marco',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ];\n get yearOptions(): number[] {\n return this.buildYearOptions();\n }\n\n private onChange: (value: DatePickerValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private readonly hostRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n this.dayButtonsChangesSubscription = this.dayButtons?.changes.subscribe(() => this.focusActiveDay());\n }\n\n ngOnDestroy(): void {\n this.dayButtonsChangesSubscription?.unsubscribe();\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.status === 'Disabled';\n }\n\n get isReadonly(): boolean {\n return this.readonly || this.status === 'Readonly';\n }\n\n get isLoading(): boolean {\n return this.loading || this.status === 'Loading';\n }\n\n get textInputStatus(): 'Default' | 'Error' | 'Success' | 'Loading' | 'Readonly' {\n if (this.hasValidationError) {\n return 'Error';\n }\n\n if (this.isLoading) {\n return 'Loading';\n }\n\n if (this.isReadonly) {\n return 'Readonly';\n }\n\n if (this.status === 'Success' || this.successMessage.trim()) {\n return 'Success';\n }\n\n return this.status === 'Error' ? 'Error' : 'Default';\n }\n\n get resolvedHelperText(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n if (this.hasInvalidManualDate) {\n return 'Data invalida, tente novamente';\n }\n\n const internal = this.internalErrorMessage?.trim();\n if (internal) {\n return internal;\n }\n\n const success = this.successMessage?.trim();\n if (success) {\n return success;\n }\n\n if (!this.inputValue.trim() && this.emptyMessage.trim()) {\n return this.emptyMessage.trim();\n }\n\n return this.helperTextInput?.trim() || '';\n }\n\n get shouldShowHelperText(): boolean {\n if (this.hasValidationError) {\n return true;\n }\n\n return this.showHelperText && !!this.resolvedHelperText;\n }\n\n get panelId(): string {\n return `${this.resolvedInputId}-calendar`;\n }\n\n get monthOverlayId(): string {\n return `${this.resolvedInputId}-month-overlay`;\n }\n\n get yearOverlayId(): string {\n return `${this.resolvedInputId}-year-overlay`;\n }\n\n get resolvedInputId(): string {\n return this.id.trim() || `tbk-date-picker-${this.instanceId}`;\n }\n\n get resolvedAriaLabel(): string {\n return this.ariaLabel.trim() || this.label || this.placeholder || 'Selecionar data';\n }\n\n get rangeSelectionInstruction(): string {\n return this.pendingRangeStart\n ? `Data inicial ${this.formatDate(this.pendingRangeStart)} selecionada. Selecione a data final.`\n : 'Selecione a data inicial do intervalo.';\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) return;\n const hostElement = this.hostRef.nativeElement;\n const eventPath = typeof event.composedPath === 'function' ? event.composedPath() : [];\n if (eventPath.includes(hostElement)) return;\n\n const target = event.target as Node | null;\n if (target && hostElement.contains(target)) return;\n\n this.closePanel();\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.isOpen) {\n this.closePanel();\n }\n }\n\n writeValue(value: DatePickerValue): void {\n this.value = value;\n this.pendingRangeStart = null;\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = '';\n this.syncInputValue();\n }\n\n registerOnChange(fn: (value: DatePickerValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggleOpen(): void {\n if (this.isDisabled || this.isReadonly || this.isLoading) return;\n\n if (this.isOpen) {\n this.closePanel();\n return;\n }\n\n this.isOpen = true;\n this.syncViewToValue();\n this.openedChange.emit(true);\n this.cdr.markForCheck();\n this.focusActiveDay();\n }\n\n onCalendarTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n this.toggleOpen();\n }\n\n closePanel(): void {\n this.isOpen = false;\n this.showMonthPicker = false;\n this.showYearPicker = false;\n this.pendingRangeStart = null;\n this.syncInputValue();\n this.onTouched();\n this.openedChange.emit(false);\n this.cdr.markForCheck();\n }\n\n /** Chamado quando o usuario seleciona uma data no calendario. */\n selectDate(date: Date): void {\n const normalizedDate = this.normalizeDate(date);\n if (!normalizedDate) {\n return;\n }\n\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = '';\n\n if (!this.isDateWithinBounds(normalizedDate)) {\n this.internalErrorMessage = this.resolveOutOfBoundsMessage(normalizedDate);\n return;\n }\n\n if (this.mode === 'single') {\n this.pendingRangeStart = null;\n this.applySingleDateSelection(normalizedDate);\n return;\n }\n\n if (!this.pendingRangeStart) {\n this.pendingRangeStart = normalizedDate;\n this.syncInputValue();\n return;\n }\n\n const start = this.pendingRangeStart;\n this.pendingRangeStart = null;\n this.value =\n normalizedDate < start ? [normalizedDate, start] : [start, normalizedDate];\n\n this.syncInputValue();\n this.emitValueChange(this.value);\n if (this.closeOnRangeSelection) {\n this.closePanel();\n }\n }\n\n onInputValueChange(rawValue: string): void {\n if (this.isReadonly || this.isLoading || this.isDisabled) {\n return;\n }\n\n if (this.mode === 'range') {\n this.onRangeInputValueChange(rawValue);\n return;\n }\n\n const maskedValue = this.applyDateMask(rawValue);\n this.inputValue = maskedValue;\n this.hasInvalidManualDate = this.hasInvalidParts(maskedValue);\n\n if (this.hasInvalidManualDate) {\n this.internalErrorMessage = '';\n this.value = null;\n this.emitValueChange(null);\n return;\n }\n\n if (maskedValue.length < 10) {\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = '';\n this.value = null;\n this.emitValueChange(null);\n return;\n }\n\n const parsedDate = this.parseDate(maskedValue);\n if (!parsedDate) {\n this.hasInvalidManualDate = true;\n this.internalErrorMessage = '';\n this.value = null;\n this.emitValueChange(null);\n return;\n }\n\n if (!this.isDateWithinBounds(parsedDate)) {\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = this.resolveOutOfBoundsMessage(parsedDate);\n this.value = null;\n this.emitValueChange(null);\n return;\n }\n\n this.validateCustomValue(maskedValue);\n if (this.internalErrorMessage) {\n this.value = null;\n this.emitValueChange(null);\n return;\n }\n\n this.applySingleDateSelection(parsedDate);\n }\n\n get monthLabel(): string {\n return this.monthLabels[this.viewMonth] ?? '';\n }\n\n get calendarDays(): CalendarDay[] {\n // JS getDay() uses Sunday=0; convert to Monday=0 for the visual grid.\n const firstDayOfWeek = new Date(this.viewYear, this.viewMonth, 1).getDay();\n const mondayFirstOffset = (firstDayOfWeek + 6) % 7;\n const daysInMonth = new Date(this.viewYear, this.viewMonth + 1, 0).getDate();\n const totalCells = 42;\n const days: CalendarDay[] = [];\n\n for (let i = 0; i < totalCells; i += 1) {\n const dayNumber = i - mondayFirstOffset + 1;\n if (dayNumber < 1 || dayNumber > daysInMonth) {\n days.push({ date: null, label: null });\n } else {\n days.push({\n date: new Date(this.viewYear, this.viewMonth, dayNumber),\n label: dayNumber,\n });\n }\n }\n\n return days;\n }\n\n selectDateFromDay(day: CalendarDay): void {\n if (this.isDisabled || this.isReadonly || this.isLoading) return;\n if (!day.date) return;\n if (this.isDayDisabled(day)) return;\n\n // Sempre fecha overlays auxiliares ao escolher um dia.\n this.showMonthPicker = false;\n this.showYearPicker = false;\n\n // Clona a data para evitar qualquer mutacao acidental de referencia.\n const selectedDate = new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n day.date.getDate()\n );\n\n this.selectDate(selectedDate);\n }\n\n onDayClick(event: MouseEvent, day: CalendarDay): void {\n if (!day.date) return;\n event.stopPropagation();\n this.activeDate = this.normalizeDate(day.date) ?? this.activeDate;\n this.selectDateFromDay(day);\n }\n\n onDayKeydown(event: KeyboardEvent, day: CalendarDay): void {\n if (!day.date) {\n return;\n }\n\n const keyHandlers: Record<string, () => void> = {\n ArrowLeft: () => this.moveActiveDateByDays(-1),\n ArrowRight: () => this.moveActiveDateByDays(1),\n ArrowUp: () => this.moveActiveDateByDays(-7),\n ArrowDown: () => this.moveActiveDateByDays(7),\n Home: () => this.moveActiveDateToWeekEdge('start'),\n End: () => this.moveActiveDateToWeekEdge('end'),\n PageUp: () => this.moveActiveDateByMonths(event.shiftKey ? -12 : -1),\n PageDown: () => this.moveActiveDateByMonths(event.shiftKey ? 12 : 1),\n };\n\n const handler = keyHandlers[event.key];\n if (handler) {\n event.preventDefault();\n handler();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectDateFromDay(day);\n }\n }\n\n isSelectedDay(day: CalendarDay): boolean {\n if (!day.date) return false;\n\n if (this.pendingRangeStart) {\n return this.isSameDate(day.date, this.pendingRangeStart);\n }\n\n if (!this.value) return false;\n\n if (this.value instanceof Date) {\n return this.isSameDate(day.date, this.value);\n }\n\n if (!Array.isArray(this.value)) return false;\n\n const [start, end] = this.value;\n return this.isSameDate(day.date, start) || this.isSameDate(day.date, end);\n }\n\n isInRange(day: CalendarDay): boolean {\n if (!day.date || this.pendingRangeStart || !Array.isArray(this.value)) return false;\n const [start, end] = this.value;\n if (!start || !end) return false;\n\n return day.date > start && day.date < end;\n }\n\n isToday(day: CalendarDay): boolean {\n if (!day.date) return false;\n return this.isSameDate(day.date, new Date());\n }\n\n isDayDisabled(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n return !this.isDateWithinBounds(day.date);\n }\n\n isActiveDay(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n return this.isSameDate(day.date, this.activeDate);\n }\n\n resolveDayTabIndex(day: CalendarDay): number {\n if (!day.date || this.isDayDisabled(day)) {\n return -1;\n }\n\n return this.isActiveDay(day) ? 0 : -1;\n }\n\n getDayId(day: CalendarDay, index: number): string | null {\n if (!day.date) {\n return null;\n }\n\n return `${this.resolvedInputId}-day-${index}`;\n }\n\n getDayAriaLabel(day: CalendarDay): string {\n if (!day.date) return '';\n return day.date.toLocaleDateString(this.locale, {\n weekday: 'long',\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n });\n }\n\n prevMonth(): void {\n if (this.viewMonth === 0) {\n this.viewMonth = 11;\n this.viewYear -= 1;\n } else {\n this.viewMonth -= 1;\n }\n\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n nextMonth(): void {\n if (this.viewMonth === 11) {\n this.viewMonth = 0;\n this.viewYear += 1;\n } else {\n this.viewMonth += 1;\n }\n\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n prevYear(): void {\n this.viewYear -= 1;\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n nextYear(): void {\n this.viewYear += 1;\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n toggleMonthPicker(): void {\n this.showYearPicker = false;\n this.showMonthPicker = !this.showMonthPicker;\n }\n\n selectMonth(index: number): void {\n this.viewMonth = index;\n this.showMonthPicker = false;\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n toggleYearPicker(): void {\n this.showMonthPicker = false;\n this.showYearPicker = !this.showYearPicker;\n }\n\n selectYear(year: number): void {\n this.viewYear = year;\n this.showYearPicker = false;\n this.syncActiveDateToView();\n this.focusActiveDay();\n }\n\n private syncInputValue(): void {\n this.inputValue = this.getDisplayValue();\n this.cdr.markForCheck();\n }\n\n private syncViewToValue(): void {\n if (this.value instanceof Date) {\n this.viewYear = this.value.getFullYear();\n this.viewMonth = this.value.getMonth();\n this.activeDate = this.normalizeDate(this.value) ?? this.activeDate;\n return;\n }\n\n if (Array.isArray(this.value) && this.value[0] instanceof Date) {\n this.viewYear = this.value[0].getFullYear();\n this.viewMonth = this.value[0].getMonth();\n this.activeDate = this.normalizeDate(this.value[0]) ?? this.activeDate;\n return;\n }\n\n const now = new Date();\n this.viewYear = now.getFullYear();\n this.viewMonth = now.getMonth();\n this.activeDate = this.normalizeDate(now) ?? this.activeDate;\n }\n\n private formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = String(date.getFullYear());\n return `${day}/${month}/${year}`;\n }\n\n private applySingleDateSelection(date: Date): void {\n const normalizedDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = '';\n this.value = normalizedDate;\n this.emitValueChange(normalizedDate);\n this.viewMonth = normalizedDate.getMonth();\n this.viewYear = normalizedDate.getFullYear();\n this.activeDate = normalizedDate;\n this.syncInputValue();\n }\n\n private get hasValidationError(): boolean {\n return !!this.externalErrorMessage?.trim() || this.hasInvalidManualDate || !!this.internalErrorMessage;\n }\n\n private validateCustomValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n\n private getDisplayValue(): string {\n if (this.mode === 'range' && this.pendingRangeStart) {\n return `${this.formatDate(this.pendingRangeStart)} -`;\n }\n\n if (!this.value) return '';\n\n if (this.mode === 'single' && this.value instanceof Date) {\n return this.formatDate(this.value);\n }\n\n if (this.mode === 'range' && Array.isArray(this.value)) {\n const [start, end] = this.value;\n return `${this.formatDate(start)} - ${this.formatDate(end)}`;\n }\n\n return '';\n }\n\n private applyDateMask(rawValue: string): string {\n const digits = rawValue.replace(/\\D/g, '').slice(0, 8);\n const day = digits.slice(0, 2);\n const month = digits.slice(2, 4);\n const year = digits.slice(4, 8);\n\n if (digits.length <= 2) return day;\n if (digits.length <= 4) return `${day}/${month}`;\n return `${day}/${month}/${year}`;\n }\n\n private onRangeInputValueChange(rawValue: string): void {\n const maskedValue = this.applyRangeMask(rawValue);\n this.inputValue = maskedValue;\n this.hasInvalidManualDate = maskedValue\n .split(' - ')\n .filter(Boolean)\n .some((value) => this.hasInvalidParts(value));\n\n if (this.hasInvalidManualDate) {\n this.internalErrorMessage = '';\n this.value = null;\n this.pendingRangeStart = null;\n this.emitValueChange(null);\n return;\n }\n\n if (maskedValue.length < 23) {\n this.internalErrorMessage = '';\n this.value = null;\n this.pendingRangeStart = null;\n this.emitValueChange(null);\n return;\n }\n\n const parsedRange = this.parseRange(maskedValue);\n if (!parsedRange) {\n this.hasInvalidManualDate = true;\n this.internalErrorMessage = '';\n this.value = null;\n this.pendingRangeStart = null;\n this.emitValueChange(null);\n return;\n }\n\n const [start, end] = parsedRange;\n const outOfBoundsDate = !this.isDateWithinBounds(start)\n ? start\n : !this.isDateWithinBounds(end)\n ? end\n : null;\n\n if (outOfBoundsDate) {\n this.hasInvalidManualDate = false;\n this.internalErrorMessage = this.resolveOutOfBoundsMessage(outOfBoundsDate);\n this.value = null;\n this.pendingRangeStart = null;\n this.emitValueChange(null);\n return;\n }\n\n this.validateCustomValue(maskedValue);\n if (this.internalErrorMessage) {\n this.value = null;\n this.pendingRangeStart = null;\n this.emitValueChange(null);\n return;\n }\n\n this.pendingRangeStart = null;\n this.value = [start, end];\n this.viewMonth = start.getMonth();\n this.viewYear = start.getFullYear();\n this.activeDate = start;\n this.syncInputValue();\n this.emitValueChange(this.value);\n }\n\n private applyRangeMask(rawValue: string): string {\n const digits = rawValue.replace(/\\D/g, '').slice(0, 16);\n const start = this.applyDateMask(digits.slice(0, 8));\n const end = this.applyDateMask(digits.slice(8, 16));\n\n if (digits.length <= 8) {\n return start;\n }\n\n return `${start} - ${end}`;\n }\n\n private parseRange(maskedValue: string): [Date, Date] | null {\n const [startText, endText] = maskedValue.split(' - ');\n if (!startText || !endText) {\n return null;\n }\n\n const start = this.parseDate(startText);\n const end = this.parseDate(endText);\n if (!start || !end) {\n return null;\n }\n\n return start <= end ? [start, end] : [end, start];\n }\n\n private parseDate(maskedValue: string): Date | null {\n const [dayText, monthText, yearText] = maskedValue.split('/');\n if (!dayText || !monthText || !yearText) return null;\n\n const day = Number(dayText);\n const month = Number(monthText);\n const year = Number(yearText);\n\n if (!Number.isInteger(day) || !Number.isInteger(month) || !Number.isInteger(year)) {\n return null;\n }\n\n if (day < 1 || day > 31 || month < 1 || month > 12 || year < 1) {\n return null;\n }\n\n const candidateDate = new Date(year, month - 1, day);\n\n if (\n candidateDate.getFullYear() !== year ||\n candidateDate.getMonth() !== month - 1 ||\n candidateDate.getDate() !== day\n ) {\n return null;\n }\n\n return candidateDate;\n }\n\n private hasInvalidParts(maskedValue: string): boolean {\n const [dayText = '', monthText = '', yearText = ''] = maskedValue.split('/');\n\n if (dayText.length === 2) {\n const day = Number(dayText);\n if (!Number.isInteger(day) || day < 1 || day > 31) {\n return true;\n }\n }\n\n if (monthText.length === 2) {\n const month = Number(monthText);\n if (!Number.isInteger(month) || month < 1 || month > 12) {\n return true;\n }\n }\n\n if (yearText.length === 4) {\n const year = Number(yearText);\n if (!Number.isInteger(year) || year < 1) {\n return true;\n }\n }\n\n return false;\n }\n\n private isDateWithinBounds(date: Date): boolean {\n const normalized = this.normalizeDate(date);\n const minDate = this.normalizeDate(this.minDate);\n const maxDate = this.normalizeDate(this.maxDate);\n\n if (!normalized) {\n return false;\n }\n\n if (minDate && normalized < minDate) {\n return false;\n }\n\n if (maxDate && normalized > maxDate) {\n return false;\n }\n\n return true;\n }\n\n private resolveOutOfBoundsMessage(date: Date): string {\n const normalized = this.normalizeDate(date);\n const minDate = this.normalizeDate(this.minDate);\n const maxDate = this.normalizeDate(this.maxDate);\n\n if (!normalized) {\n return '';\n }\n\n if (minDate && normalized < minDate) {\n return this.minDateErrorMessage;\n }\n\n if (maxDate && normalized > maxDate) {\n return this.maxDateErrorMessage;\n }\n\n return '';\n }\n\n private normalizeDate(date: Date | null): Date | null {\n if (!(date instanceof Date) || Number.isNaN(date.getTime())) {\n return null;\n }\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private isSameDate(left: Date, right: Date): boolean {\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n );\n }\n\n private emitValueChange(value: DatePickerValue): void {\n this.onChange(value);\n this.valueChange.emit(value);\n this.dateChange.emit(value);\n this.cdr.markForCheck();\n }\n\n private syncActiveDateToView(): void {\n const selectedDay = Math.min(\n this.activeDate.getDate(),\n new Date(this.viewYear, this.viewMonth + 1, 0).getDate()\n );\n const candidate = new Date(this.viewYear, this.viewMonth, selectedDay);\n this.setActiveDate(candidate);\n }\n\n private moveActiveDateByDays(days: number): void {\n const candidate = new Date(this.activeDate);\n candidate.setDate(candidate.getDate() + days);\n this.setActiveDate(candidate);\n }\n\n private moveActiveDateByMonths(months: number): void {\n const candidate = new Date(this.activeDate);\n candidate.setMonth(candidate.getMonth() + months);\n this.setActiveDate(candidate);\n }\n\n private moveActiveDateToWeekEdge(edge: 'start' | 'end'): void {\n const dayOfWeek = (this.activeDate.getDay() + 6) % 7;\n const offset = edge === 'start' ? -dayOfWeek : 6 - dayOfWeek;\n this.moveActiveDateByDays(offset);\n }\n\n private setActiveDate(date: Date): void {\n const normalizedDate = this.normalizeDate(date);\n if (!normalizedDate) {\n return;\n }\n\n this.activeDate = normalizedDate;\n this.viewMonth = normalizedDate.getMonth();\n this.viewYear = normalizedDate.getFullYear();\n this.cdr.markForCheck();\n this.focusActiveDay();\n }\n\n private focusActiveDay(): void {\n if (!this.isOpen) {\n return;\n }\n\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n this.focusTimeoutId = setTimeout(() => {\n const activeButton = this.dayButtons\n ?.find((button) => button.nativeElement.tabIndex === 0)\n ?.nativeElement;\n activeButton?.focus();\n });\n }\n\n private buildYearOptions(): number[] {\n const currentYear = new Date().getFullYear();\n const minYear = this.normalizeDate(this.minDate)?.getFullYear() ?? currentYear - 100;\n const maxYear = this.normalizeDate(this.maxDate)?.getFullYear() ?? currentYear + 10;\n const options: number[] = [];\n\n for (let year = maxYear; year >= minYear; year -= 1) {\n options.push(year);\n }\n\n return options;\n }\n}\n","<div\n class=\"tbk-date-picker\"\n [ngClass]=\"[\n 'tbk-date-picker--status-' + status.toLowerCase(),\n isDisabled ? 'tbk-date-picker--disabled' : '',\n isReadonly ? 'tbk-date-picker--readonly' : '',\n isLoading ? 'tbk-date-picker--loading' : '',\n isOpen ? 'tbk-date-picker--open' : ''\n ]\"\n>\n <div class=\"tbk-date-picker__input-wrapper\">\n <tbk-text-input\n [id]=\"resolvedInputId\"\n [name]=\"name\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [ariaLabel]=\"resolvedAriaLabel\"\n [inputMode]=\"'numeric'\"\n [pattern]=\"mode === 'single' ? '[0-9/]*' : '[0-9/ -]*'\"\n [keyFilter]=\"'numeric'\"\n [required]=\"required\"\n [status]=\"textInputStatus\"\n [helperText]=\"resolvedHelperText\"\n [disabled]=\"isDisabled\"\n [readonly]=\"isReadonly\"\n [loading]=\"isLoading\"\n [successMessage]=\"successMessage\"\n [emptyMessage]=\"emptyMessage\"\n [showHelperText]=\"shouldShowHelperText\"\n [maxLength]=\"mode === 'single' ? 10 : 23\"\n [value]=\"inputValue\"\n (valueChange)=\"onInputValueChange($event)\"\n (focused)=\"toggleOpen()\"\n ></tbk-text-input>\n\n <button\n *ngIf=\"!isDisabled && !isReadonly && !isLoading\"\n type=\"button\"\n class=\"tbk-date-picker__calendar-trigger\"\n aria-label=\"Abrir calendario\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"panelId\"\n (click)=\"onCalendarTriggerClick($event)\"\n >\n <tbk-icons\n class=\"tbk-date-picker__calendar-icon\"\n [name]=\"'calendarLightFull'\"\n [color]=\"'secondary'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </div>\n\n <div\n *ngIf=\"isOpen\"\n class=\"tbk-date-picker__panel\"\n [id]=\"panelId\"\n role=\"dialog\"\n aria-label=\"Calendario\"\n >\n <p\n *ngIf=\"mode === 'range'\"\n class=\"tbk-date-picker__sr-only\"\n aria-live=\"polite\"\n >\n {{ rangeSelectionInstruction }}\n </p>\n\n <div class=\"tbk-date-picker__panel-header\">\n <button\n type=\"button\"\n class=\"tbk-date-picker__nav-btn\"\n (click)=\"prevMonth()\"\n aria-label=\"Mes anterior\"\n >\n <tbk-icons\n class=\"tbk-date-picker__nav-icon\"\n [name]=\"'chevronLeftDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"16\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n\n <div class=\"tbk-date-picker__selectors\">\n <div class=\"tbk-date-picker__selector-group\">\n <button\n type=\"button\"\n class=\"tbk-date-picker__selector-pill tbk-date-picker__selector-pill--month\"\n (click)=\"toggleMonthPicker()\"\n [attr.aria-expanded]=\"showMonthPicker\"\n [attr.aria-controls]=\"monthOverlayId\"\n aria-haspopup=\"listbox\"\n aria-label=\"Selecionar mes\"\n >\n {{ monthLabel }}\n <tbk-icons\n class=\"tbk-date-picker__selector-chevron\"\n [name]=\"'chevronDownDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"10\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n\n <div\n *ngIf=\"showMonthPicker\"\n [id]=\"monthOverlayId\"\n class=\"tbk-date-picker__overlay tbk-date-picker__overlay--month\"\n role=\"listbox\"\n aria-label=\"Meses\"\n >\n <button\n type=\"button\"\n class=\"tbk-date-picker__overlay-item\"\n *ngFor=\"let month of monthLabels; let i = index\"\n (click)=\"selectMonth(i)\"\n role=\"option\"\n [attr.aria-selected]=\"viewMonth === i\"\n >\n {{ month }}\n </button>\n </div>\n </div>\n\n <div class=\"tbk-date-picker__selector-group\">\n <button\n type=\"button\"\n class=\"tbk-date-picker__selector-pill tbk-date-picker__selector-pill--year\"\n (click)=\"toggleYearPicker()\"\n [attr.aria-expanded]=\"showYearPicker\"\n [attr.aria-controls]=\"yearOverlayId\"\n aria-haspopup=\"listbox\"\n aria-label=\"Selecionar ano\"\n >\n {{ viewYear }}\n <tbk-icons\n class=\"tbk-date-picker__selector-chevron\"\n [name]=\"'chevronDownDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"10\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n\n <div\n *ngIf=\"showYearPicker\"\n [id]=\"yearOverlayId\"\n class=\"tbk-date-picker__overlay tbk-date-picker__overlay--year\"\n role=\"listbox\"\n aria-label=\"Anos\"\n >\n <button\n type=\"button\"\n class=\"tbk-date-picker__overlay-item\"\n *ngFor=\"let year of yearOptions\"\n (click)=\"selectYear(year)\"\n role=\"option\"\n [attr.aria-selected]=\"viewYear === year\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"tbk-date-picker__nav-btn\"\n (click)=\"nextMonth()\"\n aria-label=\"Proximo mes\"\n >\n <tbk-icons\n class=\"tbk-date-picker__nav-icon\"\n [name]=\"'chevronRightDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"16\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </div>\n\n <div class=\"tbk-date-picker__week-header\" aria-hidden=\"true\">\n <span *ngFor=\"let weekday of weekdayLabels\">\n {{ weekday }}\n </span>\n </div>\n\n <div class=\"tbk-date-picker__days-grid\" role=\"group\" [attr.aria-label]=\"monthLabel + ' ' + viewYear\">\n <ng-container *ngFor=\"let day of calendarDays; let dayIndex = index\">\n <button\n *ngIf=\"day.date; else emptyDay\"\n type=\"button\"\n class=\"tbk-date-picker__day\"\n #dayButton\n [ngClass]=\"{\n 'tbk-date-picker__day--disabled': isDayDisabled(day),\n 'tbk-date-picker__day--selected': isSelectedDay(day),\n 'tbk-date-picker__day--in-range': isInRange(day),\n 'tbk-date-picker__day--today': isToday(day),\n 'tbk-date-picker__day--active': isActiveDay(day)\n }\"\n [disabled]=\"isDayDisabled(day)\"\n [attr.id]=\"getDayId(day, dayIndex)\"\n [attr.tabindex]=\"resolveDayTabIndex(day)\"\n [attr.aria-label]=\"getDayAriaLabel(day)\"\n [attr.aria-pressed]=\"isSelectedDay(day)\"\n (click)=\"onDayClick($event, day)\"\n (keydown)=\"onDayKeydown($event, day)\"\n >\n {{ day.label }}\n </button>\n\n <ng-template #emptyDay>\n <span class=\"tbk-date-picker__day tbk-date-picker__day--empty\" aria-hidden=\"true\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\nimport { DatePickerMode } from '../DatePicker/date-picker.component';\nimport { IconsComponent } from '../Icons/icons.component';\nimport {\n TextColor,\n TextComponent,\n TextWeight,\n} from '../Text/text.component';\n\ntype CalendarDay = {\n date: Date | null;\n label: number | null;\n key: string;\n};\n\ntype DisplayedMonth = {\n key: string;\n title: string;\n month: number;\n year: number;\n days: CalendarDay[];\n};\n\n@Component({\n selector: 'tbk-date-picker-filterbar-calendar',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './date-picker-filterbar-calendar.component.html',\n styleUrls: ['./date-picker-filterbar-calendar.component.scss'],\n})\nexport class DatePickerFilterBarCalendarComponent {\n @Input() mode: DatePickerMode = 'single';\n private _mobile = false;\n @Input()\n set mobile(value: boolean) {\n this._mobile = value;\n this.scheduleScrollToAnchorMonth();\n }\n get mobile(): boolean {\n return this._mobile;\n }\n\n @Input() disabled = false;\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n\n private _value: Date | [Date, Date] | null = null;\n\n @Input()\n set value(nextValue: Date | [Date, Date] | null) {\n this._value = this.normalizeValue(nextValue);\n this.pendingRangeStart = null;\n this.syncViewToValue();\n this.scheduleScrollToAnchorMonth();\n }\n get value(): Date | [Date, Date] | null {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<Date | [Date, Date] | null>();\n @Output() daySelect = new EventEmitter<Date>();\n\n readonly weekdayLabels = ['Seg', 'Te', 'Qua', 'Qui', 'Sex', 'Sab', 'Dom'];\n readonly monthLabels = [\n 'Janeiro',\n 'Fevereiro',\n 'Marco',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ];\n\n leftMonthDate = this.startOfMonth(new Date());\n rightMonthDate = this.resolveDefaultRightMonth(this.leftMonthDate);\n pendingRangeStart: Date | null = null;\n activeMonthPickerIndex: number | null = null;\n activeYearPickerIndex: number | null = null;\n\n constructor(private readonly hostRef: ElementRef<HTMLElement>) {}\n\n get yearOptions(): number[] {\n return this.buildYearOptions();\n }\n\n get canNavigateNext(): boolean {\n return this.compareMonths(this.addMonths(this.rightMonthDate, 1), this.maxNavigableMonthDate) <= 0;\n }\n\n get desktopDisplayedMonths(): DisplayedMonth[] {\n const firstMonth = this.startOfMonth(this.leftMonthDate);\n const secondMonth = this.startOfMonth(this.rightMonthDate);\n\n return [this.buildDisplayedMonth(firstMonth), this.buildDisplayedMonth(secondMonth)];\n }\n\n get mobileDisplayedMonths(): DisplayedMonth[] {\n const startMonth = this.resolveMobileStartMonthDate();\n const endMonth = this.maxNavigableMonthDate;\n\n if (this.compareMonths(startMonth, endMonth) > 0) {\n return [this.buildDisplayedMonth(endMonth)];\n }\n\n const months: DisplayedMonth[] = [];\n let currentMonth = startMonth;\n\n while (this.compareMonths(currentMonth, endMonth) <= 0) {\n months.push(this.buildDisplayedMonth(currentMonth));\n currentMonth = this.addMonths(currentMonth, 1);\n }\n\n return months;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const hostElement = this.hostRef.nativeElement;\n const eventPath = typeof event.composedPath === 'function' ? event.composedPath() : [];\n if (eventPath.includes(hostElement)) {\n return;\n }\n\n const target = event.target as Node | null;\n if (target && hostElement.contains(target)) {\n return;\n }\n\n this.closePickers();\n }\n\n prevMonth(): void {\n if (this.disabled) {\n return;\n }\n\n this.closePickers();\n this.leftMonthDate = this.addMonths(this.leftMonthDate, -1);\n this.rightMonthDate = this.addMonths(this.rightMonthDate, -1);\n }\n\n nextMonth(): void {\n if (this.disabled || !this.canNavigateNext) {\n return;\n }\n\n this.closePickers();\n this.leftMonthDate = this.addMonths(this.leftMonthDate, 1);\n this.rightMonthDate = this.addMonths(this.rightMonthDate, 1);\n }\n\n toggleMonthPicker(displayIndex: number): void {\n if (this.disabled) {\n return;\n }\n\n this.activeYearPickerIndex = null;\n this.activeMonthPickerIndex =\n this.activeMonthPickerIndex === displayIndex ? null : displayIndex;\n }\n\n toggleYearPicker(displayIndex: number): void {\n if (this.disabled) {\n return;\n }\n\n this.activeMonthPickerIndex = null;\n this.activeYearPickerIndex =\n this.activeYearPickerIndex === displayIndex ? null : displayIndex;\n }\n\n selectMonth(displayIndex: number, monthIndex: number): void {\n const displayedDate = this.getDisplayedMonthDate(displayIndex);\n const nextDate = new Date(displayedDate.getFullYear(), monthIndex, 1);\n if (this.isMonthOptionDisabled(displayIndex, monthIndex)) {\n return;\n }\n\n this.setDisplayedMonth(displayIndex, nextDate);\n this.activeMonthPickerIndex = null;\n }\n\n selectYear(displayIndex: number, year: number): void {\n const displayedDate = this.getDisplayedMonthDate(displayIndex);\n const nextDate = this.clampDisplayedMonth(displayIndex, new Date(year, displayedDate.getMonth(), 1));\n this.setDisplayedMonth(displayIndex, nextDate);\n this.activeYearPickerIndex = null;\n }\n\n isMonthSelected(displayIndex: number, monthIndex: number): boolean {\n return this.getDisplayedMonthDate(displayIndex).getMonth() === monthIndex;\n }\n\n isMonthOptionDisabled(displayIndex: number, monthIndex: number): boolean {\n const displayedDate = this.getDisplayedMonthDate(displayIndex);\n const candidateMonth = new Date(displayedDate.getFullYear(), monthIndex, 1);\n\n return this.isDisplayedMonthSelectionDisabled(displayIndex, candidateMonth);\n }\n\n isYearSelected(displayIndex: number, year: number): boolean {\n return this.getDisplayedMonthDate(displayIndex).getFullYear() === year;\n }\n\n isYearOptionDisabled(displayIndex: number, year: number): boolean {\n const displayedDate = this.getDisplayedMonthDate(displayIndex);\n const candidateMonth = new Date(year, displayedDate.getMonth(), 1);\n\n return this.isDisplayedMonthSelectionDisabled(displayIndex, candidateMonth);\n }\n\n getMonthPickerId(displayIndex: number): string {\n return `tbk-date-picker-filterbar-calendar-month-overlay-${displayIndex}`;\n }\n\n getYearPickerId(displayIndex: number): string {\n return `tbk-date-picker-filterbar-calendar-year-overlay-${displayIndex}`;\n }\n\n onDayClick(day: CalendarDay): void {\n if (!day.date || this.disabled || this.isDayDisabled(day)) {\n return;\n }\n\n this.closePickers();\n const normalizedDate = this.cloneDate(day.date);\n this.daySelect.emit(normalizedDate);\n\n if (this.mode === 'single') {\n this.pendingRangeStart = null;\n this.commitValue(normalizedDate);\n return;\n }\n\n if (!this.pendingRangeStart) {\n this.pendingRangeStart = normalizedDate;\n this._value = null;\n return;\n }\n\n const start = this.pendingRangeStart;\n this.pendingRangeStart = null;\n\n if (normalizedDate.getTime() < start.getTime()) {\n this.commitValue([normalizedDate, start]);\n return;\n }\n\n this.commitValue([start, normalizedDate]);\n }\n\n isDayDisabled(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n return !this.isDateWithinBounds(day.date);\n }\n\n isToday(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n return this.isSameDate(day.date, new Date());\n }\n\n isSelectedSingle(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n if (this.mode === 'single' && this._value instanceof Date) {\n return this.isSameDate(day.date, this._value);\n }\n\n const range = this.getCommittedRange();\n if (!range) {\n return false;\n }\n\n return this.isSameDate(range[0], range[1]) && this.isSameDate(day.date, range[0]);\n }\n\n isPendingStart(day: CalendarDay): boolean {\n if (!day.date || !this.pendingRangeStart) {\n return false;\n }\n\n return this.isSameDate(day.date, this.pendingRangeStart);\n }\n\n isSelectedStart(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n const range = this.getCommittedRange();\n if (!range || this.isSameDate(range[0], range[1])) {\n return false;\n }\n\n return this.isSameDate(day.date, range[0]);\n }\n\n isSelectedEnd(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n const range = this.getCommittedRange();\n if (!range || this.isSameDate(range[0], range[1])) {\n return false;\n }\n\n return this.isSameDate(day.date, range[1]);\n }\n\n isInRange(day: CalendarDay): boolean {\n if (!day.date) {\n return false;\n }\n\n const range = this.getCommittedRange();\n if (!range) {\n return false;\n }\n\n return day.date > range[0] && day.date < range[1];\n }\n\n getDayAriaLabel(day: CalendarDay): string {\n if (!day.date) {\n return '';\n }\n\n return day.date.toLocaleDateString('pt-BR', {\n weekday: 'long',\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n });\n }\n\n trackByMonth(_index: number, month: DisplayedMonth): string {\n return month.key;\n }\n\n trackByDay(_index: number, day: CalendarDay): string {\n return day.key;\n }\n\n resolveDayTextColor(day: CalendarDay): TextColor {\n if (\n this.isPendingStart(day) ||\n this.isSelectedSingle(day) ||\n this.isSelectedStart(day) ||\n this.isSelectedEnd(day)\n ) {\n return 'White';\n }\n\n if (this.isDayDisabled(day)) {\n return 'Disabled';\n }\n\n if (this.isInRange(day)) {\n return 'Secondary';\n }\n\n return 'Primary';\n }\n\n resolveDayTextWeight(day: CalendarDay): TextWeight {\n if (\n this.isPendingStart(day) ||\n this.isSelectedSingle(day) ||\n this.isSelectedStart(day) ||\n this.isSelectedEnd(day)\n ) {\n return 'font-weight-bold';\n }\n\n return 'font-weight-medium';\n }\n\n private commitValue(nextValue: Date | [Date, Date]): void {\n this._value = this.normalizeValue(nextValue);\n this.syncViewToValue();\n this.valueChange.emit(this._value);\n }\n\n private buildDisplayedMonth(monthDate: Date): DisplayedMonth {\n const month = monthDate.getMonth();\n const year = monthDate.getFullYear();\n\n return {\n key: `${year}-${month}`,\n title: `${this.monthLabels[month]} ${year}`,\n month,\n year,\n days: this.buildCalendarDays(monthDate),\n };\n }\n\n private buildCalendarDays(monthDate: Date): CalendarDay[] {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstDayOfWeek = new Date(year, month, 1).getDay();\n const mondayFirstOffset = (firstDayOfWeek + 6) % 7;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const days: CalendarDay[] = [];\n\n for (let index = 0; index < 42; index += 1) {\n const dayNumber = index - mondayFirstOffset + 1;\n\n if (dayNumber < 1 || dayNumber > daysInMonth) {\n days.push({\n date: null,\n label: null,\n key: `${year}-${month}-empty-${index}`,\n });\n continue;\n }\n\n const date = new Date(year, month, dayNumber);\n days.push({\n date,\n label: dayNumber,\n key: `${year}-${month}-${dayNumber}`,\n });\n }\n\n return days;\n }\n\n private syncViewToValue(): void {\n if (Array.isArray(this._value)) {\n this.syncDesktopMonthsToAnchor(this._value[1], true);\n this.closePickers();\n return;\n }\n\n const anchorDate =\n this.pendingRangeStart ||\n (this._value instanceof Date ? this._value : new Date());\n\n this.syncDesktopMonthsToAnchor(anchorDate, false);\n this.closePickers();\n }\n\n private syncDesktopMonthsToAnchor(anchorDate: Date, preferAnchorOnRight: boolean): void {\n const anchorMonth = this.clampMonthToMaxNavigable(this.startOfMonth(anchorDate));\n\n if (preferAnchorOnRight) {\n this.rightMonthDate = anchorMonth;\n this.leftMonthDate = this.addMonths(anchorMonth, -1);\n return;\n }\n\n this.leftMonthDate = anchorMonth;\n this.rightMonthDate = this.resolveDefaultRightMonth(anchorMonth);\n\n // When the anchor month is also the latest navigable month, keep the\n // desktop calendar showing the previous month alongside it.\n if (this.compareMonths(this.rightMonthDate, this.leftMonthDate) === 0) {\n this.leftMonthDate = this.addMonths(this.rightMonthDate, -1);\n }\n }\n\n private resolveMobileStartMonthDate(): Date {\n const normalizedMin = this.normalizeBoundary(this.minDate);\n if (normalizedMin) {\n return this.startOfMonth(normalizedMin);\n }\n\n const fallbackStart = this.addMonths(this.maxNavigableMonthDate, -11);\n const selectedStart =\n this.pendingRangeStart ||\n (Array.isArray(this._value)\n ? this._value[0]\n : this._value instanceof Date\n ? this._value\n : null);\n\n if (!selectedStart) {\n return fallbackStart;\n }\n\n const selectedMonth = this.startOfMonth(selectedStart);\n return this.compareMonths(selectedMonth, fallbackStart) < 0 ? selectedMonth : fallbackStart;\n }\n\n private resolveMobileAnchorMonthKey(): string {\n const anchorDate =\n this.pendingRangeStart ||\n (Array.isArray(this._value)\n ? this._value[0]\n : this._value instanceof Date\n ? this._value\n : this.maxNavigableDate);\n const anchorMonth = this.startOfMonth(anchorDate);\n\n return `${anchorMonth.getFullYear()}-${anchorMonth.getMonth()}`;\n }\n\n private scheduleScrollToAnchorMonth(): void {\n if (!this.mobile) {\n return;\n }\n\n setTimeout(() => {\n const anchorMonthKey = this.resolveMobileAnchorMonthKey();\n const targetMonth = this.hostRef.nativeElement.querySelector<HTMLElement>(\n `[data-month-key=\"${anchorMonthKey}\"]`,\n );\n\n targetMonth?.scrollIntoView({ block: 'start' });\n }, 0);\n }\n\n private normalizeValue(value: Date | [Date, Date] | null): Date | [Date, Date] | null {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return this.cloneDate(value);\n }\n\n if (Array.isArray(value)) {\n const [start, end] = value;\n if (\n start instanceof Date &&\n !Number.isNaN(start.getTime()) &&\n end instanceof Date &&\n !Number.isNaN(end.getTime())\n ) {\n const normalizedStart = this.cloneDate(start);\n const normalizedEnd = this.cloneDate(end);\n\n return normalizedStart.getTime() <= normalizedEnd.getTime()\n ? [normalizedStart, normalizedEnd]\n : [normalizedEnd, normalizedStart];\n }\n }\n\n return null;\n }\n\n private getCommittedRange(): [Date, Date] | null {\n if (!Array.isArray(this._value)) {\n return null;\n }\n\n return this._value;\n }\n\n private isDateWithinBounds(date: Date): boolean {\n const normalizedDate = this.cloneDate(date);\n const normalizedMin = this.normalizeBoundary(this.minDate);\n const normalizedMax = this.maxNavigableDate;\n\n if (normalizedMin && normalizedDate < normalizedMin) {\n return false;\n }\n\n if (normalizedMax && normalizedDate > normalizedMax) {\n return false;\n }\n\n return true;\n }\n\n private normalizeBoundary(value: Date | null): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return this.cloneDate(value);\n }\n\n private isSameDate(left: Date, right: Date): boolean {\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n );\n }\n\n private startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n\n private getDisplayedMonthDate(displayIndex: number): Date {\n return this.startOfMonth(displayIndex === 0 ? this.leftMonthDate : this.rightMonthDate);\n }\n\n private setDisplayedMonth(displayIndex: number, date: Date): void {\n const normalizedDate = this.clampDisplayedMonth(displayIndex, date);\n if (displayIndex === 0) {\n this.updateMonthsFromLeftSelection(normalizedDate);\n return;\n }\n\n this.rightMonthDate = normalizedDate;\n }\n\n private closePickers(): void {\n this.activeMonthPickerIndex = null;\n this.activeYearPickerIndex = null;\n }\n\n private addMonths(date: Date, offset: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + offset, 1);\n }\n\n private get maxNavigableDate(): Date {\n const today = this.cloneDate(new Date());\n const normalizedMax = this.normalizeBoundary(this.maxDate);\n\n if (normalizedMax && normalizedMax.getTime() < today.getTime()) {\n return normalizedMax;\n }\n\n return today;\n }\n\n private get maxNavigableMonthDate(): Date {\n return this.startOfMonth(this.maxNavigableDate);\n }\n\n private clampMonthToMaxNavigable(date: Date): Date {\n const normalizedDate = this.startOfMonth(date);\n\n return this.compareMonths(normalizedDate, this.maxNavigableMonthDate) > 0\n ? this.maxNavigableMonthDate\n : normalizedDate;\n }\n\n private clampLeftMonthDate(date: Date): Date {\n return this.clampMonthToMaxNavigable(date);\n }\n\n private clampRightMonthDate(date: Date): Date {\n const normalizedDate = this.startOfMonth(date);\n const clampedToMax =\n this.compareMonths(normalizedDate, this.maxNavigableMonthDate) > 0\n ? this.maxNavigableMonthDate\n : normalizedDate;\n\n return this.compareMonths(clampedToMax, this.leftMonthDate) < 0\n ? this.startOfMonth(this.leftMonthDate)\n : clampedToMax;\n }\n\n private clampDisplayedMonth(displayIndex: number, date: Date): Date {\n return displayIndex === 0\n ? this.clampLeftMonthDate(date)\n : this.clampRightMonthDate(date);\n }\n\n private compareMonths(left: Date, right: Date): number {\n const leftYearMonth = left.getFullYear() * 12 + left.getMonth();\n const rightYearMonth = right.getFullYear() * 12 + right.getMonth();\n\n return leftYearMonth - rightYearMonth;\n }\n\n private cloneDate(value: Date): Date {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private buildYearOptions(): number[] {\n const currentYear = this.maxNavigableDate.getFullYear();\n const minYear = currentYear - 100;\n const options: number[] = [];\n\n for (let year = currentYear; year >= minYear; year -= 1) {\n options.push(year);\n }\n\n return options;\n }\n\n private resolveDefaultRightMonth(leftMonthDate: Date): Date {\n const defaultRightMonth = this.addMonths(this.startOfMonth(leftMonthDate), 1);\n\n return this.compareMonths(defaultRightMonth, this.maxNavigableMonthDate) > 0\n ? this.maxNavigableMonthDate\n : defaultRightMonth;\n }\n\n private isDisplayedMonthSelectionDisabled(displayIndex: number, candidateMonth: Date): boolean {\n const normalizedCandidate = this.startOfMonth(candidateMonth);\n\n if (this.compareMonths(normalizedCandidate, this.maxNavigableMonthDate) > 0) {\n return true;\n }\n\n if (displayIndex === 1 && this.compareMonths(normalizedCandidate, this.leftMonthDate) < 0) {\n return true;\n }\n\n return false;\n }\n\n private updateMonthsFromLeftSelection(nextLeftMonthDate: Date): void {\n const previousGap = this.compareMonths(this.rightMonthDate, this.leftMonthDate);\n\n this.leftMonthDate = nextLeftMonthDate;\n\n if (previousGap <= 1 || this.compareMonths(this.rightMonthDate, this.leftMonthDate) < 0) {\n this.rightMonthDate = this.resolveDefaultRightMonth(this.leftMonthDate);\n return;\n }\n\n this.rightMonthDate = this.clampRightMonthDate(this.rightMonthDate);\n }\n}\n","<div\n class=\"tbk-date-picker-filterbar-calendar\"\n [class.tbk-date-picker-filterbar-calendar--mobile]=\"mobile\"\n [class.tbk-date-picker-filterbar-calendar--disabled]=\"disabled\"\n>\n <ng-container *ngIf=\"!mobile; else mobileCalendar\">\n <div class=\"tbk-date-picker-filterbar-calendar__header\">\n <button\n type=\"button\"\n class=\"tbk-date-picker-filterbar-calendar__nav\"\n [disabled]=\"disabled\"\n aria-label=\"Mes anterior\"\n (click)=\"prevMonth()\"\n >\n <tbk-icons\n [icon]=\"'chevronLeftDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"16\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n\n <div class=\"tbk-date-picker-filterbar-calendar__header-months\">\n <div\n *ngFor=\"let month of desktopDisplayedMonths; trackBy: trackByMonth\"\n class=\"tbk-date-picker-filterbar-calendar__month-header\"\n >\n <tbk-text\n class=\"tbk-date-picker-filterbar-calendar__month-title\"\n [children]=\"month.title\"\n [as]=\"'span'\"\n [color]=\"'Secondary'\"\n [size]=\"'font-size-400'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n [align]=\"'center'\"\n ></tbk-text>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"tbk-date-picker-filterbar-calendar__nav\"\n [disabled]=\"disabled || !canNavigateNext\"\n aria-label=\"Proximo mes\"\n (click)=\"nextMonth()\"\n >\n <tbk-icons\n [icon]=\"'chevronRightDatepicker'\"\n [color]=\"'secondary'\"\n [size]=\"16\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </div>\n\n <div class=\"tbk-date-picker-filterbar-calendar__months\">\n <section\n *ngFor=\"let month of desktopDisplayedMonths; trackBy: trackByMonth\"\n class=\"tbk-date-picker-filterbar-calendar__month\"\n role=\"group\"\n [attr.aria-label]=\"month.title\"\n >\n <div class=\"tbk-date-picker-filterbar-calendar__weekdays\" role=\"row\">\n <span\n *ngFor=\"let weekday of weekdayLabels\"\n class=\"tbk-date-picker-filterbar-calendar__weekday\"\n role=\"columnheader\"\n >\n <tbk-text\n [children]=\"weekday\"\n [as]=\"'span'\"\n [color]=\"'Secondary'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n </div>\n\n <div class=\"tbk-date-picker-filterbar-calendar__grid\" role=\"grid\" [attr.aria-label]=\"month.title\">\n <button\n *ngFor=\"let day of month.days; trackBy: trackByDay\"\n type=\"button\"\n class=\"tbk-date-picker-filterbar-calendar__day\"\n [ngClass]=\"{\n 'tbk-date-picker-filterbar-calendar__day--empty': !day.date,\n 'tbk-date-picker-filterbar-calendar__day--disabled': !!day.date && isDayDisabled(day),\n 'tbk-date-picker-filterbar-calendar__day--today': isToday(day),\n 'tbk-date-picker-filterbar-calendar__day--pending-start': isPendingStart(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-single': isSelectedSingle(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-start': isSelectedStart(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-end': isSelectedEnd(day),\n 'tbk-date-picker-filterbar-calendar__day--in-range': isInRange(day)\n }\"\n [disabled]=\"!day.date || isDayDisabled(day) || disabled\"\n [attr.aria-label]=\"getDayAriaLabel(day)\"\n [attr.aria-selected]=\"\n isPendingStart(day) ||\n isSelectedSingle(day) ||\n isSelectedStart(day) ||\n isSelectedEnd(day) ||\n isInRange(day)\n \"\n (click)=\"onDayClick(day)\"\n >\n <span class=\"tbk-date-picker-filterbar-calendar__day-bubble\">\n <tbk-text\n class=\"tbk-date-picker-filterbar-calendar__day-text\"\n [children]=\"day.label ? '' + day.label : ''\"\n [as]=\"'span'\"\n [color]=\"resolveDayTextColor(day)\"\n [size]=\"'font-size-350'\"\n [weight]=\"resolveDayTextWeight(day)\"\n [margin]=\"'0'\"\n [align]=\"'center'\"\n ></tbk-text>\n </span>\n </button>\n </div>\n </section>\n </div>\n </ng-container>\n\n <ng-template #mobileCalendar>\n <div class=\"tbk-date-picker-filterbar-calendar__months tbk-date-picker-filterbar-calendar__months--mobile\">\n <section\n *ngFor=\"let month of mobileDisplayedMonths; trackBy: trackByMonth\"\n class=\"tbk-date-picker-filterbar-calendar__month tbk-date-picker-filterbar-calendar__month--mobile\"\n role=\"group\"\n [attr.aria-label]=\"month.title\"\n [attr.data-month-key]=\"month.key\"\n >\n <div class=\"tbk-date-picker-filterbar-calendar__month-header\">\n <tbk-text\n class=\"tbk-date-picker-filterbar-calendar__month-title\"\n [children]=\"month.title\"\n [as]=\"'span'\"\n [color]=\"'Secondary'\"\n [size]=\"'font-size-400'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n [align]=\"'left'\"\n ></tbk-text>\n </div>\n\n <div class=\"tbk-date-picker-filterbar-calendar__weekdays\" role=\"row\">\n <span\n *ngFor=\"let weekday of weekdayLabels\"\n class=\"tbk-date-picker-filterbar-calendar__weekday\"\n role=\"columnheader\"\n >\n <tbk-text\n [children]=\"weekday\"\n [as]=\"'span'\"\n [color]=\"'Secondary'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n </div>\n\n <div class=\"tbk-date-picker-filterbar-calendar__grid\" role=\"grid\" [attr.aria-label]=\"month.title\">\n <button\n *ngFor=\"let day of month.days; trackBy: trackByDay\"\n type=\"button\"\n class=\"tbk-date-picker-filterbar-calendar__day\"\n [ngClass]=\"{\n 'tbk-date-picker-filterbar-calendar__day--empty': !day.date,\n 'tbk-date-picker-filterbar-calendar__day--disabled': !!day.date && isDayDisabled(day),\n 'tbk-date-picker-filterbar-calendar__day--today': isToday(day),\n 'tbk-date-picker-filterbar-calendar__day--pending-start': isPendingStart(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-single': isSelectedSingle(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-start': isSelectedStart(day),\n 'tbk-date-picker-filterbar-calendar__day--selected-end': isSelectedEnd(day),\n 'tbk-date-picker-filterbar-calendar__day--in-range': isInRange(day)\n }\"\n [disabled]=\"!day.date || isDayDisabled(day) || disabled\"\n [attr.aria-label]=\"getDayAriaLabel(day)\"\n [attr.aria-selected]=\"\n isPendingStart(day) ||\n isSelectedSingle(day) ||\n isSelectedStart(day) ||\n isSelectedEnd(day) ||\n isInRange(day)\n \"\n (click)=\"onDayClick(day)\"\n >\n <span class=\"tbk-date-picker-filterbar-calendar__day-bubble\">\n <tbk-text\n class=\"tbk-date-picker-filterbar-calendar__day-text\"\n [children]=\"day.label ? '' + day.label : ''\"\n [as]=\"'span'\"\n [color]=\"resolveDayTextColor(day)\"\n [size]=\"'font-size-350'\"\n [weight]=\"resolveDayTextWeight(day)\"\n [margin]=\"'0'\"\n [align]=\"'center'\"\n ></tbk-text>\n </span>\n </button>\n </div>\n </section>\n </div>\n </ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioComponent, ButtonRadioOption } from '../ButtonRadio/button-radio.component';\nimport { DatePickerMode } from '../DatePicker/date-picker.component';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\nimport { DatePickerFilterBarCalendarComponent } from './date-picker-filterbar-calendar.component';\n\nexport interface DatePickerFilterBarPreset {\n label: string;\n value: Date | [Date, Date] | null;\n}\n\nlet nextPresetRadioGroupId = 0;\n\n@Component({\n selector: 'tbk-date-picker-filterbar',\n standalone: true,\n imports: [\n ButtonRadioComponent,\n CommonModule,\n DatePickerFilterBarCalendarComponent,\n IconsComponent,\n TextComponent,\n ],\n templateUrl: './date-picker-filterbar.component.html',\n styleUrls: ['./date-picker-filterbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerFilterBarComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerFilterBarComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n private static readonly MOBILE_BREAKPOINT = 768;\n private static readonly DESKTOP_DROPDOWN_TARGET_WIDTH = 700;\n readonly customDateRangeTitle = 'Customizar datas';\n readonly manualDatePlaceholder = '00/00/0000';\n\n @ViewChild('triggerButton') triggerButton?: ElementRef<HTMLButtonElement>;\n @ViewChild('dropdownPanel') dropdownPanel?: ElementRef<HTMLElement>;\n\n @Input() label = 'Periodo';\n @Input() placeholder = 'Ultimos dois dias';\n @Input() disabled = false;\n @Input() modal = true;\n @Input() mode: DatePickerMode = 'single';\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() customDateRangePeriodYears: number | null = null;\n @Input() clearable = true;\n @Input() showApplyButton = false;\n @Input() closeOnSingleSelection = true;\n @Input() closeOnRangeComplete = true;\n @Input() closeOnPresetSelect = true;\n @Input() openAriaLabel = 'Abrir filtro de periodo';\n @Input() overlayAriaLabel = 'Filtro de periodo';\n @Input() presetsLabel = 'Periodos sugeridos';\n @Input() applyButtonLabel = 'Aplicar';\n @Input() clearButtonLabel = 'Limpar';\n @Input() presets: readonly DatePickerFilterBarPreset[] = [];\n private _value: Date | [Date, Date] | null = null;\n @Input()\n set value(nextValue: Date | [Date, Date] | null) {\n this.applyExternalValue(nextValue, false);\n }\n get value(): Date | [Date, Date] | null {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<Date | [Date, Date] | null>();\n @Output() openedChange = new EventEmitter<boolean>();\n\n isOpen = false;\n displayValue = 'Ultimos dois dias';\n draftValue: Date | [Date, Date] | null = null;\n manualDateRangeEnabled = false;\n manualStartInput = '';\n manualEndInput = '';\n activeManualInput: 'start' | 'end' | null = null;\n readonly presetRadioName = `tbk-date-picker-filterbar-presets-${nextPresetRadioGroupId++}`;\n get isMobileViewport(): boolean {\n if (typeof window === 'undefined') {\n return false;\n }\n return window.innerWidth <= DatePickerFilterBarComponent.MOBILE_BREAKPOINT;\n }\n dropdownAlignEnd = false;\n dropdownWidthPx: number | null = null;\n\n private onChange: (value: Date | [Date, Date] | null) => void = () => {};\n private onTouched: () => void = () => {};\n private lastFocusedElementBeforeOpen: HTMLElement | null = null;\n private savedBodyOverflow = '';\n private hiddenSiblings: Array<{\n element: HTMLElement;\n hadAriaHidden: boolean;\n previousAriaHidden: string | null;\n previousInert: boolean;\n }> = [];\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n this.syncDisplayValue();\n this.syncDraftValueToCommitted();\n }\n\n ngOnDestroy(): void {\n this.disableModalA11y();\n this.restoreBodyScroll();\n }\n\n writeValue(value: Date | [Date, Date] | null): void {\n this.applyExternalValue(value, false);\n }\n\n registerOnChange(fn: (value: Date | [Date, Date] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.close();\n }\n }\n\n open(trigger?: HTMLElement | null): void {\n if (this.disabled) return;\n\n this.lastFocusedElementBeforeOpen = trigger || (document.activeElement as HTMLElement | null);\n this.syncDraftValueToCommitted();\n this.setOpenState(true);\n if (this.usesModalPresentation) {\n if (this.isMobileViewport) {\n this.disableBodyScroll();\n }\n this.enableModalA11y();\n }\n this.scheduleDropdownPositionUpdate();\n }\n\n close(): void {\n this.setOpenState(false);\n this.dropdownAlignEnd = false;\n this.dropdownWidthPx = null;\n if (this.usesModalPresentation) {\n this.disableModalA11y();\n if (this.isMobileViewport) {\n this.restoreBodyScroll();\n }\n }\n this.syncDraftValueToCommitted();\n this.onTouched();\n setTimeout(() => this.lastFocusedElementBeforeOpen?.focus(), 0);\n }\n\n toggle(trigger?: HTMLElement | null): void {\n if (this.isOpen) {\n this.close();\n return;\n }\n this.open(trigger);\n }\n\n private getDefaultPresets(): DatePickerFilterBarPreset[] {\n const today = new Date();\n const subtractDays = (days: number): [Date, Date] => {\n const start = new Date(today.getFullYear(), today.getMonth(), today.getDate() - days);\n const end = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n return [start, end];\n };\n\n return [\n { label: 'Ultimos dois dias', value: subtractDays(1) },\n { label: 'Ultimos 30 dias', value: subtractDays(29) },\n { label: 'Ultimos 60 dias', value: subtractDays(59) },\n { label: 'Ultimos 90 dias', value: subtractDays(89) },\n ];\n }\n\n get resolvedPresets(): DatePickerFilterBarPreset[] {\n const activePresets = this.presets && this.presets.length > 0 ? this.presets : this.getDefaultPresets();\n const allPresets: DatePickerFilterBarPreset[] = [\n { label: 'Trazer resultados de todo o período', value: null },\n ...activePresets,\n ];\n return allPresets\n .map((preset) => {\n const label = `${preset.label ?? ''}`.trim();\n const normalizedValue = this.normalizeValue(preset.value);\n\n if (!label) {\n return null;\n }\n\n if (preset.value !== null && (!normalizedValue || !this.isValueWithinBounds(normalizedValue))) {\n return null;\n }\n\n return {\n label,\n value: normalizedValue,\n } satisfies DatePickerFilterBarPreset;\n })\n .filter((preset): preset is DatePickerFilterBarPreset => !!preset);\n }\n\n get shouldShowActions(): boolean {\n return this.showApplyButton;\n }\n\n get usesModalPresentation(): boolean {\n return this.modal || this.isMobileViewport;\n }\n\n get mobileHeaderTitle(): string {\n return 'Período';\n }\n\n get mobileHeaderSubtitle(): string {\n return `${this.displayValue ?? ''}`.trim();\n }\n\n get presetOptions(): ButtonRadioOption[] {\n return this.resolvedPresets.map((preset) => ({\n label: preset.label,\n value: this.buildPresetKey(preset),\n }));\n }\n\n get otherPresetOptions(): ButtonRadioOption[] {\n return this.resolvedPresets\n .filter((preset) => preset.value !== null)\n .map((preset) => ({\n label: preset.label,\n value: this.buildPresetKey(preset),\n }));\n }\n\n get allPeriodPresetOption(): ButtonRadioOption {\n const allPeriod = this.resolvedPresets.find((preset) => preset.value === null) || {\n label: 'Trazer resultados de todo o período',\n value: null,\n };\n return {\n label: allPeriod.label,\n value: this.buildPresetKey(allPeriod),\n };\n }\n\n get selectedPresetValue(): string | null {\n const matchedPreset = this.findMatchingPreset(this.draftValue);\n return matchedPreset ? this.buildPresetKey(matchedPreset) : null;\n }\n\n get canClear(): boolean {\n return this.draftValue !== null || this._value !== null;\n }\n\n get canApply(): boolean {\n return !this.areValuesEqual(this.draftValue, this._value);\n }\n\n get shouldShowManualDateRange(): boolean {\n return this.mode === 'range';\n }\n\n get calendarValue(): Date | [Date, Date] | null {\n if (!this.shouldUseManualDateRangePreview()) {\n return this.draftValue;\n }\n\n return this.resolveManualDateRangePreviewValue();\n }\n\n get customDateRangeDescription(): string {\n const periodLabel = this.resolveCustomDateRangePeriodLabel();\n return (\n 'Ao ativar essa op\\u00e7\\u00e3o, informe manualmente a data inicial e final dentro do ' +\n `per\\u00edodo de ${periodLabel}.`\n );\n }\n\n get manualDateRangeErrorMessage(): string {\n if (!this.shouldShowManualDateRange || !this.manualDateRangeEnabled) {\n return '';\n }\n\n const startValue = this.manualStartInput.trim();\n const endValue = this.manualEndInput.trim();\n\n if (!startValue && !endValue) {\n return '';\n }\n\n if (startValue.length === 10 && !this.parseManualDateInput(startValue)) {\n return 'Informe uma data inicial valida no formato dd/mm/aaaa.';\n }\n\n if (endValue.length === 10 && !this.parseManualDateInput(endValue)) {\n return 'Informe uma data final valida no formato dd/mm/aaaa.';\n }\n\n if (startValue.length !== 10 || endValue.length !== 10) {\n return '';\n }\n\n const startDate = this.parseManualDateInput(startValue);\n const endDate = this.parseManualDateInput(endValue);\n\n if (!startDate || !endDate) {\n return '';\n }\n\n if (startDate.getTime() > endDate.getTime()) {\n return 'A data inicial deve ser menor ou igual a data final.';\n }\n\n if (!this.isManualDateWithinBounds(startDate) || !this.isManualDateWithinBounds(endDate)) {\n return 'As datas digitadas devem respeitar os limites permitidos do calendario.';\n }\n\n return '';\n }\n\n onValueChange(value: Date | [Date, Date] | null): void {\n this.draftValue = this.normalizeValue(value);\n this.syncManualInputsFromValue(this.draftValue);\n\n if (this.showApplyButton) {\n return;\n }\n\n this.commitDraftValue(true);\n\n if (value instanceof Date) {\n if (this.closeOnSingleSelection) {\n this.close();\n }\n return;\n }\n\n if (this.isRangeComplete(this.draftValue) && this.closeOnRangeComplete) {\n this.close();\n }\n }\n\n selectPreset(preset: DatePickerFilterBarPreset): void {\n this.draftValue = this.normalizeValue(preset.value);\n this.syncManualInputsFromValue(this.draftValue);\n\n if (!this.showApplyButton) {\n this.commitDraftValue(true);\n\n if (this.closeOnPresetSelect) {\n this.close();\n }\n }\n }\n\n onPresetSelectionChange(selectedPresetKey: unknown): void {\n const matchedPreset = this.resolvedPresets.find(\n (preset) => this.buildPresetKey(preset) === selectedPresetKey,\n );\n\n if (!matchedPreset) {\n return;\n }\n\n this.selectPreset(matchedPreset);\n }\n\n clearSelection(): void {\n this.draftValue = null;\n this.syncManualInputsFromValue(this.draftValue);\n\n if (!this.showApplyButton) {\n this.commitDraftValue(true);\n }\n }\n\n toggleManualDateRange(): void {\n if (this.disabled || !this.shouldShowManualDateRange) {\n return;\n }\n\n this.manualDateRangeEnabled = !this.manualDateRangeEnabled;\n\n if (this.manualDateRangeEnabled) {\n this.syncManualInputsFromValue(this.draftValue);\n }\n }\n\n onManualStartInputChange(value: string): void {\n this.manualStartInput = this.formatManualDateInput(value);\n this.applyManualDateInputsIfPossible();\n }\n\n onManualEndInputChange(value: string): void {\n this.manualEndInput = this.formatManualDateInput(value);\n this.applyManualDateInputsIfPossible();\n }\n\n onManualInputFocus(field: 'start' | 'end', input: HTMLInputElement): void {\n this.activeManualInput = field;\n setTimeout(() => input.select(), 0);\n }\n\n onManualInputClick(input: HTMLInputElement): void {\n input.select();\n }\n\n onManualInputBlur(): void {\n setTimeout(() => {\n const activeElement = document.activeElement as HTMLElement | null;\n if (activeElement?.dataset['manualDateInput']) {\n return;\n }\n\n this.activeManualInput = null;\n }, 0);\n }\n\n onManualDateKeydown(event: KeyboardEvent): void {\n const navigationKeys = new Set([\n 'Backspace',\n 'Delete',\n 'Tab',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Enter',\n 'Escape',\n ]);\n\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (navigationKeys.has(event.key)) {\n return;\n }\n\n if (/^\\d$/.test(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n\n onManualDatePaste(event: ClipboardEvent, field: 'start' | 'end'): void {\n event.preventDefault();\n const pastedValue = event.clipboardData?.getData('text') ?? '';\n const normalizedValue = this.formatManualDateInput(pastedValue);\n\n if (field === 'start') {\n this.manualStartInput = normalizedValue;\n } else {\n this.manualEndInput = normalizedValue;\n }\n\n this.applyManualDateInputsIfPossible();\n }\n\n onCalendarDaySelect(date: Date): void {\n if (!this.manualDateRangeEnabled || !this.activeManualInput) {\n return;\n }\n\n const formattedDate = this.formatDate(date);\n\n if (this.activeManualInput === 'start') {\n this.manualStartInput = formattedDate;\n\n const endDate = this.parseManualDateInput(this.manualEndInput);\n if (endDate && date.getTime() > endDate.getTime()) {\n this.manualEndInput = formattedDate;\n }\n } else {\n this.manualEndInput = formattedDate;\n\n const startDate = this.parseManualDateInput(this.manualStartInput);\n if (startDate && date.getTime() < startDate.getTime()) {\n this.manualStartInput = formattedDate;\n }\n }\n\n this.applyManualDateInputsIfPossible();\n }\n\n applySelection(): void {\n this.commitDraftValue(true);\n this.close();\n }\n\n @HostListener('document:keydown', ['$event'])\n onGlobalKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (event.key === 'Tab' && this.isOpen && this.usesModalPresentation) {\n this.trapFocus(event);\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) return;\n\n const target = event.target as Node | null;\n if (!target) return;\n\n if (!this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n this.scheduleDropdownPositionUpdate();\n }\n\n private formatDisplayValue(value: Date | [Date, Date] | null): string {\n if (!value) {\n return this.placeholder?.trim() || 'Ultimos dois dias';\n }\n\n const matchedPresetLabel = this.findMatchingPresetLabel(value);\n if (matchedPresetLabel) {\n return matchedPresetLabel;\n }\n\n if (value instanceof Date) {\n return this.formatDate(value);\n }\n\n const [start, end] = value;\n return `${this.formatDate(start)} - ${this.formatDate(end)}`;\n }\n\n private formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = String(date.getFullYear());\n return `${day}/${month}/${year}`;\n }\n\n trackByPresetLabel(_index: number, preset: DatePickerFilterBarPreset): string {\n return preset.label;\n }\n\n isPresetActive(preset: DatePickerFilterBarPreset): boolean {\n return this.areValuesEqual(this.draftValue, this.normalizeValue(preset.value));\n }\n\n private commitDraftValue(emit: boolean): void {\n this._value = this.normalizeValue(this.draftValue);\n this.syncDisplayValue();\n this.syncDraftValueToCommitted();\n\n if (!emit) {\n return;\n }\n\n this.onChange(this._value);\n this.valueChange.emit(this._value);\n }\n\n private applyExternalValue(\n nextValue: Date | [Date, Date] | null,\n emit: boolean,\n ): void {\n this._value = this.normalizeValue(nextValue);\n this.syncDisplayValue();\n this.syncDraftValueToCommitted();\n\n if (!emit) {\n return;\n }\n\n this.onChange(this._value);\n this.valueChange.emit(this._value);\n }\n\n private normalizeValue(\n value: Date | [Date, Date] | null,\n ): Date | [Date, Date] | null {\n if (value instanceof Date) {\n return this.cloneDate(value);\n }\n\n if (Array.isArray(value)) {\n const [start, end] = value;\n if (start instanceof Date && end instanceof Date) {\n return [this.cloneDate(start), this.cloneDate(end)];\n }\n }\n\n return null;\n }\n\n private syncDraftValueToCommitted(): void {\n this.draftValue = this.normalizeValue(this._value);\n this.syncManualInputsFromValue(this.draftValue);\n }\n\n private cloneDate(value: Date): Date {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private syncDisplayValue(): void {\n this.displayValue = this.formatDisplayValue(this._value);\n }\n\n private syncManualInputsFromValue(value: Date | [Date, Date] | null): void {\n if (value instanceof Date) {\n const formattedDate = this.formatDate(value);\n this.manualStartInput = formattedDate;\n this.manualEndInput = formattedDate;\n return;\n }\n\n if (this.isRangeComplete(value)) {\n this.manualStartInput = this.formatDate(value[0]);\n this.manualEndInput = this.formatDate(value[1]);\n return;\n }\n\n this.manualStartInput = '';\n this.manualEndInput = '';\n }\n\n private setOpenState(nextValue: boolean): void {\n if (this.isOpen === nextValue) {\n return;\n }\n\n this.isOpen = nextValue;\n this.openedChange.emit(nextValue);\n this.changeDetectorRef.markForCheck();\n }\n\n private isRangeComplete(value: Date | [Date, Date] | null): value is [Date, Date] {\n return Array.isArray(value) && value[0] instanceof Date && value[1] instanceof Date;\n }\n\n private findMatchingPresetLabel(value: Date | [Date, Date]): string | null {\n return this.findMatchingPreset(value)?.label ?? null;\n }\n\n private findMatchingPreset(\n value: Date | [Date, Date] | null,\n ): DatePickerFilterBarPreset | null {\n const normalizedTarget = this.normalizeValue(value);\n\n return (\n this.resolvedPresets.find((item) =>\n this.areValuesEqual(this.normalizeValue(item.value), normalizedTarget),\n ) ?? null\n );\n }\n\n private buildPresetKey(preset: DatePickerFilterBarPreset): string {\n return `${preset.label}::${this.serializeValue(preset.value)}`;\n }\n\n private serializeValue(value: Date | [Date, Date] | null): string {\n if (value === null) {\n return 'all';\n }\n if (value instanceof Date) {\n return `date:${this.cloneDate(value).getTime()}`;\n }\n\n const [start, end] = value;\n const normalizedStart = this.cloneDate(start);\n const normalizedEnd = this.cloneDate(end);\n\n return `range:${normalizedStart.getTime()}:${normalizedEnd.getTime()}`;\n }\n\n private areValuesEqual(\n left: Date | [Date, Date] | null,\n right: Date | [Date, Date] | null,\n ): boolean {\n if (left === null || right === null) {\n return left === right;\n }\n\n if (left instanceof Date && right instanceof Date) {\n return left.getTime() === right.getTime();\n }\n\n if (this.isRangeComplete(left) && this.isRangeComplete(right)) {\n return left[0].getTime() === right[0].getTime() && left[1].getTime() === right[1].getTime();\n }\n\n return false;\n }\n\n private isValueWithinBounds(value: Date | [Date, Date]): boolean {\n const normalizedMin = this.normalizeBoundary(this.minDate);\n const normalizedMax = this.normalizeBoundary(this.maxDate);\n const dates = value instanceof Date ? [value] : value;\n\n return dates.every((date) => {\n const normalized = this.cloneDate(date);\n\n if (normalizedMin && normalized < normalizedMin) {\n return false;\n }\n\n if (normalizedMax && normalized > normalizedMax) {\n return false;\n }\n\n return true;\n });\n }\n\n private applyManualDateInputsIfPossible(): void {\n if (!this.manualDateRangeEnabled || !this.shouldShowManualDateRange) {\n return;\n }\n\n const startValue = this.manualStartInput.trim();\n const endValue = this.manualEndInput.trim();\n\n if (!startValue && !endValue) {\n this.draftValue = null;\n if (!this.showApplyButton) {\n this.commitDraftValue(true);\n }\n return;\n }\n\n if (startValue.length !== 10 || endValue.length !== 10) {\n return;\n }\n\n const startDate = this.parseManualDateInput(startValue);\n const endDate = this.parseManualDateInput(endValue);\n\n if (!startDate || !endDate) {\n return;\n }\n\n if (startDate.getTime() > endDate.getTime()) {\n return;\n }\n\n if (!this.isManualDateWithinBounds(startDate) || !this.isManualDateWithinBounds(endDate)) {\n return;\n }\n\n this.draftValue = [startDate, endDate];\n\n if (!this.showApplyButton) {\n this.commitDraftValue(true);\n }\n }\n\n private formatManualDateInput(value: string): string {\n const digits = `${value ?? ''}`\n .replace(/\\D/g, '')\n .slice(0, 8);\n\n if (digits.length <= 2) {\n return digits;\n }\n\n if (digits.length <= 4) {\n return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n }\n\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n }\n\n private parseManualDateInput(value: string): Date | null {\n const normalizedValue = this.formatManualDateInput(value);\n\n if (normalizedValue.length !== 10) {\n return null;\n }\n\n const [day, month, year] = normalizedValue.split('/');\n const dayValue = Number(day);\n const monthValue = Number(month);\n const yearValue = Number(year);\n\n if (\n !Number.isInteger(dayValue) ||\n !Number.isInteger(monthValue) ||\n !Number.isInteger(yearValue) ||\n monthValue < 1 ||\n monthValue > 12 ||\n dayValue < 1\n ) {\n return null;\n }\n\n const parsedDate = new Date(yearValue, monthValue - 1, dayValue);\n\n if (\n parsedDate.getFullYear() !== yearValue ||\n parsedDate.getMonth() !== monthValue - 1 ||\n parsedDate.getDate() !== dayValue\n ) {\n return null;\n }\n\n return this.cloneDate(parsedDate);\n }\n\n private isManualDateWithinBounds(date: Date): boolean {\n const normalizedDate = this.cloneDate(date);\n const normalizedMin = this.normalizeBoundary(this.minDate);\n const normalizedMax = this.resolveManualMaxDate();\n\n if (normalizedMin && normalizedDate < normalizedMin) {\n return false;\n }\n\n if (normalizedMax && normalizedDate > normalizedMax) {\n return false;\n }\n\n return true;\n }\n\n private resolveManualMaxDate(): Date | null {\n const today = this.cloneDate(new Date());\n const normalizedMax = this.normalizeBoundary(this.maxDate);\n\n if (normalizedMax && normalizedMax.getTime() < today.getTime()) {\n return normalizedMax;\n }\n\n return today;\n }\n\n private shouldUseManualDateRangePreview(): boolean {\n return this.shouldShowManualDateRange && this.manualDateRangeEnabled;\n }\n\n private resolveManualDateRangePreviewValue(): Date | [Date, Date] | null {\n const startValue = this.manualStartInput.trim();\n const endValue = this.manualEndInput.trim();\n\n if (!startValue && !endValue) {\n return null;\n }\n\n const startDate = this.resolveManualPreviewDate(startValue);\n const endDate = this.resolveManualPreviewDate(endValue);\n\n if (startDate && endDate) {\n return startDate.getTime() <= endDate.getTime()\n ? [startDate, endDate]\n : [startDate, startDate];\n }\n\n if (startDate) {\n return [startDate, startDate];\n }\n\n if (endDate) {\n return [endDate, endDate];\n }\n\n return null;\n }\n\n private resolveManualPreviewDate(value: string): Date | null {\n if (value.length !== 10) {\n return null;\n }\n\n const parsedDate = this.parseManualDateInput(value);\n\n if (!parsedDate || !this.isManualDateWithinBounds(parsedDate)) {\n return null;\n }\n\n return parsedDate;\n }\n\n private resolveCustomDateRangePeriodLabel(): string {\n const explicitPeriodYears = this.normalizeCustomDateRangePeriodYears(\n this.customDateRangePeriodYears,\n );\n\n if (explicitPeriodYears !== null) {\n return this.formatYearsLabel(explicitPeriodYears);\n }\n\n const derivedPeriodYears = this.deriveCustomDateRangePeriodYears();\n\n if (derivedPeriodYears !== null) {\n return this.formatYearsLabel(derivedPeriodYears);\n }\n\n return 'x anos';\n }\n\n private deriveCustomDateRangePeriodYears(): number | null {\n const normalizedMin = this.normalizeBoundary(this.minDate);\n const normalizedMax = this.resolveManualMaxDate();\n\n if (!normalizedMin || !normalizedMax || normalizedMin.getTime() > normalizedMax.getTime()) {\n return null;\n }\n\n const millisecondsPerYear = 1000 * 60 * 60 * 24 * 365.25;\n const diffInYears = Math.ceil(\n (normalizedMax.getTime() - normalizedMin.getTime()) / millisecondsPerYear,\n );\n\n return Math.max(1, diffInYears);\n }\n\n private normalizeCustomDateRangePeriodYears(value: number | null): number | null {\n if (!Number.isInteger(value) || (value ?? 0) <= 0) {\n return null;\n }\n\n return value;\n }\n\n private formatYearsLabel(value: number): string {\n return value === 1 ? '1 ano' : `${value} anos`;\n }\n\n private normalizeBoundary(value: Date | null): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return this.cloneDate(value);\n }\n\n private disableBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n if (!this.savedBodyOverflow) {\n this.savedBodyOverflow = document.body.style.overflow;\n }\n document.body.style.overflow = 'hidden';\n }\n\n private restoreBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n document.body.style.overflow = this.savedBodyOverflow;\n this.savedBodyOverflow = '';\n }\n\n private enableModalA11y(): void {\n if (typeof document === 'undefined') return;\n if (this.hiddenSiblings.length) return;\n\n const host = this.elementRef.nativeElement;\n let current: HTMLElement | null = host;\n\n while (current?.parentElement) {\n const parentElement = current.parentElement as HTMLElement;\n const siblings = Array.from(parentElement.children).filter(\n (child) => child !== current\n ) as HTMLElement[];\n\n for (const sibling of siblings) {\n const hadAriaHidden = sibling.hasAttribute('aria-hidden');\n const previousAriaHidden = sibling.getAttribute('aria-hidden');\n const previousInert = !!(sibling as HTMLElement & { inert?: boolean }).inert;\n\n this.hiddenSiblings.push({\n element: sibling,\n hadAriaHidden,\n previousAriaHidden,\n previousInert,\n });\n\n sibling.setAttribute('aria-hidden', 'true');\n (sibling as HTMLElement & { inert?: boolean }).inert = true;\n }\n\n if (parentElement === document.body) break;\n current = parentElement;\n }\n }\n\n private disableModalA11y(): void {\n for (const entry of this.hiddenSiblings) {\n if (entry.hadAriaHidden) {\n if (entry.previousAriaHidden == null) {\n entry.element.setAttribute('aria-hidden', 'true');\n } else {\n entry.element.setAttribute('aria-hidden', entry.previousAriaHidden);\n }\n } else {\n entry.element.removeAttribute('aria-hidden');\n }\n\n (entry.element as HTMLElement & { inert?: boolean }).inert = entry.previousInert;\n }\n\n this.hiddenSiblings = [];\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusables = this.getFocusableElements();\n if (!focusables.length) {\n event.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey) {\n if (!active || active === first) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n\n if (!active || active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n const selectors = [\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[href]',\n '[tabindex]:not([tabindex=\"-1\"])',\n ];\n\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>(selectors.join(','))\n ).filter((el) => el.offsetParent !== null || el === document.activeElement);\n }\n\n\n private scheduleDropdownPositionUpdate(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!this.isOpen || this.isMobileViewport) {\n this.dropdownAlignEnd = false;\n this.dropdownWidthPx = null;\n this.changeDetectorRef.markForCheck();\n return;\n }\n\n setTimeout(() => this.updateDropdownPosition(), 0);\n }\n\n private updateDropdownPosition(): void {\n if (typeof window === 'undefined' || this.isMobileViewport) {\n this.dropdownAlignEnd = false;\n this.dropdownWidthPx = null;\n return;\n }\n\n const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportPadding = 16;\n const maxWidth = Math.max(0, window.innerWidth - viewportPadding * 2);\n const preferredWidth = Math.max(\n hostRect.width,\n this.dropdownPanel?.nativeElement.scrollWidth ??\n DatePickerFilterBarComponent.DESKTOP_DROPDOWN_TARGET_WIDTH,\n DatePickerFilterBarComponent.DESKTOP_DROPDOWN_TARGET_WIDTH,\n );\n const nextWidth = Math.min(preferredWidth, maxWidth);\n const overflowsRight = hostRect.left + nextWidth > window.innerWidth - viewportPadding;\n\n this.dropdownWidthPx = nextWidth > 0 ? nextWidth : null;\n this.dropdownAlignEnd = overflowsRight;\n this.changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"tbk-date-picker-filterbar\"\n [ngClass]=\"{\n 'tbk-date-picker-filterbar--open': isOpen,\n 'tbk-date-picker-filterbar--disabled': disabled,\n 'tbk-date-picker-filterbar--mobile': isMobileViewport\n }\"\n>\n <button\n #triggerButton\n type=\"button\"\n class=\"tbk-date-picker-filterbar__bar\"\n [disabled]=\"disabled\"\n (click)=\"toggle($any($event.currentTarget))\"\n [attr.aria-label]=\"openAriaLabel\"\n [attr.aria-expanded]=\"isOpen\"\n >\n <tbk-icons\n class=\"tbk-date-picker-filterbar__icon\"\n [icon]=\"'calendar-regular.svg'\"\n [color]=\"'blue'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <span class=\"tbk-date-picker-filterbar__texts\">\n <tbk-text\n class=\"tbk-date-picker-filterbar__title\"\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <tbk-text\n class=\"tbk-date-picker-filterbar__value\"\n [children]=\"displayValue\"\n [color]=\"'Primary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n </button>\n\n <div\n *ngIf=\"isOpen && usesModalPresentation\"\n class=\"tbk-date-picker-filterbar__backdrop\"\n (click)=\"close()\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n *ngIf=\"isOpen\"\n #dropdownPanel\n class=\"tbk-date-picker-filterbar__dropdown\"\n [class.tbk-date-picker-filterbar__dropdown--align-end]=\"dropdownAlignEnd\"\n [style.width.px]=\"dropdownWidthPx\"\n role=\"dialog\"\n [attr.aria-modal]=\"usesModalPresentation ? 'true' : 'false'\"\n [attr.aria-label]=\"overlayAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n >\n <div *ngIf=\"isMobileViewport\" class=\"tbk-date-picker-filterbar__mobile-header\">\n <div class=\"tbk-date-picker-filterbar__mobile-header-row\">\n <tbk-text\n class=\"tbk-date-picker-filterbar__mobile-title\"\n [children]=\"mobileHeaderTitle\"\n [color]=\"'Primary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-400'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n [align]=\"'left'\"\n ></tbk-text>\n\n <button\n type=\"button\"\n class=\"tbk-date-picker-filterbar__mobile-close\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'Fechar filtro de periodo'\"\n (click)=\"close()\"\n >\n <tbk-icons\n [icon]=\"'xmark-regular-full.svg'\"\n [color]=\"'primary'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </div>\n </div>\n\n <div class=\"tbk-date-picker-filterbar__content\">\n <tbk-date-picker-filterbar-calendar\n class=\"tbk-date-picker-filterbar__calendar\"\n [mode]=\"mode\"\n [mobile]=\"isMobileViewport\"\n [disabled]=\"disabled\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [value]=\"calendarValue\"\n (valueChange)=\"onValueChange($event)\"\n (daySelect)=\"onCalendarDaySelect($event)\"\n ></tbk-date-picker-filterbar-calendar>\n\n <div\n *ngIf=\"resolvedPresets.length\"\n class=\"tbk-date-picker-filterbar__presets\"\n role=\"group\"\n [attr.aria-label]=\"presetsLabel\"\n >\n <tbk-button-radio\n *ngIf=\"otherPresetOptions.length\"\n class=\"tbk-date-picker-filterbar__presets-radio tbk-date-picker-filterbar__presets-radio--others\"\n [name]=\"presetRadioName\"\n [options]=\"otherPresetOptions\"\n [selectedValue]=\"selectedPresetValue\"\n [disabled]=\"disabled\"\n [orientation]=\"'horizontal'\"\n [variant]=\"'default'\"\n [colorVariant]=\"'primary'\"\n (selectedValueChange)=\"onPresetSelectionChange($event)\"\n ></tbk-button-radio>\n\n <tbk-button-radio\n class=\"tbk-date-picker-filterbar__presets-radio tbk-date-picker-filterbar__presets-radio--all-period\"\n [name]=\"presetRadioName\"\n [options]=\"[allPeriodPresetOption]\"\n [selectedValue]=\"selectedPresetValue\"\n [disabled]=\"disabled\"\n [orientation]=\"'horizontal'\"\n [variant]=\"'default'\"\n [colorVariant]=\"'primary'\"\n (selectedValueChange)=\"onPresetSelectionChange($event)\"\n ></tbk-button-radio>\n </div>\n\n <div *ngIf=\"shouldShowActions\" class=\"tbk-date-picker-filterbar__actions\">\n <button\n *ngIf=\"showApplyButton\"\n type=\"button\"\n class=\"tbk-date-picker-filterbar__action tbk-date-picker-filterbar__action--primary\"\n [disabled]=\"!canApply\"\n (click)=\"applySelection()\"\n >\n {{ applyButtonLabel }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { CHART_COLOR_FAMILIES, ChartColorFamily } from '../Charts/chart-theme';\n\n/** Cor de uma fatia — uma família da paleta oficial de charts. */\nexport type DonutChartColor = ChartColorFamily;\n\nexport const DONUT_CHART_COLOR_OPTIONS: readonly DonutChartColor[] = CHART_COLOR_FAMILIES;\n\n/** Variante do gráfico: anel (donut) ou pizza cheia (pie). */\nexport type DonutChartVariant = 'donut' | 'pie';\n\n/** Posição da legenda relativa ao anel. */\nexport type DonutChartLegendPosition = 'right' | 'bottom';\n\n/** Tom do indicador de tendência exibido na legenda. */\nexport type DonutChartTrendTone = 'success' | 'critical' | 'warning' | 'neutral';\n\nexport interface DonutChartTrend {\n /** Texto da tendência (ex.: \"100%\"). */\n readonly label: string;\n /** Direção da seta. Default: 'up'. */\n readonly direction?: 'up' | 'down';\n /** Tom (cor) do indicador. Default: 'success'. */\n readonly tone?: DonutChartTrendTone;\n}\n\n/** Uma fatia do donut. */\nexport interface DonutChartItem {\n /** Identificador estável. Gerado quando ausente. */\n readonly id?: string;\n /** Rótulo da fatia (ex.: \"Online\"). */\n readonly label: string;\n /** Valor numérico (define a proporção da fatia). */\n readonly value: number;\n /** Texto formatado exibido na legenda (ex.: \"$178\"). Default: `value`. */\n readonly displayValue?: string;\n /** Cor da fatia (paleta de charts). Default: ciclo por índice. */\n readonly color?: DonutChartColor;\n /** Indicador de tendência opcional ao lado do valor. */\n readonly trend?: DonutChartTrend;\n}\n\n/** Item normalizado internamente (id, cor e texto resolvidos). */\nexport interface NormalizedDonutChartItem extends DonutChartItem {\n readonly id: string;\n readonly color: DonutChartColor;\n readonly display: string;\n}\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport {\n DONUT_CHART_COLOR_OPTIONS,\n DonutChartItem,\n DonutChartVariant,\n NormalizedDonutChartItem,\n} from './donut-chart.types';\n\nexport interface BuildDonutChartOptionParams {\n readonly items: readonly DonutChartItem[];\n readonly variant: DonutChartVariant;\n readonly theme: ChartThemeTokens;\n}\n\n/** Normaliza itens resolvendo id, cor (ciclo por índice) e texto exibido. */\nexport function normalizeDonutChartItems(\n items: readonly DonutChartItem[],\n): readonly NormalizedDonutChartItem[] {\n return items.map((item, index) => {\n const safeValue = Number.isFinite(item.value) ? Math.max(0, item.value) : 0;\n const display =\n item.displayValue !== undefined && item.displayValue !== null\n ? `${item.displayValue}`\n : `${safeValue}`;\n return {\n ...item,\n value: safeValue,\n id: item.id ?? `slice-${index}`,\n color: item.color ?? DONUT_CHART_COLOR_OPTIONS[index % DONUT_CHART_COLOR_OPTIONS.length],\n display,\n };\n });\n}\n\n/**\n * Monta o `EChartsOption` do donut a partir dos itens e do tema.\n * Função pura (sem DOM) — testável isoladamente.\n */\nexport function buildDonutChartOption(params: BuildDonutChartOptionParams): EChartsOption {\n const { variant, theme } = params;\n const items = normalizeDonutChartItems(params.items);\n const innerRadius = variant === 'donut' ? '62%' : '0%';\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n tooltip: {\n trigger: 'item',\n backgroundColor: theme.surface,\n borderColor: theme.gridLine,\n textStyle: { color: theme.textPrimary, fontFamily: theme.fontFamily },\n },\n series: [\n {\n type: 'pie',\n radius: [innerRadius, '92%'],\n center: ['50%', '50%'],\n avoidLabelOverlap: false,\n label: { show: false },\n labelLine: { show: false },\n itemStyle: {\n borderColor: theme.surface,\n borderWidth: 2,\n },\n emphasis: { scale: true, scaleSize: 4 },\n data: items.map((item) => ({\n name: item.label,\n value: item.value,\n itemStyle: { color: theme.colorByName[item.color] },\n emphasis: {\n itemStyle: {\n color: theme.colorHoverByName?.[item.color] ?? theme.colorByName[item.color],\n },\n },\n })),\n },\n ],\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport type { ECElementEvent } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { IconColor, IconToken, IconsComponent } from '../Icons/icons.component';\nimport { TextColor, TextComponent } from '../Text/text.component';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport { buildDonutChartOption, normalizeDonutChartItems } from './donut-chart.options';\nimport {\n DonutChartItem,\n DonutChartLegendPosition,\n DonutChartTrendTone,\n DonutChartVariant,\n NormalizedDonutChartItem,\n} from './donut-chart.types';\n\nexport type {\n DonutChartColor,\n DonutChartItem,\n DonutChartLegendPosition,\n DonutChartTrend,\n DonutChartTrendTone,\n DonutChartVariant,\n NormalizedDonutChartItem,\n} from './donut-chart.types';\nexport { DONUT_CHART_COLOR_OPTIONS } from './donut-chart.types';\n\nconst TREND_ICON_COLOR: Record<DonutChartTrendTone, IconColor> = {\n success: 'success',\n critical: 'critical',\n warning: 'warning',\n neutral: 'gray',\n};\n\nconst TREND_TEXT_COLOR: Record<DonutChartTrendTone, TextColor> = {\n success: 'Success',\n critical: 'Critical',\n warning: 'Warning',\n neutral: 'Gray',\n};\n\n/**\n * Gráfico de rosca (donut) — wrapper do Design System sobre o ECharts\n * (`ngx-echarts`). O anel é renderizado pelo ECharts (cores via tokens em\n * `chart-theme`) e a legenda lateral usa primitivos do DS (`tbk-text`,\n * `tbk-icons`). Nenhuma cor é hardcoded; nenhum token novo é criado.\n */\n@Component({\n selector: 'tbk-donut-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective, TextComponent, IconsComponent],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-donut-chart-host--legend-bottom]': \"legendPosition() === 'bottom'\",\n },\n})\nexport class DonutChartComponent {\n /** Tema lido dos tokens uma vez (os `:root` vars são estáticos). */\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n // ── Conteúdo ───────────────────────────────────────────────────────────────\n /** Fatias exibidas. */\n readonly items = input<readonly DonutChartItem[]>([]);\n\n // ── Aparência ─────────────────────────────────────────────────────────────────\n readonly variant = input<DonutChartVariant>('donut');\n readonly showLegend = input(true, { transform: booleanAttribute });\n readonly legendPosition = input<DonutChartLegendPosition>('right');\n /** Texto opcional no centro do anel (ex.: total). */\n readonly centerValue = input<string>('');\n readonly centerLabel = input<string>('');\n /** Tamanho do anel em pixels (quadrado). */\n readonly size = input<number, unknown>(180, { transform: numberAttribute });\n\n // ── i18n / a11y ────────────────────────────────────────────────────────────────\n readonly ariaLabel = input<string>('Gráfico de rosca');\n readonly emptyLabel = input<string>('Sem dados para exibir');\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly sliceClicked = output<NormalizedDonutChartItem>();\n\n // ── Config do ECharts ───────────────────────────────────────────────────────────\n readonly initOpts = { renderer: 'svg' as const };\n\n readonly hasItems = computed(() => (this.items() ?? []).length > 0);\n readonly hasCenter = computed(\n () => (this.centerValue() ?? '').trim().length > 0 || (this.centerLabel() ?? '').trim().length > 0,\n );\n\n readonly normalizedItems = computed(() => normalizeDonutChartItems(this.items() ?? []));\n\n readonly option = computed(() =>\n buildDonutChartOption({\n items: this.items() ?? [],\n variant: this.variant() ?? 'donut',\n theme: this.theme,\n }),\n );\n\n // ── Helpers de tendência ─────────────────────────────────────────────────────────\n trendIcon(item: NormalizedDonutChartItem): IconToken {\n return item.trend?.direction === 'down' ? 'chevronDownSolidFull' : 'chevronUpSolidFull';\n }\n\n trendIconColor(item: NormalizedDonutChartItem): IconColor {\n return TREND_ICON_COLOR[item.trend?.tone ?? 'success'] ?? 'success';\n }\n\n trendTextColor(item: NormalizedDonutChartItem): TextColor {\n return TREND_TEXT_COLOR[item.trend?.tone ?? 'success'] ?? 'Success';\n }\n\n\n trackItem(_index: number, item: NormalizedDonutChartItem): string {\n return item.id;\n }\n\n onChartClick(event: ECElementEvent): void {\n const item = this.normalizedItems()[event.dataIndex];\n if (item) {\n this.sliceClicked.emit(item);\n }\n }\n}\n","@if (hasItems()) {\n <div class=\"tbk-donut-chart\">\n <div class=\"tbk-donut-chart__ring-wrap\">\n <div\n echarts\n class=\"tbk-donut-chart__ring\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.width.px]=\"size()\"\n [style.height.px]=\"size()\"\n (chartClick)=\"onChartClick($event)\"\n ></div>\n\n @if (hasCenter()) {\n <div class=\"tbk-donut-chart__center\" aria-hidden=\"true\">\n @if (centerValue()) {\n <tbk-text\n as=\"span\"\n [children]=\"centerValue()\"\n color=\"Primary\"\n size=\"font-size-500\"\n weight=\"font-weight-bold\"\n ></tbk-text>\n }\n @if (centerLabel()) {\n <tbk-text as=\"span\" [children]=\"centerLabel()\" color=\"Gray\" size=\"font-size-300\"></tbk-text>\n }\n </div>\n }\n </div>\n\n @if (showLegend()) {\n <ul class=\"tbk-donut-chart__legend\">\n @for (item of normalizedItems(); track trackItem($index, item)) {\n <li class=\"tbk-donut-chart__legend-item\">\n <span\n class=\"tbk-donut-chart__dot\"\n [ngClass]=\"'tbk-donut-chart__dot--' + item.color\"\n aria-hidden=\"true\"\n ></span>\n\n <span class=\"tbk-donut-chart__legend-label\">{{ item.label }}:</span>\n <span class=\"tbk-donut-chart__legend-value\">{{ item.display }}</span>\n\n @if (item.trend) {\n <span class=\"tbk-donut-chart__trend\">\n <tbk-icons\n [name]=\"trendIcon(item)\"\n [color]=\"trendIconColor(item)\"\n [size]=\"12\"\n [decorative]=\"true\"\n ></tbk-icons>\n <tbk-text\n as=\"span\"\n [children]=\"item.trend.label\"\n [color]=\"trendTextColor(item)\"\n size=\"font-size-300\"\n weight=\"font-weight-medium\"\n ></tbk-text>\n </span>\n }\n </li>\n }\n </ul>\n }\n </div>\n} @else {\n <div class=\"tbk-donut-chart__empty\">\n <tbk-text as=\"span\" [children]=\"emptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type GravameInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-gravame-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './gravame-input.component.html',\n styleUrl: './gravame-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GravameInputComponent),\n multi: true,\n },\n ],\n})\nexport class GravameInputComponent implements ControlValueAccessor {\n @Input() label = 'Gravame';\n @Input() placeholder = 'Digite o gravame';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: GravameInputStatus = 'Default';\n @Input() disabled = false;\n @Input() maxLength = 11;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-gravame-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n this.value = this.sanitize(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: string): void {\n const normalized = this.sanitize(value);\n this.value = normalized;\n if (this.customErrorValidator) {\n this.internalErrorMessage = this.customErrorValidator(normalized) || '';\n if (this.internalErrorMessage) {\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(normalized);\n if (custom) {\n this.internalErrorMessage = custom;\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n return;\n }\n }\n\n this.internalErrorMessage = '';\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^\\d$/.test(event.key) || this.value.length >= this.maxLength) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const normalized = this.sanitize(`${this.value}${pasted}`);\n this.value = normalized;\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onBlur(): void {\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private sanitize(value: string): string {\n return value.replace(/\\D/g, '').slice(0, this.maxLength);\n }\n}\n","<div\n class=\"tbk-gravame-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-gravame-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-gravame-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-gravame-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-gravame-input--disabled]=\"isDisabled\"\n [class.tbk-gravame-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-gravame-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-gravame-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-gravame-input__controls\">\n <div class=\"tbk-gravame-input__field\">\n <input\n class=\"tbk-gravame-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Gravame input'\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-gravame-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-gravame-input__helper\"\n [class.tbk-gravame-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type PercentInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-percent-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './percent-input.component.html',\n styleUrl: './percent-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PercentInputComponent),\n multi: true,\n },\n ],\n})\nexport class PercentInputComponent implements ControlValueAccessor {\n @Input() label = 'Percentual';\n @Input() placeholder = 'Ex: 0.2%';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: PercentInputStatus = 'Default';\n @Input() disabled = false;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-percent-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n const normalized = this.normalizePercent(value ?? '');\n this.value = normalized ? `${normalized}%` : '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(rawValue: string): void {\n const normalized = this.normalizePercent(rawValue);\n const formatted = normalized ? `${normalized}%` : '';\n this.value = formatted;\n this.internalErrorMessage = '';\n this.onChange(formatted);\n this.valueChange.emit(formatted);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^[\\d.,]$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const normalized = this.normalizePercent(pasted);\n const formatted = normalized ? `${normalized}%` : '';\n this.value = formatted;\n this.onChange(formatted);\n this.valueChange.emit(formatted);\n }\n\n onBlur(): void {\n this.validateValue();\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private normalizePercent(value: string): string {\n const stripped = value.replace('%', '').replace(',', '.').replace(/[^0-9.]/g, '');\n if (!stripped) {\n return '';\n }\n\n const [intPart, ...rest] = stripped.split('.');\n const decimal = rest.join('');\n if (decimal.length > 0) {\n return `${intPart || '0'}.${decimal}`;\n }\n\n return intPart;\n }\n\n private validateValue(): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n return;\n }\n\n if (!this.value) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(this.value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(this.value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-percent-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-percent-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-percent-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-percent-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-percent-input--disabled]=\"isDisabled\"\n [class.tbk-percent-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-percent-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-percent-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-percent-input__controls\">\n <div class=\"tbk-percent-input__field\">\n <input\n class=\"tbk-percent-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n inputmode=\"decimal\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Percent input'\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-percent-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-percent-input__helper\"\n [class.tbk-percent-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChildren,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TextComponent } from '../Text/text.component';\n\nexport type PinfieldStatus =\n | 'Default'\n | 'Error'\n | 'Focus'\n | 'Selected'\n | 'Disabled'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\nexport type PinfieldInputType = 'numeric' | 'alphanumeric';\n\n@Component({\n selector: 'tbk-pinfield',\n standalone: true,\n imports: [CommonModule, TextComponent],\n templateUrl: './pinfield.component.html',\n styleUrls: ['./pinfield.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PinfieldComponent),\n multi: true,\n },\n ],\n})\nexport class PinfieldComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChildren('cellInput')\n private cellInputs!: QueryList<ElementRef<HTMLInputElement>>;\n\n @Input() label = 'Codigo';\n @Input() required = false;\n @Input() disabled = false;\n @Input() status: PinfieldStatus = 'Default';\n @Input() helperText = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = 'Pinfield';\n @Input() id = '';\n @Input() inputType: PinfieldInputType = 'numeric';\n @Input() autoFocus = false;\n @Input() hideCode = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n private _length = 6;\n @Input()\n set length(value: number) {\n const next = this.clampLength(value);\n if (next === this._length) {\n return;\n }\n\n this._length = next;\n this.applyExternalValue(this._value, false);\n this.emitModel(false);\n }\n get length(): number {\n return this._length;\n }\n\n private _value = '';\n @Input()\n set value(next: string) {\n this.applyExternalValue(next, false);\n }\n get value(): string {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() completed = new EventEmitter<string>();\n\n cells: string[] = this.buildEmptyCells(this._length);\n focusedIndex = -1;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-pinfield-${Math.random().toString(36).slice(2, 10)}`;\n\n ngAfterViewInit(): void {\n if (!this.autoFocus || this.isInteractionBlocked) {\n return;\n }\n\n setTimeout(() => this.focusCell(0), 0);\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get resolvedId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get helperId(): string {\n return `${this.resolvedId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this._value.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.loading || this.status === 'Disabled';\n }\n\n get isInteractionBlocked(): boolean {\n return this.isDisabled || this.readOnly;\n }\n\n get effectiveShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n (this.showHelperText && !!this.helperText)\n );\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n\n return this.helperText;\n }\n\n get isComplete(): boolean {\n return this.cells.every((cell) => !!cell);\n }\n\n get resolvedStatus(): PinfieldStatus {\n if (this.loading) {\n return 'Loading';\n }\n\n if (this.readOnly) {\n return 'Readonly';\n }\n\n if (this.disabled || this.status === 'Disabled') {\n return 'Disabled';\n }\n\n if (this.activeErrorMessage || this.status === 'Error') {\n return 'Error';\n }\n\n if (this.activeSuccessMessage) {\n return 'Success';\n }\n\n if (this.activeEmptyMessage) {\n return 'Empty';\n }\n\n if (this.isComplete && this.status === 'Default') {\n return 'Selected';\n }\n\n return this.status;\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Warning' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n if (this.resolvedStatus === 'Empty') return 'Warning';\n return 'Secondary';\n }\n\n get cellIndexes(): number[] {\n return Array.from({ length: this.length }, (_, index) => index);\n }\n\n writeValue(value: string | null): void {\n this.applyExternalValue(value ?? '', false);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onCellFocus(index: number): void {\n this.focusedIndex = index;\n }\n\n onCellBlur(): void {\n this.focusedIndex = -1;\n this.onTouched();\n }\n\n onCellInput(index: number, event: Event): void {\n if (this.isInteractionBlocked) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const chars = this.extractValidChars(raw);\n\n if (chars.length === 0) {\n this.cells[index] = '';\n this.emitModel(true);\n return;\n }\n\n let cursor = index;\n for (const char of chars) {\n if (cursor >= this.length) {\n break;\n }\n this.cells[cursor] = char;\n cursor += 1;\n }\n\n this.emitModel(true);\n\n if (cursor < this.length) {\n this.focusCell(cursor);\n } else {\n this.blurCell(this.length - 1);\n }\n }\n\n onCellKeyDown(index: number, event: KeyboardEvent): void {\n if (this.isInteractionBlocked) {\n return;\n }\n\n const key = event.key;\n\n if (key === 'Backspace') {\n event.preventDefault();\n if (this.cells[index]) {\n this.cells[index] = '';\n this.emitModel(true);\n return;\n }\n\n const prevIndex = Math.max(0, index - 1);\n this.cells[prevIndex] = '';\n this.emitModel(true);\n this.focusCell(prevIndex);\n return;\n }\n\n if (key === 'Delete') {\n event.preventDefault();\n this.cells[index] = '';\n this.emitModel(true);\n return;\n }\n\n if (key === 'ArrowLeft') {\n event.preventDefault();\n this.focusCell(Math.max(0, index - 1));\n return;\n }\n\n if (key === 'ArrowRight') {\n event.preventDefault();\n this.focusCell(Math.min(this.length - 1, index + 1));\n return;\n }\n\n if (key.length === 1 && !this.isValidCharacter(key)) {\n event.preventDefault();\n }\n }\n\n onCellPaste(index: number, event: ClipboardEvent): void {\n if (this.isInteractionBlocked) {\n return;\n }\n\n event.preventDefault();\n const pastedText = event.clipboardData?.getData('text') ?? '';\n const chars = this.extractValidChars(pastedText);\n\n if (chars.length === 0) {\n return;\n }\n\n let cursor = index;\n for (const char of chars) {\n if (cursor >= this.length) {\n break;\n }\n this.cells[cursor] = char;\n cursor += 1;\n }\n\n this.emitModel(true);\n\n if (cursor < this.length) {\n this.focusCell(cursor);\n } else {\n this.blurCell(this.length - 1);\n }\n }\n\n private emitModel(emit: boolean): void {\n const nextValue = this.cells.join('');\n this._value = nextValue;\n this.validateValue(nextValue);\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n\n if (nextValue.length === this.length && this.isComplete) {\n this.completed.emit(nextValue);\n }\n }\n\n private applyExternalValue(nextValue: string, emit: boolean): void {\n const normalized = this.normalizeValue(nextValue);\n this._value = normalized;\n this.cells = this.buildCellsFromValue(normalized);\n this.validateValue(normalized);\n\n if (emit) {\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n }\n\n private normalizeValue(value: string): string {\n const safeValue = this.extractValidChars(value).join('');\n return safeValue.slice(0, this.length);\n }\n\n private buildCellsFromValue(value: string): string[] {\n const result = this.buildEmptyCells(this.length);\n const chars = value.split('');\n\n for (let i = 0; i < this.length; i += 1) {\n result[i] = chars[i] ?? '';\n }\n\n return result;\n }\n\n private buildEmptyCells(size: number): string[] {\n return Array.from({ length: size }, () => '');\n }\n\n private extractValidChars(text: string): string[] {\n const value = text ?? '';\n const chars = value.split('');\n const filtered = chars.filter((char) => this.isValidCharacter(char));\n\n if (this.inputType === 'alphanumeric') {\n return filtered.map((char) => char.toUpperCase());\n }\n\n return filtered;\n }\n\n private isValidCharacter(char: string): boolean {\n if (this.inputType === 'numeric') {\n return /^\\d$/.test(char);\n }\n\n return /^[A-Za-z0-9]$/.test(char);\n }\n\n private focusCell(index: number): void {\n const input = this.getCell(index);\n input?.focus();\n input?.select();\n }\n\n private blurCell(index: number): void {\n const input = this.getCell(index);\n input?.blur();\n }\n\n private getCell(index: number): HTMLInputElement | null {\n const ref = this.cellInputs?.get(index);\n return ref?.nativeElement ?? null;\n }\n\n private clampLength(value: number): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n return 6;\n }\n\n return Math.min(12, Math.max(1, Math.trunc(parsed)));\n }\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\r\n","<div\n class=\"tbk-pinfield\"\n [style.width]=\"resolvedWidth\"\n [ngClass]=\"[\n 'tbk-pinfield--status-' + resolvedStatus.toLowerCase(),\n isDisabled ? 'tbk-pinfield--disabled' : '',\n readOnly ? 'tbk-pinfield--readonly' : '',\n focusedIndex >= 0 ? 'tbk-pinfield--focused' : ''\n ]\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label class=\"tbk-pinfield__label\" [attr.id]=\"resolvedId + '-label'\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <span *ngIf=\"required\" class=\"tbk-pinfield__label-required\" aria-hidden=\"true\">*</span>\n </label>\n\n <div class=\"tbk-pinfield__controls\">\n <div\n class=\"tbk-pinfield__cells\"\n role=\"group\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabel ? null : resolvedId + '-label'\"\n [attr.aria-describedby]=\"effectiveShowHelperText ? helperId : null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-readonly]=\"readOnly || null\"\n >\n <input\n #cellInput\n class=\"tbk-pinfield__cell\"\n *ngFor=\"let index of cellIndexes\"\n [attr.type]=\"hideCode ? 'password' : 'text'\"\n [value]=\"cells[index]\"\n [disabled]=\"isDisabled\"\n [readOnly]=\"readOnly\"\n [attr.inputmode]=\"inputType === 'numeric' ? 'numeric' : 'text'\"\n [attr.maxlength]=\"1\"\n [attr.aria-label]=\"(ariaLabel || label || 'Pinfield') + ' ' + (index + 1)\"\n autocomplete=\"one-time-code\"\n (focus)=\"onCellFocus(index)\"\n (blur)=\"onCellBlur()\"\n (input)=\"onCellInput(index, $event)\"\n (keydown)=\"onCellKeyDown(index, $event)\"\n (paste)=\"onCellPaste(index, $event)\"\n />\n </div>\n\n <div\n class=\"tbk-pinfield__helper\"\n [id]=\"helperId\"\n [ngClass]=\"{ 'tbk-pinfield__helper--error': resolvedStatus === 'Error' }\"\n *ngIf=\"effectiveShowHelperText\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n </div>\n</div>\n\r\n\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type PlacaInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-placa-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './placa-input.component.html',\n styleUrl: './placa-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PlacaInputComponent),\n multi: true,\n },\n ],\n})\nexport class PlacaInputComponent implements ControlValueAccessor {\n @Input() label = 'Placa';\n @Input() placeholder = 'Digite a placa';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: PlacaInputStatus = 'Default';\n @Input() disabled = false;\n @Input() maxLength = 7;\n @Input() minLengthRequired = 7;\n @Input() validateOnBlur = true;\n @Input() invalidMessage = 'Informe um número de placa válido';\n @Input() minLengthMessage = 'Informe um número de placa válido';\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-placa-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n this.value = this.sanitizePlaca(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: string): void {\n const normalized = this.sanitizePlaca(value);\n this.value = normalized;\n if (this.internalErrorMessage) {\n this.internalErrorMessage = '';\n }\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^[a-zA-Z0-9]$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n if (this.value.length >= this.maxLength) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const normalized = this.sanitizePlaca(`${this.value}${pasted}`);\n this.value = normalized;\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onBlur(): void {\n this.validateValue();\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private sanitizePlaca(value: string): string {\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '').slice(0, this.maxLength);\n }\n\n private validateValue(): void {\n if (!this.validateOnBlur || this.disabled || this.externalErrorMessage?.trim()) {\n return;\n }\n\n if (!this.value) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.minLengthRequired > 0 && this.value.length < this.minLengthRequired) {\n this.internalErrorMessage = this.minLengthMessage;\n return;\n }\n\n if (/^\\d+$/.test(this.value) && /^(\\d)\\1+$/.test(this.value)) {\n this.internalErrorMessage = this.invalidMessage;\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(this.value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(this.value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-placa-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-placa-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-placa-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-placa-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-placa-input--disabled]=\"isDisabled\"\n [class.tbk-placa-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-placa-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-placa-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-placa-input__controls\">\n <div class=\"tbk-placa-input__field\">\n <input\n class=\"tbk-placa-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Placa input'\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-placa-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-placa-input__helper\"\n [class.tbk-placa-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type RenavamInputStatus = 'Default' | 'Error' | 'Focus' | 'Selected';\n\n@Component({\n selector: 'tbk-renavam-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './renavam-input.component.html',\n styleUrl: './renavam-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RenavamInputComponent),\n multi: true,\n },\n ],\n})\nexport class RenavamInputComponent implements ControlValueAccessor {\n @Input() label = 'Renavam';\n @Input() placeholder = 'Digite o renavam';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: RenavamInputStatus = 'Default';\n @Input() disabled = false;\n @Input() maxLength = 11;\n @Input() minLengthRequired = 11;\n @Input() validateOnBlur = true;\n @Input() invalidMessage = 'Informe um número de gravame válido';\n @Input() minLengthMessage = 'Informe um número de gravame válido';\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-renavam-input-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get resolvedStatusClass(): string {\n if (this.activeErrorMessage) {\n return 'error';\n }\n\n const normalized = this.status.toLowerCase();\n return normalized === 'select' ? 'selected' : normalized;\n }\n\n get shouldShowHelperText(): boolean {\n return this.showHelperText || !!this.activeErrorMessage;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n writeValue(value: string | null): void {\n this.value = this.sanitize(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: string): void {\n const normalized = this.sanitize(value);\n this.value = normalized;\n if (this.internalErrorMessage) {\n this.internalErrorMessage = '';\n }\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n ];\n\n if (allowedKeys.includes(event.key) || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (!/^\\d$/.test(event.key) || this.value.length >= this.maxLength) {\n event.preventDefault();\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const normalized = this.sanitize(`${this.value}${pasted}`);\n this.value = normalized;\n this.onChange(normalized);\n this.valueChange.emit(normalized);\n }\n\n onBlur(): void {\n this.validateValue();\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n this.focused.emit();\n }\n\n private sanitize(value: string): string {\n return value.replace(/\\D/g, '').slice(0, this.maxLength);\n }\n\n private validateValue(): void {\n if (!this.validateOnBlur || this.disabled || this.externalErrorMessage?.trim()) {\n return;\n }\n\n if (!this.value) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.minLengthRequired > 0 && this.value.length < this.minLengthRequired) {\n this.internalErrorMessage = this.minLengthMessage;\n return;\n }\n\n if (/^(\\d)\\1+$/.test(this.value)) {\n this.internalErrorMessage = this.invalidMessage;\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(this.value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator(this.value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-renavam-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-renavam-input--status-error]=\"resolvedStatusClass === 'error'\"\n [class.tbk-renavam-input--status-focus]=\"resolvedStatusClass === 'focus'\"\n [class.tbk-renavam-input--status-selected]=\"resolvedStatusClass === 'selected'\"\n [class.tbk-renavam-input--disabled]=\"isDisabled\"\n [class.tbk-renavam-input--has-value]=\"value && value.trim().length > 0\"\n>\n <label class=\"tbk-renavam-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-renavam-input__label-required\">*</span>\n }\n </label>\n\n <div class=\"tbk-renavam-input__controls\">\n <div class=\"tbk-renavam-input__field\">\n <input\n class=\"tbk-renavam-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Renavam input'\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatusClass === 'error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [disabled]=\"isDisabled\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-renavam-input__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-renavam-input__helper\"\n [class.tbk-renavam-input__helper--error]=\"resolvedStatusClass === 'error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"resolvedStatusClass === 'error' ? 'Critical' : 'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type SearchStatus =\n | 'Default'\n | 'Error'\n | 'Auxiliar'\n | 'Focus'\n | 'Selected'\n | 'Disabled'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\n\n@Component({\n selector: 'tbk-search',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchComponent),\n multi: true,\n },\n ],\n})\nexport class SearchComponent implements ControlValueAccessor {\n @Input() label = 'Label';\n @Input() placeholder = 'Placeholder';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() type = 'text';\n @Input() status: SearchStatus = 'Default';\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n\n @Input() showHelperText = false;\n @Input() validateOnBlur = false;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n value = '';\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly cleared = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n private readonly fallbackId = `tbk-search-${Math.random().toString(36).slice(2, 10)}`;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get helperId(): string {\n return `${this.resolvedInputId}-helper`;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.resolvedStatus === 'Disabled' || this.loading;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this.value?.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get resolvedStatus(): SearchStatus {\n if (this.loading) return 'Loading';\n if (this.readOnly) return 'Readonly';\n if (this.activeErrorMessage) return 'Error';\n if (this.activeSuccessMessage) return 'Success';\n if (this.activeEmptyMessage) return 'Empty';\n return this.status;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n this.showHelperText ||\n this.status === 'Auxiliar'\n );\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Warning' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n if (this.resolvedStatus === 'Empty') return 'Warning';\n return 'Secondary';\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.validateValue(this.value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: string): void {\n if (this.isDisabled || this.readOnly) {\n return;\n }\n\n this.value = value;\n if (!this.validateOnBlur) {\n this.validateValue(value);\n }\n\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n if (this.validateOnBlur) {\n this.validateValue(this.value);\n }\n\n this.onTouched();\n }\n\n clear(): void {\n if (this.isDisabled || this.readOnly) {\n return;\n }\n\n this.value = '';\n this.validateValue(this.value);\n this.onChange('');\n this.onTouched();\n this.valueChange.emit('');\n this.cleared.emit();\n }\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n\r\n","<div\n class=\"tbk-search\"\n [ngClass]=\"[\n 'tbk-search--status-' + resolvedStatus.toLowerCase(),\n disabled ? 'tbk-search--disabled' : ''\n ]\"\n [style.width]=\"resolvedWidth\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label class=\"tbk-search__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <span *ngIf=\"required\" class=\"tbk-search__label-required\" aria-hidden=\"true\">*</span>\n </label>\n\n <div class=\"tbk-search__controls\">\n <div class=\"tbk-search__field\">\n <input\n class=\"tbk-search__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Search input'\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [attr.aria-readonly]=\"readOnly || null\"\n [disabled]=\"isDisabled\"\n [readOnly]=\"readOnly\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (blur)=\"onBlur()\"\n />\n <tbk-icons\n *ngIf=\"!isDisabled && !value && resolvedStatus !== 'Loading' && resolvedStatus !== 'Success'\"\n class=\"tbk-search__icon\"\n name=\"magnifyingGlassSolid\"\n [color]=\"'secondary'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <button\n *ngIf=\"!isDisabled && !readOnly && value\"\n type=\"button\"\n class=\"tbk-search__clear\"\n (click)=\"clear()\"\n aria-label=\"Limpar busca\"\n >\n <tbk-icons\n class=\"tbk-search__icon\"\n name=\"xmarkRegularFull\"\n [color]=\"'secondary'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n <tbk-icons\n *ngIf=\"disabled || resolvedStatus === 'Disabled'\"\n class=\"tbk-search__lock\"\n name=\"lockRegular\"\n [color]=\"'disabled'\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <tbk-icons\n *ngIf=\"resolvedStatus === 'Loading'\"\n class=\"tbk-search__status-icon\"\n name=\"spinnerSolidFull\"\n color=\"blue\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <tbk-icons\n *ngIf=\"resolvedStatus === 'Success'\"\n class=\"tbk-search__status-icon\"\n name=\"checkFormSectionStepper\"\n color=\"success\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </div>\n\n <div\n [id]=\"helperId\"\n class=\"tbk-search__helper\"\n [ngClass]=\"{ 'tbk-search__helper--error': resolvedStatus === 'Error' }\"\n *ngIf=\"shouldShowHelperText\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n </div>\n</div>\n\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type SelectStatus =\n | 'Default'\n | 'Error'\n | 'Focus'\n | 'Selected'\n | 'Disabled'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'tbk-select',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent implements ControlValueAccessor {\n @Input() label = 'Label';\n @Input() placeholder = 'Selecione';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: SelectStatus = 'Default';\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n @Input() emptyText = 'Nenhum resultado encontrado';\n @Input() options: SelectOption[] = [];\n\n /** Mensagem de erro injetada externamente */\n @Input() externalErrorMessage = '';\n /** Validador customizado (único) */\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n /** Array de validadores customizados */\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n @Input() value = '';\n isOpen = false;\n highlightedIndex = -1;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n\n private readonly fallbackId = `tbk-select-${Math.random()\n .toString(36)\n .slice(2, 10)}`;\n\n constructor(private readonly hostRef: ElementRef<HTMLElement>) {}\n\n // ─── IDs ─────────────────────────────────────────────────────────────────────\n\n get labelId(): string {\n return `${this.resolvedId}-label`;\n }\n\n get resolvedId(): string {\n const trimmed = String(this.id ?? '').trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get triggerId(): string {\n return `${this.resolvedId}-trigger`;\n }\n\n get panelId(): string {\n return `${this.resolvedId}-panel`;\n }\n\n get helperId(): string {\n return `${this.resolvedId}-helper`;\n }\n\n get activeOptionId(): string | null {\n return this.highlightedIndex >= 0\n ? `${this.panelId}-option-${this.highlightedIndex}`\n : null;\n }\n\n get resolvedWidth(): string {\n const next = typeof this.width === 'string' ? this.width.trim() : '';\n return next ? next : '100%';\n }\n\n // ─── Computed getters ────────────────────────────────────────────────────────\n\n get selectedLabel(): string {\n return (this.options ?? []).find((opt) => opt?.value === this.value)?.label ?? '';\n }\n\n get displayLabel(): string {\n return this.selectedLabel || (this.placeholder ?? 'Selecione');\n }\n\n get hasValue(): boolean {\n return !!this.selectedLabel;\n }\n\n get activeErrorMessage(): string {\n const external = String(this.externalErrorMessage ?? '').trim();\n return external ? external : this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return String(this.successMessage ?? '').trim();\n }\n\n get activeEmptyMessage(): string {\n if (this.hasValue) {\n return '';\n }\n\n return String(this.emptyMessage ?? '').trim();\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.loading || this.status === 'Disabled';\n }\n\n get isInteractionBlocked(): boolean {\n return this.disabled || this.readOnly;\n }\n\n get resolvedStatus(): SelectStatus {\n if (this.loading) return 'Loading';\n if (this.readOnly) return 'Readonly';\n if (this.disabled || this.status === 'Disabled') return 'Disabled';\n if (this.activeErrorMessage) return 'Error';\n if (this.activeSuccessMessage) return 'Success';\n if (this.activeEmptyMessage) return 'Empty';\n if (this.hasValue && this.status === 'Default') return 'Selected';\n return this.status ?? 'Default';\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n return this.helperText ?? '';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n !!this.helperText\n );\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Warning' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n if (this.resolvedStatus === 'Empty') return 'Warning';\n return 'Secondary';\n }\n\n // ─── ControlValueAccessor ────────────────────────────────────────────────────\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.validateValue(this.value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.closePanel();\n }\n }\n\n // ─── Output ──────────────────────────────────────────────────────────────────\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly optionChange = new EventEmitter<SelectOption | null>();\n\n // ─── Interaction ─────────────────────────────────────────────────────────────\n\n toggleOpen(): void {\n if (this.isDisabled || this.readOnly) return;\n if (this.isOpen) {\n this.closePanel();\n } else {\n this.isOpen = true;\n this.highlightedIndex = this.getSelectedIndex();\n }\n }\n\n onOptionMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onOptionClick(value: string): void {\n if (this.isDisabled || this.readOnly) return;\n const selectedOption = (this.options ?? []).find((opt) => opt?.value === value) ?? null;\n if (selectedOption?.disabled) return;\n\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n this.optionChange.emit(selectedOption);\n this.validateValue(value);\n this.closePanel();\n }\n\n onFieldBlur(): void {\n this.onTouched();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled || this.readOnly) return;\n\n const len = (this.options ?? []).length;\n\n if ((event.key === 'Enter' || event.key === ' ') && !this.isOpen) {\n event.preventDefault();\n this.toggleOpen();\n return;\n }\n\n if (!this.isOpen) return;\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault();\n this.closePanel();\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n if (len > 0) {\n this.highlightedIndex = this.findNextEnabledIndex(1);\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (len > 0) {\n this.highlightedIndex = this.findNextEnabledIndex(-1);\n }\n break;\n\n case 'Enter': {\n event.preventDefault();\n const opt = (this.options ?? [])[this.highlightedIndex];\n if (opt && !opt.disabled) {\n this.onOptionClick(opt.value);\n }\n break;\n }\n\n case 'Tab':\n this.closePanel();\n break;\n }\n }\n\n isSelected(value: string): boolean {\n return this.value === value;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) return;\n const host = this.hostRef.nativeElement;\n const target = event.target as Node | null;\n if (target && host.contains(target)) return;\n this.closePanel();\n }\n\n // ─── Private ─────────────────────────────────────────────────────────────────\n\n private closePanel(): void {\n this.isOpen = false;\n this.highlightedIndex = -1;\n }\n\n private getSelectedIndex(): number {\n if (!this.value) {\n return this.findFirstEnabledIndex();\n }\n const idx = (this.options ?? []).findIndex((opt) => opt?.value === this.value);\n if (idx >= 0 && !(this.options ?? [])[idx]?.disabled) {\n return idx;\n }\n\n return this.findFirstEnabledIndex();\n }\n\n private findFirstEnabledIndex(): number {\n return (this.options ?? []).findIndex((opt) => !opt?.disabled);\n }\n\n private findNextEnabledIndex(direction: 1 | -1): number {\n const list = this.options ?? [];\n if (list.length === 0) {\n return -1;\n }\n\n let nextIndex = this.highlightedIndex;\n for (let attempt = 0; attempt < list.length; attempt += 1) {\n nextIndex = (nextIndex + direction + list.length) % list.length;\n if (!list[nextIndex]?.disabled) {\n return nextIndex;\n }\n }\n\n return -1;\n }\n\n private validateValue(value: string): void {\n if (this.disabled || String(this.externalErrorMessage ?? '').trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const msg = this.customErrorValidator(value);\n this.internalErrorMessage = msg ?? '';\n if (this.internalErrorMessage) return;\n }\n\n for (const validator of this.customErrorValidators ?? []) {\n const msg = validator?.(value);\n if (msg) {\n this.internalErrorMessage = msg;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-select\"\n [class.tbk-select--status-error]=\"resolvedStatus === 'Error'\"\n [class.tbk-select--status-focus]=\"resolvedStatus === 'Focus'\"\n [class.tbk-select--status-selected]=\"resolvedStatus === 'Selected'\"\n [class.tbk-select--status-disabled]=\"resolvedStatus === 'Disabled'\"\n [class.tbk-select--status-success]=\"resolvedStatus === 'Success'\"\n [class.tbk-select--status-loading]=\"resolvedStatus === 'Loading'\"\n [class.tbk-select--status-empty]=\"resolvedStatus === 'Empty'\"\n [class.tbk-select--readonly]=\"resolvedStatus === 'Readonly'\"\n [class.tbk-select--disabled]=\"isDisabled\"\n [class.tbk-select--open]=\"isOpen\"\n [style.width]=\"resolvedWidth\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label\n class=\"tbk-select__label\"\n [id]=\"labelId\"\n [attr.for]=\"triggerId\"\n >\n <tbk-text\n [children]=\"label\"\n color=\"Secondary\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-select__label-required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n <div class=\"tbk-select__controls\">\n <div class=\"tbk-select__field-wrapper\">\n <button\n type=\"button\"\n [id]=\"triggerId\"\n [name]=\"name || null\"\n class=\"tbk-select__field\"\n role=\"combobox\"\n [disabled]=\"isDisabled\"\n [attr.aria-labelledby]=\"ariaLabel ? null : labelId\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-readonly]=\"readOnly || null\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-activedescendant]=\"activeOptionId\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n (click)=\"toggleOpen()\"\n (blur)=\"onFieldBlur()\"\n (keydown)=\"onKeydown($event)\"\n >\n <tbk-text\n class=\"tbk-select__value\"\n [children]=\"displayLabel\"\n [color]=\"hasValue ? 'Secondary' : 'Gray'\"\n as=\"span\"\n size=\"font-size-350\"\n weight=\"font-weight-regular\"\n margin=\"0\"\n [truncate]=\"true\"\n ></tbk-text>\n\n @if (resolvedStatus === 'Loading') {\n <tbk-icons\n class=\"tbk-select__icon\"\n name=\"spinnerSolidFull\"\n color=\"blue\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else if (resolvedStatus === 'Success') {\n <tbk-icons\n class=\"tbk-select__icon\"\n name=\"checkFormSectionStepper\"\n color=\"success\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else if (isDisabled) {\n <tbk-icons\n class=\"tbk-select__icon\"\n name=\"lockRegular\"\n color=\"disabled\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else {\n <tbk-icons\n class=\"tbk-select__icon\"\n [class.tbk-select__icon--open]=\"isOpen\"\n name=\"chevronDownSolidFull\"\n color=\"secondary\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </button>\n\n @if (isOpen && !isDisabled && !readOnly) {\n <div\n [id]=\"panelId\"\n class=\"tbk-select__panel\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"labelId\"\n >\n @for (opt of options; track opt.value; let i = $index) {\n <div\n [id]=\"panelId + '-option-' + i\"\n class=\"tbk-select__option\"\n role=\"option\"\n [class.tbk-select__option--active]=\"highlightedIndex === i\"\n [class.tbk-select__option--selected]=\"isSelected(opt.value)\"\n [class.tbk-select__option--disabled]=\"opt.disabled\"\n [attr.aria-selected]=\"isSelected(opt.value)\"\n [attr.aria-disabled]=\"opt.disabled || null\"\n (mousedown)=\"onOptionMouseDown($event)\"\n (click)=\"onOptionClick(opt.value)\"\n >\n <tbk-text\n [children]=\"opt.label\"\n [color]=\"opt.disabled ? 'Gray' : isSelected(opt.value) ? 'Primary' : 'Secondary'\"\n as=\"span\"\n size=\"font-size-350\"\n [weight]=\"isSelected(opt.value) ? 'font-weight-medium' : 'font-weight-regular'\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n\n @if (options.length === 0) {\n <div class=\"tbk-select__empty\" role=\"option\" aria-selected=\"false\">\n <tbk-text\n [children]=\"emptyText\"\n color=\"Gray\"\n as=\"span\"\n size=\"font-size-350\"\n weight=\"font-weight-regular\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n </div>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n class=\"tbk-select__helper\"\n [class.tbk-select__helper--error]=\"resolvedStatus === 'Error'\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-medium\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\n/**\n * Status do TextArea.\n * Prefira usar `disabled: true` ao invés de `status = 'Disabled'`.\n */\nexport type TextAreaStatus =\n | 'Default'\n | 'Error'\n | 'Auxiliar'\n | 'Focus'\n | 'Selected'\n | 'Disabled'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\n\n@Component({\n selector: 'tbk-text-area',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './text-area.component.html',\n styleUrl: './text-area.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true,\n },\n ],\n})\nexport class TextAreaComponent implements ControlValueAccessor {\n @Input() label = 'Label';\n @Input() placeholder = 'Placeholder';\n @Input() id = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: TextAreaStatus = 'Default';\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n @Input() showHelperText = false;\n @Input() validateOnBlur = false;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n @Input() value = '';\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly focused = new EventEmitter<void>();\n @Output() readonly blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n\n private readonly fallbackId = `tbk-text-area-${Math.random()\n .toString(36)\n .slice(2, 10)}`;\n\n get resolvedId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get helperId(): string {\n return `${this.resolvedId}-helper`;\n }\n\n /** `true` quando o campo está efetivamente desabilitado (via input ou status) */\n get isDisabled(): boolean {\n return this.disabled || this.resolvedStatus === 'Disabled' || this.loading;\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n return external ? external : this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this.value?.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get resolvedStatus(): TextAreaStatus {\n if (this.loading) return 'Loading';\n if (this.readOnly) return 'Readonly';\n if (this.activeErrorMessage) return 'Error';\n if (this.activeSuccessMessage) return 'Success';\n if (this.activeEmptyMessage) return 'Empty';\n return this.status;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n this.showHelperText ||\n this.status === 'Auxiliar'\n );\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Warning' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n if (this.resolvedStatus === 'Empty') return 'Warning';\n return 'Secondary';\n }\n\n // ─── ControlValueAccessor ────────────────────────────────────────────────────\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.validateValue(this.value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // ─── Event handlers ──────────────────────────────────────────────────────────\n\n onInput(value: string): void {\n if (this.isDisabled || this.readOnly) {\n return;\n }\n\n this.value = value;\n if (!this.validateOnBlur) {\n this.validateValue(value);\n }\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n if (this.loading) {\n return;\n }\n\n if (this.validateOnBlur) {\n this.validateValue(this.value);\n }\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n if (this.loading) {\n return;\n }\n\n this.focused.emit();\n }\n\n // ─── Private ─────────────────────────────────────────────────────────────────\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const msg = this.customErrorValidator(value);\n this.internalErrorMessage = msg ?? '';\n if (this.internalErrorMessage) return;\n }\n\n for (const validator of this.customErrorValidators) {\n const msg = validator?.(value);\n if (msg) {\n this.internalErrorMessage = msg;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-text-area\"\n [class.tbk-text-area--status-error]=\"resolvedStatus === 'Error'\"\n [class.tbk-text-area--status-focus]=\"resolvedStatus === 'Focus'\"\n [class.tbk-text-area--status-selected]=\"resolvedStatus === 'Selected'\"\n [class.tbk-text-area--status-auxiliar]=\"resolvedStatus === 'Auxiliar'\"\n [class.tbk-text-area--status-disabled]=\"resolvedStatus === 'Disabled'\"\n [class.tbk-text-area--status-success]=\"resolvedStatus === 'Success'\"\n [class.tbk-text-area--status-loading]=\"resolvedStatus === 'Loading'\"\n [class.tbk-text-area--status-empty]=\"resolvedStatus === 'Empty'\"\n [class.tbk-text-area--readonly]=\"resolvedStatus === 'Readonly'\"\n [class.tbk-text-area--disabled]=\"disabled\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label class=\"tbk-text-area__label\" [attr.for]=\"resolvedId\">\n <tbk-text\n [children]=\"label\"\n color=\"Secondary\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-text-area__label-required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n <div class=\"tbk-text-area__controls\">\n <div class=\"tbk-text-area__field\">\n <textarea\n class=\"tbk-text-area__input\"\n [id]=\"resolvedId\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [attr.aria-label]=\"label || placeholder || 'Text area'\"\n [attr.aria-readonly]=\"readOnly || null\"\n [disabled]=\"isDisabled\"\n [readOnly]=\"readOnly\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n @if (isDisabled) {\n <tbk-icons\n class=\"tbk-text-area__lock\"\n name=\"lockRegular\"\n color=\"disabled\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n } @else if (resolvedStatus === 'Success') {\n <tbk-icons\n class=\"tbk-text-area__status-icon\"\n name=\"checkFormSectionStepper\"\n color=\"success\"\n [size]=\"15\"\n aria-hidden=\"true\"\n ></tbk-icons>\n }\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n class=\"tbk-text-area__helper\"\n [class.tbk-text-area__helper--error]=\"resolvedStatus === 'Error'\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n as=\"span\"\n size=\"font-size-300\"\n weight=\"font-weight-medium\"\n margin=\"0\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TextInputComponent, TextInputStatus } from '../TextInput/text-input.component';\n\n@Component({\n selector: 'tbk-year-input',\n standalone: true,\n imports: [CommonModule, TextInputComponent],\n templateUrl: './year-input.component.html',\n styleUrls: ['./year-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => YearInputComponent),\n multi: true,\n },\n ],\n})\nexport class YearInputComponent implements ControlValueAccessor {\n @Input() label = 'Ano';\n @Input() placeholder = 'AAAA';\n @Input() required = false;\n @Input() disabled = false;\n @Input() status: TextInputStatus = 'Default';\n @Input() helperText = '';\n @Input() showHelperText = false;\n @Input() width: string | null = null;\n @Input() id = '';\n @Input() name = '';\n @Input() ariaLabel = '';\n @Input() minYear = 1900;\n @Input() maxYear = new Date().getFullYear();\n @Input() invalidMessage = 'Data invalida, tente novamente';\n\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n @Output() valueChange = new EventEmitter<number | null>();\n\n private _value: number | null = null;\n @Input()\n set value(next: number | null) {\n this.applyExternalValue(next, false);\n }\n get value(): number | null {\n return this._value;\n }\n\n inputValue = '';\n hasInvalidValue = false;\n private internalErrorMessage = '';\n\n private onChange: (value: number | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n if (this.hasInvalidValue) {\n return this.invalidMessage;\n }\n\n return this.internalErrorMessage;\n }\n\n get effectiveStatus(): TextInputStatus {\n if (this.activeErrorMessage) {\n return 'Error';\n }\n\n return this.status;\n }\n\n get effectiveHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n\n return this.helperText;\n }\n\n get effectiveShowHelperText(): boolean {\n return !!this.activeErrorMessage || this.showHelperText;\n }\n\n writeValue(value: number | null): void {\n this.applyExternalValue(value, false);\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputValueChange(rawValue: string): void {\n const sanitized = this.sanitize(rawValue);\n this.inputValue = sanitized;\n\n if (sanitized.length < 4) {\n this.hasInvalidValue = false;\n this.internalErrorMessage = '';\n this.setValueInternal(null, true);\n return;\n }\n\n const year = Number(sanitized);\n if (!Number.isInteger(year) || year < this.minYear || year > this.maxYear) {\n this.hasInvalidValue = true;\n this.internalErrorMessage = '';\n this.setValueInternal(null, true);\n return;\n }\n\n this.hasInvalidValue = false;\n this.validateCustom(sanitized);\n this.setValueInternal(year, true);\n }\n\n onBlur(): void {\n this.onTouched();\n\n if (this.inputValue.length > 0 && this.inputValue.length < 4) {\n this.hasInvalidValue = true;\n this.internalErrorMessage = '';\n return;\n }\n\n this.validateCustom(this.inputValue);\n }\n\n private setValueInternal(nextValue: number | null, emit: boolean): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private applyExternalValue(nextValue: number | null, emit: boolean): void {\n if (nextValue == null || !Number.isFinite(nextValue)) {\n this._value = null;\n this.inputValue = '';\n this.hasInvalidValue = false;\n this.internalErrorMessage = '';\n if (emit) {\n this.onChange(null);\n this.valueChange.emit(null);\n }\n return;\n }\n\n const year = Math.trunc(nextValue);\n this._value = year;\n this.inputValue = String(year).slice(0, 4);\n this.hasInvalidValue = year < this.minYear || year > this.maxYear;\n this.validateCustom(this.inputValue);\n\n if (emit) {\n this.onChange(this.hasInvalidValue ? null : year);\n this.valueChange.emit(this.hasInvalidValue ? null : year);\n }\n }\n\n private sanitize(value: string): string {\n return (value ?? '').replace(/\\D/g, '').slice(0, 4);\n }\n\n private validateCustom(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim() || this.hasInvalidValue || !value) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div class=\"tbk-year-input\" [style.width]=\"resolvedWidth\">\n <tbk-text-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [status]=\"effectiveStatus\"\n [helperText]=\"effectiveHelperText\"\n [showHelperText]=\"effectiveShowHelperText\"\n [width]=\"'100%'\"\n [id]=\"id\"\n [name]=\"name\"\n [ariaLabel]=\"ariaLabel || label || 'Ano'\"\n [value]=\"inputValue\"\n [inputMode]=\"'numeric'\"\n [pattern]=\"'[0-9]*'\"\n [maxLength]=\"4\"\n [keyFilter]=\"'numeric'\"\n (valueChange)=\"onInputValueChange($event)\"\n (blurred)=\"onBlur()\"\n ></tbk-text-input>\n</div>\r\n","import { AbstractControl } from '@angular/forms';\nimport { AutocompleteOption } from '../Autocomplete/autocomplete.component';\nimport {\n ButtonRadioOption,\n ButtonRadioStatus,\n ButtonRadioVariant,\n} from '../ButtonRadio/button-radio.component';\nimport { DatePickerMode, DatePickerStatus } from '../DatePicker/date-picker.component';\nimport { PinfieldInputType, PinfieldStatus } from '../Pinfield/pinfield.component';\nimport { SearchStatus } from '../Search/search.component';\nimport { TextAreaStatus } from '../TextArea/text-area.component';\nimport { TextInputStatus } from '../TextInput/text-input.component';\n\nexport type FormGroupControls<T> = {\n readonly [K in keyof T]: AbstractControl<unknown>;\n};\nexport type FormGroupControlName<T extends FormGroupControls<T>> = Extract<keyof T, string>;\n\nexport enum FormGroupFieldType {\n TextInput = 'TextInput',\n DatePicker = 'DatePicker',\n Search = 'Search',\n TextArea = 'TextArea',\n Autocomplete = 'Autocomplete',\n YearInput = 'YearInput',\n ChassiInput = 'ChassiInput',\n PlacaInput = 'PlacaInput',\n RenavamInput = 'RenavamInput',\n GravameInput = 'GravameInput',\n CurrencyInput = 'CurrencyInput',\n PercentInput = 'PercentInput',\n Select = 'Select',\n ButtonRadio = 'ButtonRadio',\n Pinfield = 'Pinfield',\n}\n\nexport type FormGroupFieldStatus =\n | TextInputStatus\n | SearchStatus\n | TextAreaStatus\n | PinfieldStatus\n | ButtonRadioStatus\n | DatePickerStatus;\n\nexport type BaseOption = {\n readonly label: string;\n readonly value: unknown;\n};\n\ninterface BaseFieldConfig<\n T extends FormGroupControls<T>,\n TType extends FormGroupFieldType\n> {\n readonly id: string;\n readonly type: TType;\n readonly controlName: FormGroupControlName<T>;\n readonly showLabel?: boolean;\n readonly title?: string;\n readonly label?: string;\n readonly placeholder?: string;\n readonly required?: boolean;\n readonly disabled?: boolean;\n readonly status?: FormGroupFieldStatus;\n readonly helperText?: string;\n readonly showHelperText?: boolean;\n readonly colSpan?: number;\n}\n\nexport interface TextInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.TextInput> {}\n\nexport interface DatePickerFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.DatePicker> {\n readonly mode?: DatePickerMode;\n}\n\nexport interface SearchFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.Search> {}\n\nexport interface TextAreaFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.TextArea> {}\n\nexport interface AutocompleteFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.Autocomplete> {\n readonly options: readonly AutocompleteOption[];\n}\n\nexport interface YearInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.YearInput> {}\n\nexport interface ChassiInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.ChassiInput> {}\n\nexport interface PlacaInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.PlacaInput> {}\n\nexport interface RenavamInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.RenavamInput> {}\n\nexport interface GravameInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.GravameInput> {}\n\nexport interface CurrencyInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.CurrencyInput> {}\n\nexport interface PercentInputFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.PercentInput> {}\n\nexport interface SelectFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.Select> {\n readonly options: readonly BaseOption[];\n}\n\nexport interface ButtonRadioFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.ButtonRadio> {\n readonly options: readonly ButtonRadioOption[];\n readonly variant?: ButtonRadioVariant;\n readonly orientation?: 'horizontal' | 'vertical';\n}\n\nexport interface PinfieldFieldConfig<T extends FormGroupControls<T>>\n extends BaseFieldConfig<T, FormGroupFieldType.Pinfield> {\n readonly length?: number;\n readonly inputType?: PinfieldInputType;\n readonly hideCode?: boolean;\n}\n\nexport type FormGroupFieldConfig<T extends FormGroupControls<T>> =\n | TextInputFieldConfig<T>\n | DatePickerFieldConfig<T>\n | SearchFieldConfig<T>\n | TextAreaFieldConfig<T>\n | AutocompleteFieldConfig<T>\n | YearInputFieldConfig<T>\n | ChassiInputFieldConfig<T>\n | PlacaInputFieldConfig<T>\n | RenavamInputFieldConfig<T>\n | GravameInputFieldConfig<T>\n | CurrencyInputFieldConfig<T>\n | PercentInputFieldConfig<T>\n | SelectFieldConfig<T>\n | ButtonRadioFieldConfig<T>\n | PinfieldFieldConfig<T>;\n\nexport interface FormGroupRowConfig<T extends FormGroupControls<T>> {\n readonly id: string;\n readonly columns?: 1 | 2 | 3 | 4;\n readonly gap?: number;\n readonly fields: readonly FormGroupFieldConfig<T>[];\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AutocompleteComponent, AutocompleteOption } from '../Autocomplete/autocomplete.component';\nimport {\n ButtonRadioComponent,\n ButtonRadioOption,\n ButtonRadioStatus,\n} from '../ButtonRadio/button-radio.component';\nimport { ChassiInputComponent } from '../ChassiInput/chassi-input.component';\nimport { CurrencyInputComponent } from '../CurrencyInput/currency-input.component';\nimport { DatePickerComponent } from '../DatePicker/date-picker.component';\nimport { GravameInputComponent } from '../GravameInput/gravame-input.component';\nimport { PercentInputComponent } from '../PercentInput/percent-input.component';\nimport { PinfieldComponent, PinfieldStatus } from '../Pinfield/pinfield.component';\nimport { PlacaInputComponent } from '../PlacaInput/placa-input.component';\nimport { RenavamInputComponent } from '../RenavamInput/renavam-input.component';\nimport { SearchStatus } from '../Search/search.component';\nimport { SearchComponent } from '../Search/search.component';\nimport { SelectComponent, SelectStatus } from '../Select/select.component';\nimport { TextAreaStatus } from '../TextArea/text-area.component';\nimport { TextAreaComponent } from '../TextArea/text-area.component';\nimport { TextInputComponent, TextInputStatus } from '../TextInput/text-input.component';\nimport { YearInputComponent } from '../YearInput/year-input.component';\nimport { DatePickerStatus } from '../DatePicker/date-picker.component';\nimport {\n AutocompleteFieldConfig,\n BaseOption,\n ButtonRadioFieldConfig,\n FormGroupControls,\n FormGroupFieldConfig,\n FormGroupFieldType,\n FormGroupRowConfig,\n SelectFieldConfig,\n} from './form-group.types';\n\n@Component({\n selector: 'tbk-form-group',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TextInputComponent,\n DatePickerComponent,\n SearchComponent,\n TextAreaComponent,\n AutocompleteComponent,\n YearInputComponent,\n ChassiInputComponent,\n PlacaInputComponent,\n RenavamInputComponent,\n GravameInputComponent,\n CurrencyInputComponent,\n PercentInputComponent,\n SelectComponent,\n ButtonRadioComponent,\n PinfieldComponent,\n ],\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormGroupComponent<T extends FormGroupControls<T>> {\n readonly fieldType = FormGroupFieldType;\n\n @Input() title = 'Dados do veículo';\n @Input() showTitle = true;\n\n @Input() rows: readonly FormGroupRowConfig<T>[] = [];\n @Input() defaultColumns: 1 | 2 | 3 | 4 = 2;\n\n @Input({ required: true })\n formGroup!: FormGroup<T>;\n\n @Input() containerPadding = '20px';\n @Input() containerBg = 'var(--tbk-ds-bg-color-white-bg)';\n @Input() maxWidth = '896px';\n @Input() borderRadius: number | string = 5;\n @Input() borderColorDefault = 'var(--tbk-ds-color-border-default)';\n @Input() borderColorActive = 'var(--tbk-ds-color-border-enabled)';\n @Input() showContainer = true;\n\n @Input() showRequiredFooter = true;\n @Input() requiredFooterText = 'Campos obrigatórios *';\n @Input() showRequiredFooterAsterisk = true;\n\n isActive = false;\n private readonly warnedSelectOptionFields = new Set<string>();\n\n constructor(private readonly hostRef: ElementRef<HTMLElement>) {}\n\n get resolvedBorderRadius(): string {\n if (typeof this.borderRadius === 'number') {\n return `${this.borderRadius}px`;\n }\n\n const trimmed = this.borderRadius.trim();\n return trimmed || '0px';\n }\n\n onContainerFocusIn(): void {\n this.isActive = true;\n }\n\n onContainerFocusOut(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as Node | null;\n if (relatedTarget && this.hostRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.isActive = false;\n }\n\n resolveColumns(row: FormGroupRowConfig<T>): number {\n const configuredColumns = row.columns ?? this.defaultColumns;\n const fieldsCount = row.fields.length || 1;\n return Math.max(1, Math.min(configuredColumns, fieldsCount));\n }\n\n resolveRowGap(row: FormGroupRowConfig<T>): number {\n return row.gap ?? 12;\n }\n\n resolveGridTemplateColumns(row: FormGroupRowConfig<T>): string {\n const columns = this.resolveColumns(row);\n const isOnlyButtonRadio = row.fields.every(\n (field) => field.type === FormGroupFieldType.ButtonRadio\n );\n\n if (isOnlyButtonRadio) {\n return `repeat(${columns}, max-content)`;\n }\n\n return `repeat(${columns}, minmax(0, 1fr))`;\n }\n\n isButtonRadioOnlyRow(row: FormGroupRowConfig<T>): boolean {\n return row.fields.every(\n (field) => field.type === FormGroupFieldType.ButtonRadio\n );\n }\n\n resolveFieldColSpan(field: FormGroupFieldConfig<T>, row: FormGroupRowConfig<T>): number {\n const columns = this.resolveColumns(row);\n const requested = field.colSpan ?? 1;\n return Math.max(1, Math.min(columns, requested));\n }\n\n resolveFieldLabel(field: FormGroupFieldConfig<T>, fallback: string): string {\n if (field.showLabel === false) {\n return '';\n }\n\n return field.title || field.label || fallback;\n }\n\n trackByRow(_index: number, row: FormGroupRowConfig<T>): string {\n return row.id;\n }\n\n trackByField(_index: number, field: FormGroupFieldConfig<T>): string {\n return field.id;\n }\n\n get requiredFooterBaseText(): string {\n return (this.requiredFooterText || '').replace('*', '').trim();\n }\n\n resolveTextInputStatus(field: FormGroupFieldConfig<T>): TextInputStatus {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Error' ||\n status === 'Focus' ||\n status === 'Selected'\n ) {\n return status;\n }\n\n return 'Default';\n }\n resolveBasicInputStatus(\n field: FormGroupFieldConfig<T>,\n ): 'Default' | 'Error' | 'Focus' | 'Selected' {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Error' ||\n status === 'Focus' ||\n status === 'Selected'\n ) {\n return status;\n }\n\n return 'Default';\n }\n\n resolveSelectStatus(field: FormGroupFieldConfig<T>): SelectStatus {\n return this.resolveBasicInputStatus(field);\n }\n resolveSearchStatus(field: FormGroupFieldConfig<T>): SearchStatus {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Error' ||\n status === 'Auxiliar' ||\n status === 'Focus' ||\n status === 'Selected' ||\n status === 'Disabled'\n ) {\n return status;\n }\n\n return 'Default';\n }\n\n resolveTextAreaStatus(field: FormGroupFieldConfig<T>): TextAreaStatus {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Error' ||\n status === 'Auxiliar' ||\n status === 'Focus' ||\n status === 'Selected' ||\n status === 'Disabled'\n ) {\n return status;\n }\n\n return 'Default';\n }\n\n resolveDatePickerStatus(field: FormGroupFieldConfig<T>): DatePickerStatus {\n const status = field.status;\n if (status === 'Default' || status === 'Error' || status === 'Disabled') {\n return status;\n }\n\n return 'Default';\n }\n\n resolvePinfieldStatus(field: FormGroupFieldConfig<T>): PinfieldStatus {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Error' ||\n status === 'Focus' ||\n status === 'Selected'\n ) {\n return status;\n }\n\n return 'Default';\n }\n\n resolveButtonRadioStatus(field: FormGroupFieldConfig<T>): ButtonRadioStatus {\n const status = field.status;\n if (\n status === 'Default' ||\n status === 'Selected' ||\n status === 'Auxiliar' ||\n status === 'Error' ||\n status === 'Disabled'\n ) {\n return status;\n }\n\n return 'Default';\n }\n\n resolveAutocompleteOptions(field: FormGroupFieldConfig<T>): AutocompleteOption[] {\n if (this.isAutocompleteField(field)) {\n return [...field.options];\n }\n\n return [];\n }\n\n resolveButtonRadioOptions(field: FormGroupFieldConfig<T>): ButtonRadioOption[] {\n if (this.isButtonRadioField(field)) {\n return [...field.options];\n }\n\n return [];\n }\n\n resolveSelectOptions(field: FormGroupFieldConfig<T>): Array<{ label: string; value: string }> {\n if (!this.isSelectField(field)) {\n return [];\n }\n\n const parsedOptions = field.options\n .filter(\n (option): option is BaseOption & { readonly value: string } =>\n typeof option.value === 'string'\n )\n .map((option) => ({ label: option.label, value: option.value }));\n\n if (parsedOptions.length !== field.options.length) {\n this.warnInvalidSelectOptions(field);\n }\n\n return parsedOptions;\n }\n\n private warnInvalidSelectOptions(field: SelectFieldConfig<T>): void {\n const warningKey = field.id;\n if (this.warnedSelectOptionFields.has(warningKey)) {\n return;\n }\n\n this.warnedSelectOptionFields.add(warningKey);\n console.warn(\n `[tbk-form-group] Select field \"${String(\n field.controlName\n )}\" received non-string option values; these entries were ignored.`\n );\n }\n\n private isAutocompleteField(field: FormGroupFieldConfig<T>): field is AutocompleteFieldConfig<T> {\n return field.type === FormGroupFieldType.Autocomplete;\n }\n\n private isButtonRadioField(field: FormGroupFieldConfig<T>): field is ButtonRadioFieldConfig<T> {\n return field.type === FormGroupFieldType.ButtonRadio;\n }\n\n private isSelectField(field: FormGroupFieldConfig<T>): field is SelectFieldConfig<T> {\n return field.type === FormGroupFieldType.Select;\n }\n}\n","<div\n class=\"tbk-form-group\"\n [class.tbk-form-group--active]=\"isActive\"\n [class.tbk-form-group--no-container]=\"!showContainer\"\n [style.background]=\"showContainer ? containerBg : null\"\n [style.max-width]=\"maxWidth\"\n [style.border-color]=\"showContainer ? (isActive ? borderColorActive : borderColorDefault) : null\"\n [style.border-radius]=\"showContainer ? resolvedBorderRadius : null\"\n [style.padding]=\"showContainer ? containerPadding : null\"\n tabindex=\"0\"\n (focusin)=\"onContainerFocusIn()\"\n (focusout)=\"onContainerFocusOut($event)\"\n>\n <h3 *ngIf=\"showTitle\" class=\"tbk-form-group__title\">{{ title }}</h3>\n\n <form class=\"tbk-form-group__form\" [formGroup]=\"formGroup\">\n <div\n class=\"tbk-form-group__row\"\n [class.tbk-form-group__row--button-radio-only]=\"isButtonRadioOnlyRow(row)\"\n *ngFor=\"let row of rows; trackBy: trackByRow\"\n [style.gap.px]=\"resolveRowGap(row)\"\n [style.grid-template-columns]=\"resolveGridTemplateColumns(row)\"\n >\n <div\n class=\"tbk-form-group__field\"\n *ngFor=\"let field of row.fields; trackBy: trackByField\"\n [style.grid-column]=\"'span ' + resolveFieldColSpan(field, row)\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <tbk-text-input\n *ngSwitchCase=\"fieldType.TextInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Label')\"\n [placeholder]=\"field.placeholder || 'Placeholder'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveTextInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n [width]=\"'100%'\"\n ></tbk-text-input>\n\n <tbk-date-picker\n *ngSwitchCase=\"fieldType.DatePicker\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Data')\"\n [placeholder]=\"field.placeholder || '00/00/0000'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveDatePickerStatus(field)\"\n [mode]=\"field.type === fieldType.DatePicker ? field.mode || 'single' : 'single'\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperTextInput]=\"field.helperText || ''\"\n ></tbk-date-picker>\n\n <tbk-search\n *ngSwitchCase=\"fieldType.Search\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Busca')\"\n [placeholder]=\"field.placeholder || 'Digite sua busca'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveSearchStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-search>\n\n <tbk-text-area\n *ngSwitchCase=\"fieldType.TextArea\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Texto')\"\n [placeholder]=\"field.placeholder || 'Digite aqui'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveTextAreaStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-text-area>\n\n <tbk-autocomplete\n *ngSwitchCase=\"fieldType.Autocomplete\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Autocomplete')\"\n [placeholder]=\"field.placeholder || 'Digite para buscar'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveTextInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n [options]=\"resolveAutocompleteOptions(field)\"\n ></tbk-autocomplete>\n\n <tbk-year-input\n *ngSwitchCase=\"fieldType.YearInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Ano')\"\n [placeholder]=\"field.placeholder || 'AAAA'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveTextInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-year-input>\n\n <tbk-chassi-input\n *ngSwitchCase=\"fieldType.ChassiInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Chassi')\"\n [placeholder]=\"field.placeholder || 'Digite o chassi'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-chassi-input>\n\n <tbk-placa-input\n *ngSwitchCase=\"fieldType.PlacaInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Placa')\"\n [placeholder]=\"field.placeholder || 'Ex: ABCD1234'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-placa-input>\n\n <tbk-renavam-input\n *ngSwitchCase=\"fieldType.RenavamInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Renavam')\"\n [placeholder]=\"field.placeholder || 'Ex: 01234567890'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-renavam-input>\n\n <tbk-gravame-input\n *ngSwitchCase=\"fieldType.GravameInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Nº do gravame')\"\n [placeholder]=\"field.placeholder || 'Ex:20231234567'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-gravame-input>\n\n <tbk-currency-input\n *ngSwitchCase=\"fieldType.CurrencyInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Valor')\"\n [placeholder]=\"field.placeholder || 'R$00.000.000,00'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-currency-input>\n\n <tbk-percent-input\n *ngSwitchCase=\"fieldType.PercentInput\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Percentual')\"\n [placeholder]=\"field.placeholder || '0.0%'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveBasicInputStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n ></tbk-percent-input>\n\n <tbk-select\n *ngSwitchCase=\"fieldType.Select\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Selecione')\"\n [placeholder]=\"field.placeholder || 'Selecione'\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveSelectStatus(field)\"\n [helperText]=\"field.helperText || ''\"\n [options]=\"resolveSelectOptions(field)\"\n ></tbk-select>\n\n <tbk-button-radio\n *ngSwitchCase=\"fieldType.ButtonRadio\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, '')\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolveButtonRadioStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helper]=\"field.helperText || ''\"\n [orientation]=\"field.type === fieldType.ButtonRadio ? field.orientation || 'horizontal' : 'horizontal'\"\n [variant]=\"field.type === fieldType.ButtonRadio ? field.variant || 'boxed' : 'boxed'\"\n [options]=\"resolveButtonRadioOptions(field)\"\n [name]=\"field.controlName\"\n ></tbk-button-radio>\n\n <tbk-pinfield\n *ngSwitchCase=\"fieldType.Pinfield\"\n [formControlName]=\"field.controlName\"\n [label]=\"resolveFieldLabel(field, 'Codigo')\"\n [required]=\"!!field.required\"\n [disabled]=\"!!field.disabled\"\n [status]=\"resolvePinfieldStatus(field)\"\n [showHelperText]=\"!!field.showHelperText\"\n [helperText]=\"field.helperText || ''\"\n [length]=\"field.type === fieldType.Pinfield ? field.length || 6 : 6\"\n [inputType]=\"field.type === fieldType.Pinfield ? field.inputType || 'numeric' : 'numeric'\"\n [hideCode]=\"field.type === fieldType.Pinfield ? !!field.hideCode : false\"\n ></tbk-pinfield>\n </ng-container>\n </div>\n </div>\n </form>\n\n <p *ngIf=\"showRequiredFooter\" class=\"tbk-form-group__footer\">\n <span>{{ requiredFooterBaseText }}</span>\n <span *ngIf=\"showRequiredFooterAsterisk\" class=\"tbk-form-group__footer-required\">*</span>\n </p>\n</div>\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport { GaugeColor } from './gauge-chart.types';\n\nexport interface BuildGaugeOptionParams {\n readonly value: number;\n readonly max: number;\n readonly color: GaugeColor;\n readonly theme: ChartThemeTokens;\n readonly splitNumber: number;\n}\n\nexport function buildGaugeOption(params: BuildGaugeOptionParams): EChartsOption {\n const { value, max, color, theme, splitNumber } = params;\n \n // Clampa o valor entre 0 e max\n const ratio = Math.max(0, Math.min(1, max > 0 ? value / max : 0));\n \n const activeColor = theme.colorByName[color] || theme.colorByName.blue;\n const inactiveColor = theme.neutral || '#E6E9F0';\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n grid: { left: 0, right: 0, top: 0, bottom: 0, containLabel: false },\n tooltip: { show: false },\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n min: 0,\n max: max,\n splitNumber: splitNumber,\n radius: '95%',\n center: ['50%', '80%'],\n axisLine: {\n show: true,\n lineStyle: {\n width: 0, // Esconde a linha do arco principal, mantendo apenas os marcadores\n color: [\n [ratio, activeColor],\n [1, inactiveColor]\n ]\n }\n },\n progress: { show: false },\n pointer: { show: false },\n anchor: { show: false },\n splitLine: { show: false },\n axisTick: {\n show: true,\n splitNumber: 1,\n length: 14,\n lineStyle: {\n width: 3,\n color: 'auto', // Herda a cor do segmento correspondente no axisLine\n cap: 'round'\n }\n },\n axisLabel: {\n show: false\n },\n detail: { show: false }\n }\n ]\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport { buildGaugeOption } from './gauge-chart.options';\nimport { GaugeColor } from './gauge-chart.types';\n\n@Component({\n selector: 'tbk-gauge-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n template: `\n<div class=\"tbk-gauge-chart\">\n <div\n echarts\n class=\"tbk-gauge-chart__chart\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.height.px]=\"height()\"\n ></div>\n \n <div class=\"tbk-gauge-chart__overlay\">\n <span class=\"tbk-gauge-chart__value-container\">\n <span class=\"tbk-gauge-chart__value\">{{ value() }}</span>\n <span class=\"tbk-gauge-chart__unit\">{{ unit() }}</span>\n </span>\n </div>\n</div>\n `,\n styles: [`\n :host {\n display: block;\n width: var(--tbk-ds-size-width-100);\n min-width: 0;\n box-sizing: border-box;\n }\n\n .tbk-gauge-chart {\n position: relative;\n width: var(--tbk-ds-size-width-100);\n display: flex;\n flex-direction: column;\n align-items: center;\n box-sizing: border-box;\n }\n\n .tbk-gauge-chart__chart {\n display: block;\n width: var(--tbk-ds-size-width-100);\n }\n\n .tbk-gauge-chart__overlay {\n position: absolute;\n bottom: 15%;\n left: 50%;\n transform: translate(-50%, 0);\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: none;\n }\n\n .tbk-gauge-chart__value-container {\n display: flex;\n align-items: baseline;\n white-space: nowrap;\n }\n\n .tbk-gauge-chart__value {\n font-family: var(--tbk-ds-font-family-primary, 'Poppins', sans-serif);\n font-size: var(--tbk-ds-font-size-800, 32px);\n font-weight: var(--tbk-ds-font-weight-bold, 700);\n color: var(--tbk-ds-color-text-primary, #384047);\n line-height: 1;\n }\n\n .tbk-gauge-chart__unit {\n font-family: var(--tbk-ds-font-family-primary, 'Poppins', sans-serif);\n font-size: var(--tbk-ds-font-size-400, 16px);\n font-weight: var(--tbk-ds-font-weight-medium, 500);\n color: var(--tbk-ds-color-text-tertiary, #6B6E76);\n line-height: 1;\n margin-left: var(--tbk-ds-gap-3, 4px);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeChartComponent {\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n // ── Entradas ─────────────────────────────────────────────────────────────────\n /** Valor atual do progresso. */\n readonly value = input.required<number, unknown>({ transform: numberAttribute });\n \n /** Valor máximo (limite superior). Default: 100. */\n readonly max = input<number, unknown>(100, { transform: numberAttribute });\n \n /** Cor ativa do progresso. Default: 'blue'. */\n readonly color = input<GaugeColor>('blue');\n \n /** Altura do container em pixels. Default: 180. */\n readonly height = input<number, unknown>(180, { transform: numberAttribute });\n \n /** Quantidade de marcadores (ticks). Default: 40. */\n readonly splitNumber = input<number, unknown>(40, { transform: numberAttribute });\n\n /** Descrição para acessibilidade. */\n readonly ariaLabel = input<string>('Gráfico de progresso circular');\n\n /** Unidade de medida exibida ao lado do valor (ex: 'dias'). Default: 'dias'. */\n readonly unit = input<string>('dias');\n\n // ── Configurações do ECharts ───────────────────────────────────────────────────\n readonly initOpts = { renderer: 'svg' as const };\n\n readonly option = computed(() =>\n buildGaugeOption({\n value: this.value(),\n max: this.max(),\n color: this.color(),\n theme: this.theme,\n splitNumber: this.splitNumber(),\n }),\n );\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconToken, IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport type PasswordInputStatus =\n | 'Default'\n | 'Error'\n | 'Focus'\n | 'Selected'\n | 'Success'\n | 'Loading'\n | 'Empty'\n | 'Readonly';\n\n@Component({\n selector: 'tbk-password-input',\n standalone: true,\n imports: [IconsComponent, TextComponent],\n templateUrl: './password-input.component.html',\n styleUrl: './password-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n },\n ],\n})\nexport class PasswordInputComponent implements ControlValueAccessor {\n @Input() label = 'Senha';\n @Input() placeholder = 'Digite sua senha';\n @Input() id = '';\n @Input() name = '';\n @Input() width: string | null = null;\n @Input() ariaLabel = '';\n @Input() required = false;\n @Input() helperText = '';\n @Input() status: PasswordInputStatus = 'Default';\n @Input() disabled = false;\n @Input({ alias: 'readonly' }) readOnly = false;\n @Input() loading = false;\n @Input() successMessage = '';\n @Input() emptyMessage = '';\n @Input() maxLength: number | null = null;\n\n @Input() validateOnBlur = false;\n @Input() externalErrorMessage = '';\n @Input() customErrorValidator: ((value: string) => string | null) | null = null;\n @Input() customErrorValidators: Array<(value: string) => string | null> = [];\n\n private _showHelperText = false;\n @Input()\n set showHelperText(value: boolean | string) {\n this._showHelperText = value != null && `${value}` !== 'false';\n }\n get showHelperText(): boolean {\n return this._showHelperText;\n }\n\n @Input() value = '';\n @Output() valueChange = new EventEmitter<string>();\n @Output() focused = new EventEmitter<void>();\n @Output() blurred = new EventEmitter<void>();\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private internalErrorMessage = '';\n\n private readonly fallbackId = `tbk-password-input-${Math.random()\n .toString(36)\n .slice(2, 10)}`;\n\n isVisible = false;\n\n get resolvedInputId(): string {\n const trimmed = this.id.trim();\n return trimmed ? trimmed : this.fallbackId;\n }\n\n get resolvedWidth(): string {\n const next = this.width?.trim();\n return next ? next : '100%';\n }\n\n get activeErrorMessage(): string {\n const external = this.externalErrorMessage?.trim();\n if (external) {\n return external;\n }\n\n return this.internalErrorMessage;\n }\n\n get activeSuccessMessage(): string {\n return this.successMessage?.trim() || '';\n }\n\n get activeEmptyMessage(): string {\n if (this.value?.trim()) {\n return '';\n }\n\n return this.emptyMessage?.trim() || '';\n }\n\n get resolvedStatus(): PasswordInputStatus {\n if (this.disabled) return this.status;\n if (this.loading) return 'Loading';\n if (this.readOnly) return 'Readonly';\n if (this.activeErrorMessage) return 'Error';\n if (this.activeSuccessMessage) return 'Success';\n if (this.activeEmptyMessage) return 'Empty';\n return this.status;\n }\n\n get resolvedHelperText(): string {\n if (this.activeErrorMessage) {\n return this.activeErrorMessage;\n }\n if (this.activeSuccessMessage) {\n return this.activeSuccessMessage;\n }\n if (this.activeEmptyMessage) {\n return this.activeEmptyMessage;\n }\n\n const text = this.helperText?.trim();\n return text ? text : 'Texto auxiliar';\n }\n\n get shouldShowHelperText(): boolean {\n return (\n !!this.activeErrorMessage ||\n !!this.activeSuccessMessage ||\n !!this.activeEmptyMessage ||\n this.showHelperText\n );\n }\n\n get helperTextColor(): 'Critical' | 'Success' | 'Secondary' {\n if (this.resolvedStatus === 'Error') return 'Critical';\n if (this.resolvedStatus === 'Success') return 'Success';\n return 'Secondary';\n }\n\n get helperId(): string { return `${this.resolvedInputId}-helper`; }\n\n get inputType(): 'password' | 'text' {\n return this.isVisible ? 'text' : 'password';\n }\n\n get toggleIcon(): IconToken {\n return this.isVisible ? 'eyeRegularFull' : 'eyeClosedRegularFull';\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.validateValue(this.value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggleVisibility(): void {\n if (this.disabled || this.loading) return;\n this.isVisible = !this.isVisible;\n }\n\n onInput(value: string): void {\n if (this.disabled || this.loading || this.readOnly) {\n return;\n }\n\n this.value = value;\n if (!this.validateOnBlur) {\n this.validateValue(value);\n }\n\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n if (this.loading) {\n return;\n }\n\n if (this.validateOnBlur) {\n this.validateValue(this.value);\n }\n\n this.onTouched();\n this.blurred.emit();\n }\n\n onFocus(): void {\n if (this.loading) {\n return;\n }\n\n this.focused.emit();\n }\n\n private validateValue(value: string): void {\n if (this.disabled || this.externalErrorMessage?.trim()) {\n this.internalErrorMessage = '';\n return;\n }\n\n if (this.customErrorValidator) {\n const custom = this.customErrorValidator(value);\n this.internalErrorMessage = custom ? custom : '';\n if (this.internalErrorMessage) {\n return;\n }\n }\n\n for (const validator of this.customErrorValidators) {\n const custom = validator?.(value);\n if (custom) {\n this.internalErrorMessage = custom;\n return;\n }\n }\n\n this.internalErrorMessage = '';\n }\n}\n","<div\n class=\"tbk-password-input\"\n [style.width]=\"resolvedWidth\"\n [class.tbk-password-input--status-error]=\"resolvedStatus === 'Error'\"\n [class.tbk-password-input--status-focus]=\"resolvedStatus === 'Focus'\"\n [class.tbk-password-input--status-selected]=\"resolvedStatus === 'Selected'\"\n [class.tbk-password-input--status-success]=\"resolvedStatus === 'Success'\"\n [class.tbk-password-input--status-loading]=\"resolvedStatus === 'Loading'\"\n [class.tbk-password-input--status-empty]=\"resolvedStatus === 'Empty'\"\n [class.tbk-password-input--readonly]=\"resolvedStatus === 'Readonly'\"\n [class.tbk-password-input--disabled]=\"disabled\"\n [class.tbk-password-input--has-value]=\"value && value.trim().length > 0\"\n [attr.aria-busy]=\"loading || null\"\n>\n <label class=\"tbk-password-input__label\" [attr.for]=\"resolvedInputId\">\n <tbk-text\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n @if (required) {\n <span class=\"tbk-password-input__label-required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n <div class=\"tbk-password-input__controls\">\n <div class=\"tbk-password-input__field\">\n <input\n class=\"tbk-password-input__input\"\n [id]=\"resolvedInputId\"\n [name]=\"name || null\"\n [attr.type]=\"inputType\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel || label || placeholder || 'Password input'\"\n [attr.maxlength]=\"maxLength ?? null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"resolvedStatus === 'Error' || null\"\n [attr.aria-describedby]=\"shouldShowHelperText ? helperId : null\"\n [attr.aria-readonly]=\"readOnly || null\"\n [disabled]=\"disabled || loading\"\n [readOnly]=\"readOnly\"\n [value]=\"value\"\n (input)=\"onInput($any($event.target).value)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <button\n type=\"button\"\n class=\"tbk-password-input__toggle\"\n [disabled]=\"disabled || loading\"\n (click)=\"toggleVisibility()\"\n [attr.aria-label]=\"isVisible ? 'Ocultar senha' : 'Mostrar senha'\"\n >\n <tbk-icons\n class=\"tbk-password-input__toggle-icon\"\n [name]=\"toggleIcon\"\n [color]=\"'blue'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </div>\n\n @if (shouldShowHelperText) {\n <div\n [id]=\"helperId\"\n role=\"status\"\n aria-live=\"polite\"\n class=\"tbk-password-input__helper\"\n [class.tbk-password-input__helper--error]=\"resolvedStatus === 'Error'\"\n >\n <tbk-text\n [children]=\"resolvedHelperText\"\n [color]=\"helperTextColor\"\n [as]=\"'span'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n }\n </div>\n</div>\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Configuração global do `tbk-kpis` injetada via `provideTbkKpis`.\n * Permite que uma aplicação consumidora customize defaults i18n em um\n * único ponto, sem repetir em cada uso.\n */\nexport interface TbkKpisConfig {\n /**\n * Nome acessível padrão da região de KPIs.\n * Default em runtime: `'Indicadores'`.\n */\n readonly defaultAriaLabel?: string;\n /**\n * Texto padrão exibido quando não há métricas.\n * Default em runtime: `'Sem dados para exibir'`.\n */\n readonly defaultEmptyLabel?: string;\n}\n\n/** Token de injeção para a configuração global de `tbk-kpis`. */\nexport const TBK_KPIS_CONFIG = new InjectionToken<TbkKpisConfig>('TBK_KPIS_CONFIG');\n\nexport const DEFAULT_KPIS_ARIA_LABEL = 'Indicadores';\nexport const DEFAULT_KPIS_EMPTY_LABEL = 'Sem dados para exibir';\n\n/**\n * Provider de configuração global para o `tbk-kpis`.\n *\n * @example\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideTbkKpis({ defaultAriaLabel: 'Metrics', defaultEmptyLabel: 'No data' }),\n * ],\n * });\n * ```\n */\nexport function provideTbkKpis(config: TbkKpisConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: TBK_KPIS_CONFIG, useValue: config }]);\n}\n","import { IconColor, IconToken } from '../Icons/icons.component';\n\n/**\n * Tom semântico do indicador (bolinha) de um KPI. Mapeia para tokens oficiais\n * em kpis.component.scss — nenhum valor de cor é definido inline.\n */\nexport type KpiTone =\n | 'neutral'\n | 'muted'\n | 'info'\n | 'success'\n | 'accent'\n | 'warning'\n | 'critical'\n | 'highlight';\n\nexport const KPI_TONE_OPTIONS: readonly KpiTone[] = [\n 'neutral',\n 'muted',\n 'info',\n 'success',\n 'accent',\n 'warning',\n 'critical',\n 'highlight',\n];\n\n/** Um indicador (métrica) exibido em uma célula do grid de KPIs. */\nexport interface KpiItem {\n /** Identificador estável usado no track do @for. Gerado quando ausente. */\n readonly id?: string;\n /** Rótulo curto da métrica (ex.: \"Delivered\"). Exibido em caixa alta. */\n readonly label: string;\n /** Valor principal exibido em destaque (ex.: \"100%\", \"9\"). */\n readonly value: string | number;\n /** Valor secundário, exibido esmaecido ao lado do principal (ex.: contagem). */\n readonly secondaryValue?: string | number | null;\n /** Tom da bolinha indicadora. Ignorado quando `icon` é fornecido. */\n readonly tone?: KpiTone;\n /** Ícone opcional (token semântico) que substitui a bolinha indicadora. */\n readonly icon?: IconToken;\n /** Cor do ícone (quando `icon` é usado). */\n readonly iconColor?: IconColor;\n /** Texto de ajuda exibido no tooltip do ícone de informação. */\n readonly info?: string;\n}\n\n/** Item normalizado internamente (id e tone sempre definidos). */\nexport interface NormalizedKpiItem extends KpiItem {\n readonly id: string;\n readonly tone: KpiTone;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\nimport { ButtonComponent } from '../Button/button.component';\nimport { TooltipComponent } from '../Tooltip/tooltip.component';\nimport {\n DEFAULT_KPIS_ARIA_LABEL,\n DEFAULT_KPIS_EMPTY_LABEL,\n TBK_KPIS_CONFIG,\n} from './kpis.config';\nimport { KpiItem, NormalizedKpiItem } from './kpis.types';\n\nexport type { KpiItem, KpiTone, NormalizedKpiItem } from './kpis.types';\nexport { KPI_TONE_OPTIONS } from './kpis.types';\nexport {\n TBK_KPIS_CONFIG,\n DEFAULT_KPIS_ARIA_LABEL,\n DEFAULT_KPIS_EMPTY_LABEL,\n provideTbkKpis,\n} from './kpis.config';\nexport type { TbkKpisConfig } from './kpis.config';\n\n/**\n * Painel de KPIs — exibe um cabeçalho com seletor de período, um grid de\n * métricas (rótulo + indicador + valor) e uma ação no rodapé.\n *\n * Orientado a dados via `items`. Reutiliza `tbk-text`, `tbk-icons`,\n * `tbk-button`, `tbk-tooltip` e tokens oficiais do Design System.\n * Nenhum token CSS próprio é criado.\n */\n@Component({\n selector: 'tbk-kpis',\n standalone: true,\n imports: [CommonModule, TextComponent, IconsComponent, ButtonComponent, TooltipComponent],\n templateUrl: './kpis.component.html',\n styleUrls: ['./kpis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KpisComponent {\n private readonly globalConfig = inject(TBK_KPIS_CONFIG, { optional: true });\n\n // ── Conteúdo ───────────────────────────────────────────────────────────────\n /** Texto descritivo exibido no cabeçalho, à esquerda. */\n readonly description = input<string>('');\n /** Métricas exibidas no grid. */\n readonly items = input<readonly KpiItem[]>([]);\n\n // ── Período ─────────────────────────────────────────────────────────────────\n /** Rótulo do seletor de período (ex.: \"Last 7 days\"). Oculto quando vazio. */\n readonly period = input<string>('');\n\n // ── Ação (rodapé) ────────────────────────────────────────────────────────────\n /** Rótulo do botão de rodapé. Oculto quando vazio. */\n readonly actionLabel = input<string>('');\n\n // ── Layout ────────────────────────────────────────────────────────────────────\n /** Número de colunas do grid (responsivo: cai para 2/1 em telas menores). */\n readonly columns = input<number, unknown>(4, { transform: numberAttribute });\n\n // ── i18n / a11y ────────────────────────────────────────────────────────────────\n /** Nome acessível da região. Sobrescreve o default global. */\n readonly ariaLabel = input<string | undefined>(undefined);\n /** Texto exibido quando não há métricas. Sobrescreve o default global. */\n readonly emptyLabel = input<string | undefined>(undefined);\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly periodClicked = output<MouseEvent>();\n readonly actionClicked = output<MouseEvent>();\n readonly itemClicked = output<NormalizedKpiItem>();\n\n // ── Estado derivado ───────────────────────────────────────────────────────────\n readonly resolvedAriaLabel = computed(\n () =>\n (this.ariaLabel() ?? '').trim() ||\n this.globalConfig?.defaultAriaLabel ||\n DEFAULT_KPIS_ARIA_LABEL,\n );\n\n readonly resolvedEmptyLabel = computed(\n () =>\n (this.emptyLabel() ?? '').trim() ||\n this.globalConfig?.defaultEmptyLabel ||\n DEFAULT_KPIS_EMPTY_LABEL,\n );\n\n readonly showPeriod = computed(() => (this.period() ?? '').trim().length > 0);\n readonly showAction = computed(() => (this.actionLabel() ?? '').trim().length > 0);\n readonly hasHeader = computed(() => (this.description() ?? '').trim().length > 0 || this.showPeriod());\n\n readonly resolvedColumns = computed(() => {\n const value = this.columns() ?? 4;\n return Number.isFinite(value) && value > 0 ? Math.trunc(value) : 4;\n });\n\n readonly normalizedItems = computed<readonly NormalizedKpiItem[]>(() =>\n (this.items() ?? []).map((item, index) => ({\n ...item,\n id: item.id ?? `kpi-${index}`,\n tone: item.tone ?? 'neutral',\n })),\n );\n\n readonly hasItems = computed(() => this.normalizedItems().length > 0);\n\n\n hasSecondaryValue(item: NormalizedKpiItem): boolean {\n const value = item.secondaryValue;\n return value !== null && value !== undefined && `${value}`.trim().length > 0;\n }\n\n trackItem = (_index: number, item: NormalizedKpiItem): string => item.id;\n\n // ── Handlers ──────────────────────────────────────────────────────────────────\n onPeriodClick(event: MouseEvent): void {\n this.periodClicked.emit(event);\n }\n\n onActionClick(event: MouseEvent): void {\n this.actionClicked.emit(event);\n }\n}\n","<section class=\"tbk-kpis\" role=\"region\" [attr.aria-label]=\"resolvedAriaLabel()\">\n @if (hasHeader()) {\n <header class=\"tbk-kpis__header\">\n @if (description()) {\n <tbk-text\n class=\"tbk-kpis__description\"\n as=\"span\"\n [children]=\"description()\"\n color=\"Primary\"\n size=\"font-size-350\"\n ></tbk-text>\n }\n\n @if (showPeriod()) {\n <button\n type=\"button\"\n class=\"tbk-kpis__period\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"period()\"\n (click)=\"onPeriodClick($event)\"\n >\n <span class=\"tbk-kpis__period-label\">{{ period() }}</span>\n <tbk-icons name=\"chevronDownSolidFull\" color=\"primary\" [size]=\"12\"></tbk-icons>\n </button>\n }\n </header>\n }\n\n @if (hasItems()) {\n <div class=\"tbk-kpis__grid\" role=\"list\" [style.--tbk-kpis-columns]=\"resolvedColumns()\">\n @for (item of normalizedItems(); track trackItem($index, item)) {\n <div class=\"tbk-kpis__cell\" role=\"listitem\">\n <div class=\"tbk-kpis__cell-head\">\n <span class=\"tbk-kpis__indicator\" aria-hidden=\"true\">\n @if (item.icon) {\n <tbk-icons [name]=\"item.icon\" [color]=\"item.iconColor ?? 'primary'\" [size]=\"14\"></tbk-icons>\n } @else {\n <span class=\"tbk-kpis__dot\" [ngClass]=\"'tbk-kpis__dot--' + item.tone\"></span>\n }\n </span>\n\n <span class=\"tbk-kpis__label\">{{ item.label }}</span>\n\n @if (item.info) {\n <tbk-tooltip class=\"tbk-kpis__info\" [content]=\"item.info\">\n <span\n class=\"tbk-kpis__info-trigger\"\n tabindex=\"0\"\n role=\"img\"\n [attr.aria-label]=\"item.info\"\n >\n <tbk-icons name=\"circleInfoRegular\" color=\"gray\" [size]=\"14\"></tbk-icons>\n </span>\n </tbk-tooltip>\n }\n </div>\n\n <div class=\"tbk-kpis__value\">\n <span class=\"tbk-kpis__value-main\">{{ item.value }}</span>\n @if (hasSecondaryValue(item)) {\n <span class=\"tbk-kpis__value-secondary\">{{ item.secondaryValue }}</span>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"tbk-kpis__empty\">\n <tbk-text as=\"span\" [children]=\"resolvedEmptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n }\n\n @if (showAction()) {\n <footer class=\"tbk-kpis__footer\">\n <tbk-button\n [label]=\"actionLabel()\"\n icon=\"arrowRightSolidRegular\"\n iconPosition=\"right\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'outline' }\"\n (clicked)=\"onActionClick($event)\"\n ></tbk-button>\n </footer>\n }\n</section>\n","export const LAYOUT_TAG_OPTIONS = [\n 'div',\n 'section',\n 'article',\n 'aside',\n 'header',\n 'footer',\n 'main',\n 'nav',\n 'span',\n 'ul',\n 'ol',\n] as const;\n\nexport const LAYOUT_SPACE_OPTIONS = [\n 'none',\n '3xs',\n '2xs',\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n '2xl',\n '3xl',\n 'auto',\n] as const;\n\nexport const LAYOUT_SPACING_OPTIONS = LAYOUT_SPACE_OPTIONS.filter(\n (option) => option !== 'auto',\n) as readonly Exclude<(typeof LAYOUT_SPACE_OPTIONS)[number], 'auto'>[];\n\nexport const LAYOUT_RADIUS_OPTIONS = ['none', 'xs', 'sm', 'md', 'lg', 'full'] as const;\nexport const LAYOUT_OVERFLOW_OPTIONS = ['visible', 'hidden', 'clip', 'auto', 'scroll'] as const;\n\nexport const BOX_SURFACE_OPTIONS = [\n 'transparent',\n 'default',\n 'subtle',\n 'emphasis',\n 'brand-subtle',\n] as const;\nexport const BOX_BORDER_OPTIONS = [\n 'none',\n 'subtle',\n 'default',\n 'brand',\n 'disabled',\n 'critical',\n 'warning',\n 'success',\n] as const;\nexport const BOX_ELEVATION_OPTIONS = ['none', 'sm', 'md'] as const;\nexport const BOX_SPACING_OPTIONS = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '8',\n '10',\n '0.25',\n '0.5',\n '1.5',\n '2.5',\n] as const;\nexport const BOX_BORDER_STYLE_OPTIONS = ['none', 'solid', 'dashed'] as const;\nexport const BOX_DISPLAY_OPTIONS = ['flex', 'block', 'inline', 'none'] as const;\nexport const BOX_RADIUS_OPTIONS = LAYOUT_RADIUS_OPTIONS;\nexport const BOX_POSITION_OPTIONS = ['static', 'relative', 'absolute', 'sticky', 'fixed'] as const;\nexport const BOX_DIRECTION_OPTIONS = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nexport const BOX_JUSTIFY_CONTENT_OPTIONS = [\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'start',\n 'end',\n] as const;\nexport const DIVIDER_TONE_OPTIONS = ['subtle', 'strong', 'inverse'] as const;\nexport const DIVIDER_ORIENTATION_OPTIONS = ['horizontal', 'vertical'] as const;\nexport const DIVIDER_WEIGHT_OPTIONS = ['regular', 'strong'] as const;\nexport const DIVIDER_SPACING_OPTIONS = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '8',\n '10',\n '0.25',\n '0.5',\n '1.5',\n '2.5',\n] as const;\nexport const GRID_SPACING_OPTIONS = [...DIVIDER_SPACING_OPTIONS] as const;\nexport const GRID_AUTO_FLOW_OPTIONS = ['row', 'column', 'row dense', 'column dense'] as const;\nexport const LAYOUT_ALIGN_OPTIONS = ['start', 'center', 'end', 'stretch', 'baseline'] as const;\nexport const GRID_ALIGN_ITEMS_OPTIONS = [\n 'stretch',\n 'flex-start',\n 'flex-end',\n 'center',\n 'baseline',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n] as const;\nexport const LAYOUT_JUSTIFY_OPTIONS = [\n 'start',\n 'center',\n 'end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n] as const;\nexport const STACK_DIRECTION_OPTIONS = ['column', 'row'] as const;\nexport const STACK_WRAP_OPTIONS = ['nowrap', 'wrap', 'wrap-reverse'] as const;\nexport const SPACE_DISPLAY_OPTIONS = ['block', 'inline', 'inlineBlock'] as const;\n\nexport type LayoutTag = (typeof LAYOUT_TAG_OPTIONS)[number];\nexport type LayoutSpaceToken = (typeof LAYOUT_SPACE_OPTIONS)[number];\nexport type LayoutSpacingToken = Exclude<LayoutSpaceToken, 'auto'>;\nexport type LayoutRadiusToken = (typeof LAYOUT_RADIUS_OPTIONS)[number];\nexport type LayoutOverflow = (typeof LAYOUT_OVERFLOW_OPTIONS)[number];\nexport type BoxSurface = (typeof BOX_SURFACE_OPTIONS)[number];\nexport type BoxBorder = (typeof BOX_BORDER_OPTIONS)[number];\nexport type BoxElevation = (typeof BOX_ELEVATION_OPTIONS)[number];\nexport type BoxSpacing = LayoutSpacingToken | DividerSpacing;\nexport type BoxBorderStyle = (typeof BOX_BORDER_STYLE_OPTIONS)[number];\nexport type BoxDisplay = (typeof BOX_DISPLAY_OPTIONS)[number];\nexport type BoxRadius = (typeof BOX_RADIUS_OPTIONS)[number];\nexport type BoxPosition = (typeof BOX_POSITION_OPTIONS)[number];\nexport type BoxDirection = (typeof BOX_DIRECTION_OPTIONS)[number];\nexport type BoxJustifyContent = (typeof BOX_JUSTIFY_CONTENT_OPTIONS)[number];\nexport type DividerTone = (typeof DIVIDER_TONE_OPTIONS)[number];\nexport type DividerOrientation = (typeof DIVIDER_ORIENTATION_OPTIONS)[number];\nexport type DividerWeight = (typeof DIVIDER_WEIGHT_OPTIONS)[number];\nexport type DividerSpacing = (typeof DIVIDER_SPACING_OPTIONS)[number];\nexport type GridSpacing = LayoutSpacingToken | DividerSpacing;\nexport type GridAutoFlow = (typeof GRID_AUTO_FLOW_OPTIONS)[number];\nexport type GridAlignItems = (typeof GRID_ALIGN_ITEMS_OPTIONS)[number];\nexport type LayoutAlign = (typeof LAYOUT_ALIGN_OPTIONS)[number];\nexport type LayoutJustify = (typeof LAYOUT_JUSTIFY_OPTIONS)[number];\nexport type StackDirection = (typeof STACK_DIRECTION_OPTIONS)[number];\nexport type StackWrap = (typeof STACK_WRAP_OPTIONS)[number];\nexport type SpaceDisplay = (typeof SPACE_DISPLAY_OPTIONS)[number];\nexport type LayoutDimension = string | number | null | undefined;\nexport type LayoutBreakpoint = 'base' | 'tablet' | 'desktop';\n\nconst LAYOUT_BREAKPOINT_TABLET_PX = 768;\nconst LAYOUT_BREAKPOINT_DESKTOP_PX = 1366;\n\nconst SPACE_TOKEN_VALUES: Record<LayoutSpaceToken, string> = {\n none: 'var(--tbk-ds-gap-0)',\n '3xs': '3px',\n '2xs': '5px',\n xs: 'var(--tbk-ds-gap-Xs)',\n sm: 'var(--tbk-ds-gap-sm)',\n md: 'var(--tbk-ds-gap-md)',\n lg: 'var(--tbk-ds-gap-lg)',\n xl: 'var(--tbk-ds-gap-xl)',\n '2xl': '60px',\n '3xl': '70px',\n auto: 'auto',\n};\n\nconst RADIUS_TOKEN_VALUES: Record<LayoutRadiusToken, string> = {\n none: 'var(--tbk-ds-border-width-0)',\n xs: 'var(--tbk-ds-border-radius-xs-4)',\n sm: 'var(--tbk-ds-border-radius-sm-5)',\n md: 'var(--tbk-ds-border-radius-md-10)',\n lg: 'var(--tbk-ds-border-radius-lg-15)',\n full: 'var(--tbk-ds-border-radius-rounded-999)',\n};\n\nconst SURFACE_TOKEN_VALUES: Record<BoxSurface, string> = {\n transparent: 'transparent',\n default: 'var(--tbk-ds-bg-color-white-bg)',\n subtle: 'var(--tbk-ds-bg-color-gray-200)',\n emphasis: 'var(--tbk-ds-bg-color-base-bg)',\n 'brand-subtle': 'var(--tbk-ds-bg-color-blue-100)',\n};\n\nconst BORDER_TOKEN_VALUES: Record<BoxBorder, string> = {\n none: 'transparent',\n subtle: 'var(--tbk-ds-color-border-default)',\n default: 'var(--tbk-ds-color-border-gray)',\n brand: 'var(--tbk-ds-color-border-enabled)',\n disabled: 'var(--tbk-ds-color-border-disabled)',\n critical: 'var(--tbk-ds-color-border-critical)',\n warning: 'var(--tbk-ds-color-border-warning)',\n success: 'var(--tbk-ds-color-border-success)',\n};\n\nconst ELEVATION_TOKEN_VALUES: Record<BoxElevation, string> = {\n none: 'none',\n sm: 'var(--tbk-ds-shadow-sm)',\n md: 'var(--tbk-ds-shadow-md)',\n};\n\nconst DIVIDER_TONE_VALUES: Record<DividerTone, string> = {\n subtle: 'var(--tbk-ds-color-border-default)',\n strong: 'var(--tbk-ds-color-border-gray)',\n inverse: 'var(--tbk-ds-bg-color-white-bg)',\n};\n\nconst NUMERIC_SPACING_VALUES: Record<DividerSpacing, string> = {\n '0': 'var(--tbk-ds-gap-0)',\n '0.25': '1px',\n '0.5': '2px',\n '1': '4px',\n '1.5': '6px',\n '2': '8px',\n '2.5': 'var(--tbk-ds-gap-Xs)',\n '3': '12px',\n '4': '16px',\n '5': 'var(--tbk-ds-gap-sm)',\n '6': '24px',\n '8': '32px',\n '10': 'var(--tbk-ds-gap-lg)',\n};\n\nexport function getCurrentLayoutBreakpoint(): LayoutBreakpoint {\n if (typeof window === 'undefined') {\n return 'base';\n }\n\n if (window.innerWidth >= LAYOUT_BREAKPOINT_DESKTOP_PX) {\n return 'desktop';\n }\n\n if (window.innerWidth >= LAYOUT_BREAKPOINT_TABLET_PX) {\n return 'tablet';\n }\n\n return 'base';\n}\n\nexport function resolveResponsiveValue<T>(\n breakpoint: LayoutBreakpoint,\n base: T,\n tablet: T | null | undefined,\n desktop: T | null | undefined,\n): T {\n if (breakpoint === 'desktop') {\n return desktop ?? tablet ?? base;\n }\n\n if (breakpoint === 'tablet') {\n return tablet ?? base;\n }\n\n return base;\n}\n\nexport function resolveSpaceToken(\n value: LayoutSpaceToken | null | undefined,\n fallback: LayoutSpaceToken = 'none',\n): string {\n return SPACE_TOKEN_VALUES[value ?? fallback];\n}\n\nexport function resolveRadiusToken(\n value: LayoutRadiusToken | null | undefined,\n fallback: LayoutRadiusToken = 'none',\n): string {\n return RADIUS_TOKEN_VALUES[value ?? fallback];\n}\n\nexport function resolveDimensionValue(value: LayoutDimension): string | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n if (typeof value === 'number') {\n return `${value}px`;\n }\n\n return value;\n}\n\nexport function resolveSurfaceToken(\n value: BoxSurface | null | undefined,\n fallback: BoxSurface = 'transparent',\n): string {\n return SURFACE_TOKEN_VALUES[value ?? fallback];\n}\n\nexport function resolveBorderToken(\n value: BoxBorder | null | undefined,\n fallback: BoxBorder = 'none',\n): string {\n return BORDER_TOKEN_VALUES[value ?? fallback];\n}\n\nexport function resolveElevationToken(\n value: BoxElevation | null | undefined,\n fallback: BoxElevation = 'none',\n): string {\n return ELEVATION_TOKEN_VALUES[value ?? fallback];\n}\n\nexport function resolveShadowToken(\n value: BoxElevation | null | undefined,\n fallback: BoxElevation = 'none',\n): string {\n return resolveElevationToken(value, fallback);\n}\n\nexport function resolveBoxSpacingValue(\n value: BoxSpacing | null | undefined,\n fallback: BoxSpacing = '0',\n): string {\n const spacing = value ?? fallback;\n\n if ((DIVIDER_SPACING_OPTIONS as readonly string[]).includes(spacing)) {\n return resolveDividerSpacingValue(spacing as DividerSpacing);\n }\n\n return resolveSpaceToken(spacing as LayoutSpaceToken);\n}\n\nexport function resolveDividerToneToken(\n value: DividerTone | null | undefined,\n fallback: DividerTone = 'subtle',\n): string {\n return DIVIDER_TONE_VALUES[value ?? fallback];\n}\n\nexport function resolveDividerThicknessToken(\n value: DividerWeight | null | undefined,\n fallback: DividerWeight = 'regular',\n): string {\n if ((value ?? fallback) === 'strong') {\n return 'var(--tbk-ds-border-width-sm)';\n }\n\n return 'var(--tbk-ds-border-width-xs)';\n}\n\nexport function resolveDividerSpacingValue(\n value: DividerSpacing | null | undefined,\n fallback: DividerSpacing = '0',\n): string {\n return NUMERIC_SPACING_VALUES[value ?? fallback];\n}\n\nexport function resolveGridSpacingValue(\n value: GridSpacing | null | undefined,\n fallback: GridSpacing = '0',\n): string {\n const spacing = value ?? fallback;\n\n if ((DIVIDER_SPACING_OPTIONS as readonly string[]).includes(spacing)) {\n return resolveDividerSpacingValue(spacing as DividerSpacing);\n }\n\n return resolveSpaceToken(spacing as LayoutSpaceToken);\n}\n\nexport function resolveFlexAlign(\n value: LayoutAlign | null | undefined,\n fallback: LayoutAlign = 'stretch',\n): string {\n switch (value ?? fallback) {\n case 'start':\n return 'flex-start';\n case 'end':\n return 'flex-end';\n default:\n return value ?? fallback;\n }\n}\n\nexport function resolveFlexJustify(\n value: LayoutJustify | null | undefined,\n fallback: LayoutJustify = 'start',\n): string {\n switch (value ?? fallback) {\n case 'start':\n return 'flex-start';\n case 'end':\n return 'flex-end';\n default:\n return value ?? fallback;\n }\n}\n\nexport function resolveGridAlignment(\n value: GridAlignItems | null | undefined,\n fallback: GridAlignItems = 'stretch',\n): string {\n return value ?? fallback;\n}\n\nexport function resolveGridJustify(\n value: LayoutJustify | null | undefined,\n fallback: LayoutJustify = 'start',\n): string {\n return value ?? fallback;\n}\n\nexport function resolveSpaceDisplay(value: SpaceDisplay | null | undefined): string {\n if ((value ?? 'block') === 'inlineBlock') {\n return 'inline-block';\n }\n\n return value ?? 'block';\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n booleanAttribute,\n} from '@angular/core';\nimport {\n BOX_BORDER_OPTIONS,\n BOX_BORDER_STYLE_OPTIONS,\n BOX_DIRECTION_OPTIONS,\n BOX_DISPLAY_OPTIONS,\n BOX_ELEVATION_OPTIONS,\n BOX_JUSTIFY_CONTENT_OPTIONS,\n BOX_POSITION_OPTIONS,\n BOX_RADIUS_OPTIONS,\n BOX_SPACING_OPTIONS,\n BOX_SURFACE_OPTIONS,\n BoxBorder,\n BoxBorderStyle,\n BoxDirection,\n BoxDisplay,\n BoxElevation,\n BoxJustifyContent,\n BoxPosition,\n BoxRadius,\n BoxSpacing,\n BoxSurface,\n GRID_ALIGN_ITEMS_OPTIONS,\n GridAlignItems,\n LAYOUT_OVERFLOW_OPTIONS,\n LAYOUT_SPACE_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n LayoutDimension,\n LayoutOverflow,\n LayoutTag,\n LayoutBreakpoint,\n getCurrentLayoutBreakpoint,\n resolveBorderToken,\n resolveBoxSpacingValue,\n resolveDimensionValue,\n resolveElevationToken,\n resolveRadiusToken,\n resolveResponsiveValue,\n resolveSurfaceToken,\n} from '../layout.primitives';\n\nexport {\n BOX_BORDER_OPTIONS,\n BOX_BORDER_STYLE_OPTIONS,\n BOX_DIRECTION_OPTIONS,\n BOX_DISPLAY_OPTIONS,\n BOX_ELEVATION_OPTIONS,\n BOX_JUSTIFY_CONTENT_OPTIONS,\n BOX_POSITION_OPTIONS,\n BOX_RADIUS_OPTIONS,\n BOX_SPACING_OPTIONS,\n BOX_SURFACE_OPTIONS,\n GRID_ALIGN_ITEMS_OPTIONS,\n LAYOUT_OVERFLOW_OPTIONS,\n LAYOUT_SPACE_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n};\n\n@Component({\n selector: 'tbk-box',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './box.component.html',\n styleUrl: './box.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BoxComponent {\n private layoutBreakpoint: LayoutBreakpoint = getCurrentLayoutBreakpoint();\n\n @Input() as: LayoutTag = 'div';\n @Input() padding: BoxSpacing = '0';\n @Input() paddingX: BoxSpacing | null = null;\n @Input() paddingY: BoxSpacing | null = null;\n @Input() paddingTop: BoxSpacing | null = null;\n @Input() paddingBottom: BoxSpacing | null = null;\n @Input() paddingLeft: BoxSpacing | null = null;\n @Input() paddingRight: BoxSpacing | null = null;\n @Input() paddingTablet: BoxSpacing | null = null;\n @Input() paddingDesktop: BoxSpacing | null = null;\n @Input() paddingXTablet: BoxSpacing | null = null;\n @Input() paddingXDesktop: BoxSpacing | null = null;\n @Input() paddingYTablet: BoxSpacing | null = null;\n @Input() paddingYDesktop: BoxSpacing | null = null;\n @Input() margin: BoxSpacing = '0';\n @Input() marginX: BoxSpacing | null = null;\n @Input() marginY: BoxSpacing | null = null;\n @Input() marginTop: BoxSpacing | null = null;\n @Input() marginBottom: BoxSpacing | null = null;\n @Input() marginLeft: BoxSpacing | null = null;\n @Input() marginRight: BoxSpacing | null = null;\n @Input() surface: BoxSurface = 'transparent';\n @Input() border: BoxBorder = 'none';\n @Input() borderStyle: BoxBorderStyle = 'none';\n @Input() radius: BoxRadius = 'none';\n @Input() display: BoxDisplay = 'block';\n @Input() alignItems: GridAlignItems | null = null;\n @Input() direction: BoxDirection | null = null;\n @Input() justifyContent: BoxJustifyContent | null = null;\n @Input() gap: BoxSpacing | null = null;\n @Input() elevation: BoxElevation = 'none';\n @Input() position: BoxPosition | null = null;\n @Input() grow: number | null = null;\n @Input() shrink: number | null = null;\n @Input() basis: LayoutDimension = null;\n @Input() flex: string | null = null;\n @Input() width: LayoutDimension = null;\n @Input() height: LayoutDimension = null;\n @Input() minWidth: LayoutDimension = null;\n @Input() minHeight: LayoutDimension = null;\n @Input() maxWidth: LayoutDimension = null;\n @Input() maxHeight: LayoutDimension = null;\n @Input() overflow: LayoutOverflow = 'visible';\n @Input({ transform: booleanAttribute }) fullWidth = false;\n @Input({ transform: booleanAttribute }) fullHeight = false;\n @Input() elementId: string | null = null;\n @Input() role: string | null = null;\n @Input() ariaLabel: string | null = null;\n @Input() ariaLabelledby: string | null = null;\n @Input() ariaDescribedby: string | null = null;\n\n get resolvedTag(): LayoutTag {\n return LAYOUT_TAG_OPTIONS.includes(this.as) ? this.as : 'div';\n }\n\n @HostListener('window:resize')\n onViewportResize(): void {\n this.layoutBreakpoint = getCurrentLayoutBreakpoint();\n }\n\n get boxStyles(): Record<string, string | null> {\n const paddingTop = resolveBoxSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.paddingTop ?? this.paddingY ?? this.padding,\n this.paddingYTablet ?? this.paddingTablet ?? this.paddingTop ?? this.paddingY ?? this.padding,\n this.paddingYDesktop ??\n this.paddingDesktop ??\n this.paddingYTablet ??\n this.paddingTablet ??\n this.paddingTop ??\n this.paddingY ??\n this.padding,\n ),\n );\n const paddingBottom = resolveBoxSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.paddingBottom ?? this.paddingY ?? this.padding,\n this.paddingYTablet ?? this.paddingTablet ?? this.paddingBottom ?? this.paddingY ?? this.padding,\n this.paddingYDesktop ??\n this.paddingDesktop ??\n this.paddingYTablet ??\n this.paddingTablet ??\n this.paddingBottom ??\n this.paddingY ??\n this.padding,\n ),\n );\n const paddingLeft = resolveBoxSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.paddingLeft ?? this.paddingX ?? this.padding,\n this.paddingXTablet ?? this.paddingTablet ?? this.paddingLeft ?? this.paddingX ?? this.padding,\n this.paddingXDesktop ??\n this.paddingDesktop ??\n this.paddingXTablet ??\n this.paddingTablet ??\n this.paddingLeft ??\n this.paddingX ??\n this.padding,\n ),\n );\n const paddingRight = resolveBoxSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.paddingRight ?? this.paddingX ?? this.padding,\n this.paddingXTablet ?? this.paddingTablet ?? this.paddingRight ?? this.paddingX ?? this.padding,\n this.paddingXDesktop ??\n this.paddingDesktop ??\n this.paddingXTablet ??\n this.paddingTablet ??\n this.paddingRight ??\n this.paddingX ??\n this.padding,\n ),\n );\n const resolvedDisplay = this.display === 'inline' ? 'inline-block' : this.display;\n const hasBorder = this.borderStyle !== 'none' && this.border !== 'none';\n\n return {\n display: resolvedDisplay,\n 'box-sizing': 'border-box',\n 'min-width': resolveDimensionValue(this.minWidth) ?? '0',\n width: this.fullWidth ? '100%' : resolveDimensionValue(this.width),\n height: this.fullHeight ? '100%' : resolveDimensionValue(this.height),\n 'min-height': resolveDimensionValue(this.minHeight),\n 'max-width': resolveDimensionValue(this.maxWidth),\n 'max-height': resolveDimensionValue(this.maxHeight),\n 'padding-top': paddingTop,\n 'padding-bottom': paddingBottom,\n 'padding-left': paddingLeft,\n 'padding-right': paddingRight,\n 'margin-top': resolveBoxSpacingValue(this.marginTop ?? this.marginY ?? this.margin),\n 'margin-bottom': resolveBoxSpacingValue(this.marginBottom ?? this.marginY ?? this.margin),\n 'margin-left': resolveBoxSpacingValue(this.marginLeft ?? this.marginX ?? this.margin),\n 'margin-right': resolveBoxSpacingValue(this.marginRight ?? this.marginX ?? this.margin),\n background: resolveSurfaceToken(this.surface),\n 'border-style': this.borderStyle,\n 'border-width': hasBorder\n ? 'var(--tbk-ds-border-width-xs)'\n : 'var(--tbk-ds-border-width-0)',\n 'border-color': hasBorder ? resolveBorderToken(this.border) : 'transparent',\n 'border-radius': resolveRadiusToken(this.radius),\n 'box-shadow': resolveElevationToken(this.elevation),\n 'align-items': this.alignItems,\n 'flex-direction': this.direction,\n 'justify-content': this.justifyContent,\n gap: this.gap ? resolveBoxSpacingValue(this.gap) : null,\n position: this.position,\n 'flex-grow': this.grow !== null ? String(this.grow) : null,\n 'flex-shrink': this.shrink !== null ? String(this.shrink) : null,\n 'flex-basis': resolveDimensionValue(this.basis),\n flex: this.flex,\n overflow: this.overflow,\n };\n }\n}\n","<ng-container [ngSwitch]=\"resolvedTag\">\n <section\n *ngSwitchCase=\"'section'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </section>\n\n <article\n *ngSwitchCase=\"'article'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </article>\n\n <aside\n *ngSwitchCase=\"'aside'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </aside>\n\n <header\n *ngSwitchCase=\"'header'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </header>\n\n <footer\n *ngSwitchCase=\"'footer'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </footer>\n\n <main\n *ngSwitchCase=\"'main'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </main>\n\n <nav\n *ngSwitchCase=\"'nav'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </nav>\n\n <span\n *ngSwitchCase=\"'span'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </span>\n\n <ul\n *ngSwitchCase=\"'ul'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ul>\n\n <ol\n *ngSwitchCase=\"'ol'\"\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ol>\n\n <div\n *ngSwitchDefault\n class=\"tbk-box\"\n [ngStyle]=\"boxStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n booleanAttribute,\n} from '@angular/core';\nimport {\n DIVIDER_ORIENTATION_OPTIONS,\n DIVIDER_SPACING_OPTIONS,\n DIVIDER_TONE_OPTIONS,\n DIVIDER_WEIGHT_OPTIONS,\n DividerOrientation,\n DividerSpacing,\n DividerTone,\n DividerWeight,\n LAYOUT_SPACING_OPTIONS,\n LayoutDimension,\n LayoutSpacingToken,\n resolveDimensionValue,\n resolveDividerSpacingValue,\n resolveDividerThicknessToken,\n resolveDividerToneToken,\n resolveSpaceToken,\n} from '../layout.primitives';\n\nexport {\n DIVIDER_ORIENTATION_OPTIONS,\n DIVIDER_SPACING_OPTIONS,\n DIVIDER_TONE_OPTIONS,\n DIVIDER_WEIGHT_OPTIONS,\n LAYOUT_SPACING_OPTIONS,\n};\n\n@Component({\n selector: 'tbk-divider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './divider.component.html',\n styleUrl: './divider.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input() orientation: DividerOrientation = 'horizontal';\n @Input() tone: DividerTone = 'subtle';\n @Input() weight: DividerWeight = 'regular';\n @Input() spacing: DividerSpacing = '0';\n @Input() inset: LayoutSpacingToken | null = null;\n @Input() length: LayoutDimension = null;\n @Input({ transform: booleanAttribute }) decorative = true;\n @Input() ariaLabel: string | null = null;\n\n get dividerStyles(): Record<string, string | null> {\n const horizontal = this.orientation === 'horizontal';\n\n return {\n display: 'block',\n 'box-sizing': 'border-box',\n width: horizontal ? resolveDimensionValue(this.length) ?? '100%' : resolveDividerThicknessToken(this.weight),\n height: horizontal ? resolveDividerThicknessToken(this.weight) : resolveDimensionValue(this.length) ?? '100%',\n 'min-width': horizontal ? '0' : resolveDividerThicknessToken(this.weight),\n 'min-height': horizontal ? resolveDividerThicknessToken(this.weight) : '0',\n 'margin-inline': horizontal\n ? this.inset\n ? resolveSpaceToken(this.inset)\n : resolveDividerSpacingValue(this.spacing)\n : '0',\n 'margin-block': horizontal\n ? '0'\n : this.inset\n ? resolveSpaceToken(this.inset)\n : resolveDividerSpacingValue(this.spacing),\n background: resolveDividerToneToken(this.tone),\n border: '0',\n 'flex-shrink': '0',\n };\n }\n\n get resolvedRole(): string | null {\n return this.decorative ? null : 'separator';\n }\n}\n","<div\n class=\"tbk-divider\"\n [ngStyle]=\"dividerStyles\"\n [attr.role]=\"resolvedRole\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-orientation]=\"decorative ? null : orientation\"\n [attr.aria-label]=\"decorative ? null : ariaLabel\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n booleanAttribute,\n} from '@angular/core';\nimport {\n GRID_AUTO_FLOW_OPTIONS,\n GRID_ALIGN_ITEMS_OPTIONS,\n GRID_SPACING_OPTIONS,\n GridAutoFlow,\n GridAlignItems,\n GridSpacing,\n LAYOUT_JUSTIFY_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n LayoutBreakpoint,\n LayoutJustify,\n LayoutTag,\n getCurrentLayoutBreakpoint,\n resolveGridAlignment,\n resolveGridJustify,\n resolveGridSpacingValue,\n resolveResponsiveValue,\n} from '../layout.primitives';\n\nexport {\n GRID_AUTO_FLOW_OPTIONS,\n GRID_ALIGN_ITEMS_OPTIONS,\n GRID_SPACING_OPTIONS,\n LAYOUT_JUSTIFY_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n};\n\n@Component({\n selector: 'tbk-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './grid.component.html',\n styleUrl: './grid.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridComponent {\n private layoutBreakpoint: LayoutBreakpoint = getCurrentLayoutBreakpoint();\n\n @Input() as: LayoutTag = 'div';\n @Input() columns = 'repeat(12, minmax(0, 1fr))';\n @Input() columnsTablet: string | null = null;\n @Input() columnsDesktop: string | null = null;\n @Input() rows: string | null = null;\n @Input() areas: string | null = null;\n @Input() gap: GridSpacing = '0';\n @Input() columnGap: GridSpacing | null = null;\n @Input() rowGap: GridSpacing | null = null;\n @Input() gapTablet: GridSpacing | null = null;\n @Input() gapDesktop: GridSpacing | null = null;\n @Input() columnGapTablet: GridSpacing | null = null;\n @Input() columnGapDesktop: GridSpacing | null = null;\n @Input() rowGapTablet: GridSpacing | null = null;\n @Input() rowGapDesktop: GridSpacing | null = null;\n @Input() autoFlow: GridAutoFlow = 'row';\n @Input() alignItems: GridAlignItems = 'stretch';\n @Input() justifyItems: GridAlignItems = 'stretch';\n @Input() alignContent: LayoutJustify = 'start';\n @Input() justifyContent: LayoutJustify = 'start';\n @Input({ transform: booleanAttribute }) inline = false;\n @Input() elementId: string | null = null;\n @Input() role: string | null = null;\n @Input() ariaLabel: string | null = null;\n @Input() ariaLabelledby: string | null = null;\n @Input() ariaDescribedby: string | null = null;\n\n get resolvedTag(): LayoutTag {\n return LAYOUT_TAG_OPTIONS.includes(this.as) ? this.as : 'div';\n }\n\n @HostListener('window:resize')\n onViewportResize(): void {\n this.layoutBreakpoint = getCurrentLayoutBreakpoint();\n }\n\n get gridStyles(): Record<string, string | null> {\n const gap = resolveGridSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.gap,\n this.gapTablet ?? this.gap,\n this.gapDesktop ?? this.gapTablet ?? this.gap,\n ),\n );\n const columnGap = resolveGridSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.columnGap ?? this.gap,\n this.columnGapTablet ?? this.gapTablet ?? this.columnGap ?? this.gap,\n this.columnGapDesktop ??\n this.gapDesktop ??\n this.columnGapTablet ??\n this.gapTablet ??\n this.columnGap ??\n this.gap,\n ),\n );\n const rowGap = resolveGridSpacingValue(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.rowGap ?? this.gap,\n this.rowGapTablet ?? this.gapTablet ?? this.rowGap ?? this.gap,\n this.rowGapDesktop ??\n this.gapDesktop ??\n this.rowGapTablet ??\n this.gapTablet ??\n this.rowGap ??\n this.gap,\n ),\n );\n const columns = resolveResponsiveValue(\n this.layoutBreakpoint,\n this.columns,\n this.columnsTablet,\n this.columnsDesktop,\n );\n\n return {\n display: this.inline ? 'inline-grid' : 'grid',\n 'box-sizing': 'border-box',\n 'min-width': '0',\n 'grid-template-columns': columns,\n 'grid-template-rows': this.rows,\n 'grid-template-areas': this.areas,\n gap,\n 'column-gap': columnGap,\n 'row-gap': rowGap,\n 'grid-auto-flow': this.autoFlow,\n 'align-items': resolveGridAlignment(this.alignItems),\n 'justify-items': resolveGridAlignment(this.justifyItems),\n 'align-content': resolveGridJustify(this.alignContent),\n 'justify-content': resolveGridJustify(this.justifyContent),\n };\n }\n}\n","<ng-container [ngSwitch]=\"resolvedTag\">\n <section\n *ngSwitchCase=\"'section'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </section>\n\n <article\n *ngSwitchCase=\"'article'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </article>\n\n <aside\n *ngSwitchCase=\"'aside'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </aside>\n\n <header\n *ngSwitchCase=\"'header'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </header>\n\n <footer\n *ngSwitchCase=\"'footer'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </footer>\n\n <main\n *ngSwitchCase=\"'main'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </main>\n\n <nav\n *ngSwitchCase=\"'nav'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </nav>\n\n <span\n *ngSwitchCase=\"'span'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </span>\n\n <ul\n *ngSwitchCase=\"'ul'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ul>\n\n <ol\n *ngSwitchCase=\"'ol'\"\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ol>\n\n <div\n *ngSwitchDefault\n class=\"tbk-grid\"\n [ngStyle]=\"gridStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n LAYOUT_SPACING_OPTIONS,\n LayoutSpacingToken,\n SPACE_DISPLAY_OPTIONS,\n SpaceDisplay,\n resolveSpaceDisplay,\n resolveSpaceToken,\n} from '../layout.primitives';\n\nexport { LAYOUT_SPACING_OPTIONS, SPACE_DISPLAY_OPTIONS };\n\n@Component({\n selector: 'tbk-space',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './space.component.html',\n styleUrl: './space.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpaceComponent {\n @Input() h: LayoutSpacingToken = 'none';\n @Input() v: LayoutSpacingToken = 'none';\n @Input() display: SpaceDisplay = 'block';\n\n get spaceStyles(): Record<string, string> {\n const display = resolveSpaceDisplay(this.display);\n const width = this.h === 'none' ? (display === 'block' ? '100%' : '0') : resolveSpaceToken(this.h);\n const height = this.v === 'none' ? '0' : resolveSpaceToken(this.v);\n\n return {\n display,\n width,\n height,\n 'flex-shrink': '0',\n 'pointer-events': 'none',\n };\n }\n}\n","<span class=\"tbk-space\" [ngStyle]=\"spaceStyles\" aria-hidden=\"true\"></span>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n booleanAttribute,\n} from '@angular/core';\nimport {\n LAYOUT_ALIGN_OPTIONS,\n LAYOUT_JUSTIFY_OPTIONS,\n LAYOUT_SPACING_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n STACK_DIRECTION_OPTIONS,\n STACK_WRAP_OPTIONS,\n LayoutAlign,\n LayoutBreakpoint,\n LayoutJustify,\n LayoutSpacingToken,\n LayoutTag,\n StackDirection,\n StackWrap,\n getCurrentLayoutBreakpoint,\n resolveFlexAlign,\n resolveFlexJustify,\n resolveResponsiveValue,\n resolveSpaceToken,\n} from '../layout.primitives';\n\nexport {\n LAYOUT_ALIGN_OPTIONS,\n LAYOUT_JUSTIFY_OPTIONS,\n LAYOUT_SPACING_OPTIONS,\n LAYOUT_TAG_OPTIONS,\n STACK_DIRECTION_OPTIONS,\n STACK_WRAP_OPTIONS,\n};\n\n@Component({\n selector: 'tbk-stack',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stack.component.html',\n styleUrl: './stack.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackComponent {\n private layoutBreakpoint: LayoutBreakpoint = getCurrentLayoutBreakpoint();\n\n @Input() as: LayoutTag = 'div';\n @Input() direction: StackDirection = 'column';\n @Input() directionTablet: StackDirection | null = null;\n @Input() directionDesktop: StackDirection | null = null;\n @Input() gap: LayoutSpacingToken = 'md';\n @Input() gapTablet: LayoutSpacingToken | null = null;\n @Input() gapDesktop: LayoutSpacingToken | null = null;\n @Input() align: LayoutAlign = 'stretch';\n @Input() justify: LayoutJustify = 'start';\n @Input() wrap: StackWrap = 'nowrap';\n @Input({ transform: booleanAttribute }) inline = false;\n @Input({ transform: booleanAttribute }) fullWidth = false;\n @Input({ transform: booleanAttribute }) fullHeight = false;\n @Input() elementId: string | null = null;\n @Input() role: string | null = null;\n @Input() ariaLabel: string | null = null;\n @Input() ariaLabelledby: string | null = null;\n @Input() ariaDescribedby: string | null = null;\n\n get resolvedTag(): LayoutTag {\n return LAYOUT_TAG_OPTIONS.includes(this.as) ? this.as : 'div';\n }\n\n @HostListener('window:resize')\n onViewportResize(): void {\n this.layoutBreakpoint = getCurrentLayoutBreakpoint();\n }\n\n get stackStyles(): Record<string, string | null> {\n const direction = resolveResponsiveValue(\n this.layoutBreakpoint,\n this.direction,\n this.directionTablet,\n this.directionDesktop,\n );\n const gap = resolveSpaceToken(\n resolveResponsiveValue(\n this.layoutBreakpoint,\n this.gap,\n this.gapTablet,\n this.gapDesktop,\n ),\n );\n\n return {\n display: this.inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'min-width': '0',\n 'flex-direction': direction,\n gap,\n 'align-items': resolveFlexAlign(this.align),\n 'justify-content': resolveFlexJustify(this.justify),\n 'flex-wrap': this.wrap,\n width: this.fullWidth ? '100%' : null,\n height: this.fullHeight ? '100%' : null,\n };\n }\n}\n","<ng-container [ngSwitch]=\"resolvedTag\">\n <section\n *ngSwitchCase=\"'section'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </section>\n\n <article\n *ngSwitchCase=\"'article'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </article>\n\n <aside\n *ngSwitchCase=\"'aside'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </aside>\n\n <header\n *ngSwitchCase=\"'header'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </header>\n\n <footer\n *ngSwitchCase=\"'footer'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </footer>\n\n <main\n *ngSwitchCase=\"'main'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </main>\n\n <nav\n *ngSwitchCase=\"'nav'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </nav>\n\n <span\n *ngSwitchCase=\"'span'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </span>\n\n <ul\n *ngSwitchCase=\"'ul'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ul>\n\n <ol\n *ngSwitchCase=\"'ol'\"\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </ol>\n\n <div\n *ngSwitchDefault\n class=\"tbk-stack\"\n [ngStyle]=\"stackStyles\"\n [attr.id]=\"elementId\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n","import { CHART_COLOR_FAMILIES, ChartColorFamily } from '../Charts/chart-theme';\n\n/** Cor de uma série — uma família da paleta oficial de charts. */\nexport type LineChartColor = ChartColorFamily;\n\nexport const LINE_CHART_COLOR_OPTIONS: readonly LineChartColor[] = CHART_COLOR_FAMILIES;\n\n/** Variante: linha simples ou linha com área preenchida. */\nexport type LineChartVariant = 'line' | 'area';\n\n/** Posição do eixo de valores. */\nexport type LineChartYAxisPosition = 'left' | 'right';\n\n/** Uma série (linha) do gráfico. */\nexport interface LineChartSeries {\n /** Identificador estável. Gerado quando ausente. */\n readonly id?: string;\n /** Nome da série (usado em legenda/tooltip). */\n readonly name: string;\n /** Valores da série, alinhados a `categories`. */\n readonly data: readonly number[];\n /** Cor da série (paleta de charts). Default: ciclo por índice. */\n readonly color?: LineChartColor;\n}\n\n/** Série normalizada internamente (id e cor resolvidos). */\nexport interface NormalizedLineChartSeries extends LineChartSeries {\n readonly id: string;\n readonly color: LineChartColor;\n}\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport {\n LINE_CHART_COLOR_OPTIONS,\n LineChartSeries,\n LineChartVariant,\n LineChartYAxisPosition,\n NormalizedLineChartSeries,\n} from './line-chart.types';\n\nexport interface BuildLineChartOptionParams {\n readonly series: readonly LineChartSeries[];\n readonly categories: readonly string[];\n readonly variant: LineChartVariant;\n readonly smooth: boolean;\n readonly showSymbol: boolean;\n readonly showAxis: boolean;\n readonly showGrid: boolean;\n readonly showLegend: boolean;\n readonly yAxisPosition: LineChartYAxisPosition;\n readonly theme: ChartThemeTokens;\n}\n\n/** Converte um hex (#RRGGBB) em rgba com a opacidade dada. Outros formatos passam direto. */\nfunction withAlpha(color: string, alpha: number): string {\n const match = /^#?([0-9a-f]{6})$/i.exec(color.trim());\n if (!match) return color;\n const value = parseInt(match[1], 16);\n const r = (value >> 16) & 255;\n const g = (value >> 8) & 255;\n const b = value & 255;\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\n/** Normaliza séries resolvendo id e cor (ciclo por índice). */\nexport function normalizeLineChartSeries(\n series: readonly LineChartSeries[],\n): readonly NormalizedLineChartSeries[] {\n return series.map((item, index) => ({\n ...item,\n id: item.id ?? `series-${index}`,\n color: item.color ?? LINE_CHART_COLOR_OPTIONS[index % LINE_CHART_COLOR_OPTIONS.length],\n }));\n}\n\n/**\n * Monta o `EChartsOption` do gráfico de linha/área a partir das séries e do tema.\n * Função pura (sem DOM) — testável isoladamente.\n */\nexport function buildLineChartOption(params: BuildLineChartOptionParams): EChartsOption {\n const { categories, variant, smooth, showSymbol, showAxis, showGrid, showLegend, yAxisPosition, theme } =\n params;\n const series = normalizeLineChartSeries(params.series);\n const isArea = variant === 'area';\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n legend: { show: showLegend, textStyle: { color: theme.textSecondary, fontFamily: theme.fontFamily } },\n grid: {\n left: 8,\n right: 8,\n top: showLegend ? 32 : 12,\n bottom: 8,\n containLabel: true,\n },\n tooltip: {\n trigger: 'axis',\n backgroundColor: theme.surface,\n borderColor: theme.gridLine,\n textStyle: { color: theme.textPrimary, fontFamily: theme.fontFamily },\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: [...categories],\n axisLine: { show: showAxis, lineStyle: { color: theme.gridLine } },\n axisTick: { show: false },\n axisLabel: { color: theme.textTertiary, fontFamily: theme.fontFamily },\n },\n yAxis: {\n type: 'value',\n position: yAxisPosition,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: showAxis, color: theme.textTertiary, fontFamily: theme.fontFamily },\n splitLine: { show: showGrid, lineStyle: { color: theme.gridLine } },\n },\n series: series.map((item) => {\n const color = theme.colorByName[item.color];\n const hoverColor = theme.colorHoverByName?.[item.color] ?? color;\n return {\n id: item.id,\n name: item.name,\n type: 'line',\n data: [...item.data],\n smooth,\n showSymbol,\n symbolSize: 7,\n lineStyle: { color, width: 3, cap: 'round', join: 'round' },\n itemStyle: { color },\n emphasis: {\n focus: 'series',\n lineStyle: { color: hoverColor },\n itemStyle: { color: hoverColor },\n },\n ...(isArea\n ? {\n areaStyle: {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n { offset: 0, color: withAlpha(color, 0.28) },\n { offset: 1, color: withAlpha(color, 0) },\n ],\n },\n },\n }\n : {}),\n };\n }),\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport type { ECElementEvent } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { TextComponent } from '../Text/text.component';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport { buildLineChartOption } from './line-chart.options';\nimport {\n LineChartSeries,\n LineChartVariant,\n LineChartYAxisPosition,\n NormalizedLineChartSeries,\n} from './line-chart.types';\n\nexport type {\n LineChartColor,\n LineChartSeries,\n LineChartVariant,\n LineChartYAxisPosition,\n NormalizedLineChartSeries,\n} from './line-chart.types';\nexport { LINE_CHART_COLOR_OPTIONS } from './line-chart.types';\n\n/**\n * Gráfico de linha/área — wrapper do Design System sobre o ECharts\n * (`ngx-echarts`). A configuração do ECharts é derivada inteiramente dos tokens\n * (`chart-theme`). Nenhuma cor é hardcoded; nenhum token novo é criado.\n */\n@Component({\n selector: 'tbk-line-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective, TextComponent],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n templateUrl: './line-chart.component.html',\n styleUrls: ['./line-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChartComponent {\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n // ── Conteúdo ───────────────────────────────────────────────────────────────\n /** Séries (linhas) exibidas. */\n readonly series = input<readonly LineChartSeries[]>([]);\n /** Rótulos do eixo X. */\n readonly categories = input<readonly string[]>([]);\n\n // ── Aparência ─────────────────────────────────────────────────────────────────\n readonly variant = input<LineChartVariant>('line');\n readonly smooth = input(false, { transform: booleanAttribute });\n readonly showSymbol = input(false, { transform: booleanAttribute });\n readonly showAxis = input(true, { transform: booleanAttribute });\n readonly showGrid = input(true, { transform: booleanAttribute });\n readonly showLegend = input(false, { transform: booleanAttribute });\n readonly yAxisPosition = input<LineChartYAxisPosition>('left');\n /** Altura do gráfico em pixels. */\n readonly height = input<number, unknown>(240, { transform: numberAttribute });\n\n // ── i18n / a11y ────────────────────────────────────────────────────────────────\n readonly ariaLabel = input<string>('Gráfico de linha');\n readonly emptyLabel = input<string>('Sem dados para exibir');\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly pointClicked = output<ECElementEvent>();\n\n // ── Config do ECharts ───────────────────────────────────────────────────────────\n readonly initOpts = { renderer: 'svg' as const };\n\n readonly hasSeries = computed(() => (this.series() ?? []).some((item) => (item?.data ?? []).length > 0));\n\n readonly option = computed(() =>\n buildLineChartOption({\n series: this.series() ?? [],\n categories: this.categories() ?? [],\n variant: this.variant() ?? 'line',\n smooth: this.smooth() ?? false,\n showSymbol: this.showSymbol() ?? false,\n showAxis: this.showAxis() ?? true,\n showGrid: this.showGrid() ?? true,\n showLegend: this.showLegend() ?? false,\n yAxisPosition: this.yAxisPosition() ?? 'left',\n theme: this.theme,\n }),\n );\n\n\n trackSeries(_index: number, item: NormalizedLineChartSeries): string {\n return item.id;\n }\n\n onChartClick(event: ECElementEvent): void {\n this.pointClicked.emit(event);\n }\n}\n","@if (hasSeries()) {\n <div\n echarts\n class=\"tbk-line-chart\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.height.px]=\"height()\"\n (chartClick)=\"onChartClick($event)\"\n ></div>\n} @else {\n <div class=\"tbk-line-chart__empty\">\n <tbk-text as=\"span\" [children]=\"emptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n}\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport { ResolvedMapChartPin, ResolvedMapChartRegion } from './map-chart.types';\n\nexport interface BuildMapChartOptionParams {\n readonly mapName: string;\n readonly nameProperty: string;\n readonly regions: readonly ResolvedMapChartRegion[];\n readonly pins: readonly ResolvedMapChartPin[];\n readonly emptyColor: string;\n readonly emptyHoverColor: string;\n readonly showLabels: boolean;\n readonly labelColor: string;\n readonly theme: ChartThemeTokens;\n}\n\n/** Monta o `EChartsOption` de um mapa coropletico. */\nexport function buildMapChartOption(params: BuildMapChartOptionParams): EChartsOption {\n const {\n mapName,\n nameProperty,\n regions,\n pins,\n emptyColor,\n emptyHoverColor,\n showLabels,\n labelColor,\n theme,\n } = params;\n\n const labelByCode = new Map(regions.map((region) => [region.code, region.statusLabel]));\n const pinnedCodes = new Set(pins.map((pin) => pin.code));\n\n const regionData = regions.map((region) => {\n const isLightColor =\n region.statusLabel === 'Indisponíveis' ||\n region.statusLabel === 'Unavailable' ||\n region.color === theme.neutral;\n\n return {\n name: region.code,\n value: 1,\n itemStyle: { areaColor: region.color },\n emphasis: {\n itemStyle: { areaColor: region.hoverColor },\n label: {\n show: showLabels,\n color: isLightColor ? theme.textPrimary : labelColor,\n },\n },\n label: pinnedCodes.has(region.code)\n ? { show: false }\n : {\n show: showLabels,\n color: isLightColor ? theme.textPrimary : labelColor,\n },\n };\n });\n\n const pinnedWithoutRegion = pins\n .filter((pin) => !labelByCode.has(pin.code))\n .map((pin) => ({\n name: pin.code,\n label: { show: false },\n emphasis: { itemStyle: { areaColor: emptyHoverColor } },\n }));\n\n const tooltipBg = theme.tooltipBg ?? '#40454C';\n const tooltipText = theme.tooltipText ?? '#FFFFFF';\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n tooltip: {\n trigger: 'item',\n backgroundColor: tooltipBg,\n borderWidth: 0,\n borderRadius: 5,\n padding: [14, 16],\n textStyle: {\n color: tooltipText,\n fontFamily: theme.fontFamily,\n fontSize: 12,\n fontWeight: 'bold',\n },\n extraCssText: 'box-shadow: var(--tbk-ds-shadow-lg);',\n formatter: (tooltipParams: unknown) => {\n const name = (tooltipParams as { name?: string })?.name ?? '';\n const status = labelByCode.get(name);\n return status ? `${name}: ${status}` : `${name}`;\n },\n },\n series: [\n {\n type: 'map',\n map: mapName,\n nameProperty,\n aspectScale: 1,\n roam: false,\n selectedMode: false,\n label: {\n show: showLabels,\n color: labelColor,\n fontSize: 8,\n fontFamily: theme.fontFamily,\n fontWeight: 'bold',\n },\n emphasis: {\n label: { show: showLabels, color: labelColor },\n itemStyle: { areaColor: emptyHoverColor },\n },\n itemStyle: {\n areaColor: emptyColor,\n borderColor: theme.surface,\n borderWidth: 0.8,\n },\n data: [...regionData, ...pinnedWithoutRegion],\n markPoint: pins.length\n ? {\n symbol: 'circle',\n symbolSize: 22,\n label: {\n show: true,\n formatter: '{b}',\n color: labelColor,\n fontSize: 8,\n fontFamily: theme.fontFamily,\n fontWeight: 'bold',\n },\n tooltip: { show: false },\n data: pins.map((pin) => {\n const statusLabel = labelByCode.get(pin.code);\n const isLightColor =\n statusLabel === 'Indisponíveis' ||\n statusLabel === 'Unavailable' ||\n pin.color === theme.neutral;\n\n return {\n name: pin.code,\n coord: [pin.coord[0], pin.coord[1]],\n value: pin.code,\n itemStyle: { color: pin.color },\n emphasis: { itemStyle: { color: pin.hoverColor } },\n label: {\n show: true,\n color: isLightColor ? theme.textPrimary : labelColor,\n },\n };\n }),\n }\n : undefined,\n },\n ],\n };\n}\n","import { CHART_COLOR_FAMILIES, ChartColorFamily } from '../Charts/chart-theme';\n\n/**\n * Tom de um status do mapa.\n * Usa exclusivamente famílias da paleta oficial de charts:\n * `--tbk-ds-color-chart-{tone}-1000` (e `*-1000-hover` para hover).\n * Os tokens CSS são lidos em runtime por `readChartThemeTokens()`.\n */\nexport type MapChartTone = ChartColorFamily;\n\nexport const MAP_CHART_TONE_OPTIONS: readonly MapChartTone[] = CHART_COLOR_FAMILIES;\n\n/** Definicao de um status (legenda + cor). */\nexport interface MapChartStatus {\n readonly id: string;\n readonly label: string;\n readonly tone: MapChartTone;\n}\n\n/** Associacao de uma regiao (UF) a um status. */\nexport interface MapChartRegion {\n /** Codigo da regiao, casando com `nameProperty` do GeoJSON (ex.: \"SP\"). */\n readonly code: string;\n /** Id do status atribuido a regiao. */\n readonly statusId: string;\n}\n\n/** Regiao resolvida (codigo + cor final). */\nexport interface ResolvedMapChartRegion {\n readonly code: string;\n readonly color: string;\n readonly hoverColor: string;\n readonly statusLabel: string;\n}\n\n/**\n * Marcador para um estado pequeno: exibe o codigo numa posicao deslocada do mapa,\n * facilitando a leitura.\n */\nexport interface MapChartPin {\n /** Codigo da regiao (ex.: \"RJ\"). Herda a cor do status da regiao. */\n readonly code: string;\n /** Posicao do marcador em [longitude, latitude]. */\n readonly coord: readonly [number, number];\n}\n\n/** Pin resolvido (com cor final herdada do status da regiao). */\nexport interface ResolvedMapChartPin {\n readonly code: string;\n readonly coord: readonly [number, number];\n readonly color: string;\n readonly hoverColor: string;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n effect,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { ECElementEvent } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport { TextComponent } from '../Text/text.component';\nimport { buildMapChartOption } from './map-chart.options';\nimport {\n MapChartPin,\n MapChartRegion,\n MapChartStatus,\n MapChartTone,\n ResolvedMapChartPin,\n ResolvedMapChartRegion,\n} from './map-chart.types';\n\nexport type {\n MapChartPin,\n MapChartRegion,\n MapChartStatus,\n MapChartTone,\n ResolvedMapChartPin,\n ResolvedMapChartRegion,\n} from './map-chart.types';\nexport { MAP_CHART_TONE_OPTIONS } from './map-chart.types';\n\n/**\n * Grafico de mapa coropletico: wrapper DS sobre ECharts.\n * As cores usam exclusivamente `ChartThemeTokens`, derivado dos tokens\n * `--tbk-ds-color-chart-*`.\n */\n@Component({\n selector: 'tbk-map-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective, TextComponent],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n templateUrl: './map-chart.component.html',\n styleUrls: ['./map-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapChartComponent {\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n readonly geoJson = input<unknown | null>(null);\n readonly mapName = input<string>('tbk-map');\n readonly nameProperty = input<string>('name');\n\n readonly regions = input<readonly MapChartRegion[]>([]);\n readonly statuses = input<readonly MapChartStatus[]>([]);\n readonly pins = input<readonly MapChartPin[]>([]);\n readonly emptyTone = input<MapChartTone>('gray');\n\n readonly showLegend = input(true, { transform: booleanAttribute });\n readonly showLabels = input(true, { transform: booleanAttribute });\n readonly height = input<number, unknown>(480, { transform: numberAttribute });\n\n readonly ariaLabel = input<string>('Mapa');\n readonly emptyLabel = input<string>('Sem dados para exibir');\n\n readonly regionClicked = output<ECElementEvent>();\n readonly initOpts = { renderer: 'svg' as const };\n\n private readonly registeredMap = signal<string | null>(null);\n\n readonly hasGeo = computed(() => this.geoJson() != null);\n readonly isReady = computed(() => this.hasGeo() && this.registeredMap() === this.mapName());\n\n readonly statusById = computed(\n () => new Map((this.statuses() ?? []).map((status) => [status?.id, status])),\n );\n\n readonly resolvedRegions = computed<readonly ResolvedMapChartRegion[]>(() => {\n const byId = this.statusById();\n\n return (this.regions() ?? []).flatMap((region) => {\n if (!region) return [];\n const status = byId.get(region.statusId);\n if (!status) return [];\n\n return [\n {\n code: region.code,\n color: this.toneToColor(status.tone),\n hoverColor: this.toneToHoverColor(status.tone),\n statusLabel: status.label,\n },\n ];\n });\n });\n\n readonly emptyColor = computed(() => this.toneToColor(this.emptyTone() ?? 'gray'));\n readonly emptyHoverColor = computed(() => this.toneToHoverColor(this.emptyTone() ?? 'gray'));\n\n readonly resolvedPins = computed<readonly ResolvedMapChartPin[]>(() => {\n const regionByCode = new Map((this.resolvedRegions() ?? []).map((region) => [region.code, region]));\n const emptyColor = this.emptyColor();\n const emptyHoverColor = this.emptyHoverColor();\n\n return (this.pins() ?? []).map((pin) => ({\n code: pin?.code,\n coord: pin?.coord ?? [0, 0],\n color: regionByCode.get(pin?.code)?.color ?? emptyColor,\n hoverColor: regionByCode.get(pin?.code)?.hoverColor ?? emptyHoverColor,\n }));\n });\n\n readonly option = computed(() =>\n buildMapChartOption({\n mapName: this.mapName() ?? 'tbk-map',\n nameProperty: this.nameProperty() ?? 'name',\n regions: this.resolvedRegions() ?? [],\n pins: this.resolvedPins() ?? [],\n emptyColor: this.emptyColor(),\n emptyHoverColor: this.emptyHoverColor(),\n showLabels: this.showLabels() ?? true,\n labelColor: this.theme.surface,\n theme: this.theme,\n }),\n );\n\n toneToColor(tone: MapChartTone): string {\n const safeTone = tone ?? 'gray';\n if (safeTone === 'gray') {\n return this.theme.neutral ?? '#CED1D4';\n }\n return this.theme.colorByName[safeTone] ?? '#ccc';\n }\n\n toneToHoverColor(tone: MapChartTone): string {\n const safeTone = tone ?? 'gray';\n if (safeTone === 'gray') {\n return '#B0B5B9';\n }\n return this.theme.colorHoverByName?.[safeTone] ?? this.toneToColor(safeTone);\n }\n\n trackStatus(_index: number, status: MapChartStatus): string {\n return status?.id;\n }\n\n\n constructor() {\n effect(() => {\n const geo = this.geoJson();\n const name = this.mapName();\n if (!geo) {\n this.registeredMap.set(null);\n return;\n }\n\n void import('echarts').then((echarts) => {\n // Guard: inputs may have changed while the dynamic import was in-flight.\n if (this.mapName() !== name) return;\n (echarts as unknown as { registerMap: (n: string, g: unknown) => void }).registerMap(\n name,\n geo,\n );\n this.registeredMap.set(name);\n });\n });\n }\n\n onChartClick(event: ECElementEvent): void {\n this.regionClicked.emit(event);\n }\n}\n","@if (hasGeo()) {\n <div class=\"tbk-map-chart\">\n @if (isReady()) {\n <div\n echarts\n class=\"tbk-map-chart__map\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.height.px]=\"height()\"\n (chartClick)=\"onChartClick($event)\"\n ></div>\n }\n\n @if (showLegend() && statuses().length) {\n <ul class=\"tbk-map-chart__legend\">\n @for (status of statuses(); track trackStatus($index, status)) {\n <li class=\"tbk-map-chart__legend-item\">\n <span\n class=\"tbk-map-chart__dot\"\n [style.background]=\"toneToColor(status.tone)\"\n aria-hidden=\"true\"\n ></span>\n <tbk-text\n as=\"span\"\n [children]=\"status.label\"\n color=\"Secondary\"\n size=\"font-size-350\"\n ></tbk-text>\n </li>\n }\n </ul>\n }\n </div>\n} @else {\n <div class=\"tbk-map-chart__empty\">\n <tbk-text as=\"span\" [children]=\"emptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { IconColor, IconName, IconsComponent } from '../../components/Icons/icons.component';\nimport { TextComponent } from '../../components/Text/text.component';\nimport { TooltipComponent } from '../../components/Tooltip/tooltip.component';\n\nlet nextMenuInstanceId = 0;\n\nexport type MenuPeekBehavior = 'hover-and-focus' | 'manual';\nexport type MenuChildExpandBehavior = 'click' | 'click-and-hover';\nexport type MenuCollapsedMode = 'uncontrolled' | 'controlled';\nexport type MenuLinkTarget = '_self' | '_blank' | '_parent' | '_top';\nexport type MenuBadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'critical';\nexport type MenuInteractionReason =\n | 'api'\n | 'click'\n | 'focus'\n | 'hover'\n | 'keyboard'\n | 'outside-click'\n | 'toggle-button';\n\nexport interface MenuItem {\n id: string;\n label: string;\n icon?: IconName;\n iconColor?: IconColor;\n href?: string;\n target?: MenuLinkTarget;\n rel?: string;\n active?: boolean;\n disabled?: boolean;\n expanded?: boolean;\n ariaLabel?: string;\n tooltip?: string;\n badge?: string | number;\n badgeTone?: MenuBadgeTone;\n badgeAriaLabel?: string;\n children?: readonly MenuItem[];\n}\n\n/** @deprecated Use `MenuItem`. */\nexport type MenuChildItem = MenuItem;\n\nexport interface MenuItemActivateEvent {\n item: Readonly<MenuItem>;\n parents: readonly MenuItem[];\n nativeEvent: Event;\n}\n\nexport interface MenuItemToggleEvent {\n item: Readonly<MenuItem>;\n parents: readonly MenuItem[];\n expanded: boolean;\n reason: MenuInteractionReason;\n nativeEvent?: Event;\n}\n\nexport interface MenuCollapsedStateChangeEvent {\n collapsed: boolean;\n reason: MenuInteractionReason;\n}\n\nexport interface MenuI18nLabels {\n navigationLabel: string;\n expandMenuLabel: string;\n collapseMenuLabel: string;\n emptyStateLabel: string;\n}\n\nexport const DEFAULT_MENU_I18N: Readonly<MenuI18nLabels> = {\n navigationLabel: 'Navegacao principal',\n expandMenuLabel: 'Expandir menu',\n collapseMenuLabel: 'Contrair menu',\n emptyStateLabel: 'Nenhum item de navegacao',\n};\n\nexport const ECONTRATO_MENU_ITEMS: readonly MenuItem[] = [\n {\n id: 'dashboard',\n label: 'Dashboard',\n icon: 'control-regular.svg',\n href: '#dashboard',\n },\n {\n id: 'produtos',\n label: 'Produtos',\n icon: 'layer-group-regular.svg',\n active: true,\n children: [\n {\n id: 'econtrato',\n label: 'eContrato',\n children: [\n {\n id: 'contratos',\n label: 'Contratos',\n href: '#contratos',\n },\n {\n id: 'lotes',\n label: 'Lotes',\n href: '#lotes',\n },\n {\n id: 'imagens',\n label: 'Imagens',\n href: '#imagens',\n },\n ],\n },\n ],\n },\n {\n id: 'acessos',\n label: 'Acessos',\n icon: 'user-large-regular.svg',\n children: [\n {\n id: 'usuarios',\n label: 'Usuarios',\n href: '#usuarios',\n },\n {\n id: 'perfis',\n label: 'Perfis',\n href: '#perfis',\n },\n ],\n },\n {\n id: 'relatorios',\n label: 'Relatorios',\n icon: 'chart-mixed-regular.svg',\n children: [\n {\n id: 'relatorios-gerados',\n label: 'Relatorios gerados',\n href: '#relatorios-gerados',\n },\n ],\n },\n {\n id: 'hub-normativo',\n label: 'Hub normativo',\n icon: 'gavel-regular-full.svg',\n href: '#hub-normativo',\n },\n {\n id: 'financeiro',\n label: 'Financeiro',\n icon: 'dollar-sign-regular-full.svg',\n children: [\n {\n id: 'relatorios-financeiros',\n label: 'Relatorios',\n href: '#relatorios-financeiros',\n },\n {\n id: 'pagamentos',\n label: 'Pagamentos',\n href: '#pagamentos',\n },\n ],\n },\n {\n id: 'configuracoes',\n label: 'Configuracoes',\n icon: 'gear-regular.svg',\n children: [\n {\n id: 'regras-de-formulario',\n label: 'Regras de formulario',\n href: '#regras-de-formulario',\n },\n ],\n },\n {\n id: 'suporte',\n label: 'Suporte',\n icon: 'message-question-regular-full.svg',\n href: '#suporte',\n },\n];\n\nexport const EGARANTIA_MENU_ITEMS: readonly MenuItem[] = [\n {\n id: 'dashboard',\n label: 'Dashboard',\n icon: 'control-regular.svg',\n href: '#dashboard',\n },\n {\n id: 'cadastros',\n label: 'Cadastros',\n icon: 'file-contract-regular.svg',\n children: [\n { id: 'clientes', label: 'Clientes', href: '#clientes' },\n { id: 'contratos', label: 'Contratos', href: '#contratos' },\n { id: 'credores', label: 'Credores', href: '#credores' },\n { id: 'departamentos', label: 'Departamentos', href: '#departamentos' },\n { id: 'entrega-voluntaria', label: 'Entrega Voluntaria', href: '#entrega-voluntaria' },\n { id: 'escritorios', label: 'Escritorios', href: '#escritorios' },\n { id: 'fornecedores', label: 'Fornecedores', href: '#fornecedores' },\n { id: 'localizadores', label: 'Localizadores', href: '#localizadores' },\n { id: 'matriz', label: 'Matriz', href: '#matriz' },\n { id: 'produtos', label: 'Produtos', href: '#produtos' },\n ],\n },\n {\n id: 'acessos',\n label: 'Acessos',\n icon: 'user-large-regular.svg',\n children: [\n { id: 'usuarios', label: 'Usuarios', href: '#usuarios' },\n { id: 'perfis', label: 'Perfis', href: '#perfis' },\n ],\n },\n {\n id: 'relatorios',\n label: 'Relatorios',\n icon: 'chart-mixed-regular.svg',\n href: '#relatorios',\n },\n {\n id: 'operacoes',\n label: 'Operacoes',\n icon: 'pen-regular-full.svg',\n active: true,\n children: [\n { id: 'acompanhar-processos', label: 'Acompanhar processos', href: '#acompanhar-processos' },\n { id: 'custas-solicitadas', label: 'Custas solicitadas', href: '#custas-solicitadas' },\n { id: 'enviar-lote', label: 'Enviar lote', href: '#enviar-lote' },\n { id: 'gestao-retomada-ba', label: 'Gestao de retomada BA', href: '#gestao-retomada-ba' },\n { id: 'processos-com-pendencias', label: 'Processos com pendencias', href: '#processos-com-pendencias' },\n { id: 'registrar-kit-extrajudicial', label: 'Registrar kit extrajudicial', href: '#registrar-kit-extrajudicial' },\n ],\n },\n {\n id: 'financeiro',\n label: 'Financeiro',\n icon: 'dollar-sign-regular-full.svg',\n children: [\n { id: 'financeiro-relatorios', label: 'Relatorios', href: '#financeiro-relatorios' },\n { id: 'pagamentos', label: 'Pagamentos', href: '#pagamentos' },\n ],\n },\n {\n id: 'configuracoes',\n label: 'Configuracoes',\n icon: 'gear-regular.svg',\n href: '#configuracoes',\n },\n];\n\n@Directive({\n selector: '[tbkMenuHeader]',\n standalone: true,\n})\nexport class MenuHeaderSlotDirective {}\n\n@Directive({\n selector: '[tbkMenuFooter]',\n standalone: true,\n})\nexport class MenuFooterSlotDirective {}\n\n@Component({\n selector: 'tbk-menu',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent, TooltipComponent],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent implements OnDestroy {\n private readonly explicitExpandedByParentId = new Map<string, string | null>();\n private readonly defaultExpandedByParentId = new Map<string, string>();\n private readonly hoveredExpandedByParentId = new Map<string, string>();\n private explicitItemsProvided = false;\n private presetState: 'eContrato' | 'eGarantia' = 'eContrato';\n private itemsState: readonly MenuItem[] = ECONTRATO_MENU_ITEMS;\n private initialActiveItemStateId: string | null = null;\n private selectedItemStateId: string | null = null;\n private controlledCollapsedState = false;\n private uncontrolledCollapsedState = false;\n private collapsedModeState: MenuCollapsedMode = 'uncontrolled';\n private hoverExpanded = false;\n private focusExpanded = false;\n private clickPinnedExpanded = false;\n private cachedI18n: MenuI18nLabels = DEFAULT_MENU_I18N;\n private cachedI18nKey: Partial<MenuI18nLabels> | null = null;\n private documentClickListener: ((event: MouseEvent) => void) | null = null;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {\n this.itemsState = this.getDefaultItemsForPreset(this.presetState);\n this.buildDefaultExpandedState();\n this.initialActiveItemStateId = this.findInitialSelectedItemState(this.itemsState, []);\n }\n\n ngOnDestroy(): void {\n this.detachDocumentClickListener();\n }\n\n @Input() ariaLabel = '';\n @Input() collapsible = true;\n @Input()\n set collapsedMode(value: MenuCollapsedMode | null | undefined) {\n const nextMode: MenuCollapsedMode = value === 'controlled' ? 'controlled' : 'uncontrolled';\n\n if (this.collapsedModeState === nextMode) {\n return;\n }\n\n this.collapsedModeState = nextMode;\n\n if (nextMode === 'uncontrolled') {\n this.uncontrolledCollapsedState = this.controlledCollapsedState;\n }\n\n this.clearInteractiveState(!this.collapsed);\n }\n\n get collapsedMode(): MenuCollapsedMode {\n return this.collapsedModeState;\n }\n\n @Input()\n set preset(value: 'eContrato' | 'eGarantia' | null | undefined) {\n const nextPreset = value === 'eGarantia' ? 'eGarantia' : 'eContrato';\n if (this.presetState === nextPreset) {\n return;\n }\n this.presetState = nextPreset;\n if (!this.explicitItemsProvided) {\n this.itemsState = this.getDefaultItemsForPreset(nextPreset);\n this.buildDefaultExpandedState();\n this.initialActiveItemStateId = this.findInitialSelectedItemState(this.itemsState, []);\n this.selectedItemStateId = null;\n this.clearInteractiveState(true);\n }\n }\n\n get preset(): 'eContrato' | 'eGarantia' {\n return this.presetState;\n }\n\n @Input() peekBehavior: MenuPeekBehavior = 'hover-and-focus';\n @Input() childExpandBehavior: MenuChildExpandBehavior = 'click-and-hover';\n @Input() emptyStateLabel = '';\n @Input() i18n: Partial<MenuI18nLabels> | null = null;\n\n @Input()\n set items(value: readonly MenuItem[] | null | undefined) {\n if (value !== undefined && value !== null) {\n this.explicitItemsProvided = true;\n this.itemsState = Array.isArray(value) ? value : this.getDefaultItemsForPreset(this.preset);\n } else {\n this.explicitItemsProvided = false;\n this.itemsState = this.getDefaultItemsForPreset(this.preset);\n }\n this.buildDefaultExpandedState();\n this.initialActiveItemStateId = this.findInitialSelectedItemState(this.itemsState, []);\n this.selectedItemStateId = null;\n this.clearInteractiveState(true);\n }\n\n get items(): readonly MenuItem[] {\n return this.itemsState;\n }\n\n private getDefaultItemsForPreset(preset: 'eContrato' | 'eGarantia'): readonly MenuItem[] {\n return preset === 'eGarantia' ? EGARANTIA_MENU_ITEMS : ECONTRATO_MENU_ITEMS;\n }\n\n @Input()\n set collapsed(value: boolean | string | null | undefined) {\n const nextValue = this.coerceBoolean(value);\n this.controlledCollapsedState = nextValue;\n\n if (this.collapsedMode === 'uncontrolled') {\n this.uncontrolledCollapsedState = nextValue;\n }\n\n this.clearInteractiveState(!this.collapsed);\n }\n\n get collapsed(): boolean {\n return this.collapsedMode === 'controlled'\n ? this.controlledCollapsedState\n : this.uncontrolledCollapsedState;\n }\n\n @Output() itemActivate = new EventEmitter<MenuItemActivateEvent>();\n @Output() itemToggle = new EventEmitter<MenuItemToggleEvent>();\n @Output() collapsedStateChange = new EventEmitter<MenuCollapsedStateChangeEvent>();\n\n /** @deprecated Use `itemActivate`. */\n @Output() itemSelect = new EventEmitter<MenuItem>();\n /** @deprecated Use `itemActivate`. */\n @Output() childSelect = new EventEmitter<{ parent: MenuItem; item: MenuItem }>();\n /** @deprecated Use `collapsedStateChange`. */\n @Output() collapsedChange = new EventEmitter<boolean>();\n\n @ContentChild(MenuHeaderSlotDirective)\n private readonly headerSlotDirective?: MenuHeaderSlotDirective;\n\n @ContentChild(MenuFooterSlotDirective)\n private readonly footerSlotDirective?: MenuFooterSlotDirective;\n\n readonly menuId = `tbk-menu-panel-${++nextMenuInstanceId}`;\n\n @HostBinding('class.tbk-menu-host--collapsed')\n get hostCollapsedClass(): boolean {\n return this.isCollapsed;\n }\n\n @HostBinding('attr.data-menu-state')\n get hostState(): string {\n return this.isCollapsed ? 'collapsed' : 'expanded';\n }\n\n get hasCustomHeaderSlot(): boolean {\n return !!this.headerSlotDirective;\n }\n\n get hasCustomFooterSlot(): boolean {\n return !!this.footerSlotDirective;\n }\n\n get resolvedItems(): readonly MenuItem[] {\n return this.itemsState;\n }\n\n get resolvedI18n(): MenuI18nLabels {\n // Memoiza pelo identity do input para evitar recriar objeto em todo CD.\n if (this.cachedI18nKey !== this.i18n) {\n this.cachedI18nKey = this.i18n;\n this.cachedI18n = { ...DEFAULT_MENU_I18N, ...(this.i18n ?? {}) };\n }\n return this.cachedI18n;\n }\n\n get resolvedAriaLabel(): string {\n return this.resolveText(this.ariaLabel, this.resolvedI18n.navigationLabel);\n }\n\n get resolvedEmptyStateLabel(): string {\n return this.resolveText(this.emptyStateLabel, this.resolvedI18n.emptyStateLabel);\n }\n\n get isCollapsed(): boolean {\n return (\n this.collapsible &&\n this.collapsed &&\n !this.hoverExpanded &&\n !this.focusExpanded &&\n !this.clickPinnedExpanded\n );\n }\n\n get toggleIcon(): IconName {\n // Ícone reflete o estado real do botão (sem considerar peek temporário),\n // espelhando o que `aria-expanded` anuncia para AT.\n return this.collapsed ? 'chevronRightDatepicker' : 'chevronLeftDatepicker';\n }\n\n get toggleAriaLabel(): string {\n return this.collapsed\n ? this.resolvedI18n.expandMenuLabel\n : this.resolvedI18n.collapseMenuLabel;\n }\n\n /** Estado do botão de colapso para AT — sem influência de peek temporário. */\n get toggleAriaExpanded(): boolean {\n return !this.collapsed;\n }\n\n get showsEmptyState(): boolean {\n return this.resolvedItems.length === 0;\n }\n\n trackByItemId(index: number, item: MenuItem): string {\n return item.id || `${index}`;\n }\n\n nextParents(parents: readonly MenuItem[], item: MenuItem): readonly MenuItem[] {\n return [\n ...parents,\n item,\n ];\n }\n\n hasChildren(item: MenuItem): boolean {\n return Array.isArray(item.children) && item.children.length > 0;\n }\n\n isTopLevel(level: number): boolean {\n return level === 0;\n }\n\n getTriggerPaddingInlineStart(level: number): number | null {\n return this.isTopLevel(level) ? null : 56 + Math.max(0, level - 1) * 20;\n }\n\n showsChevron(item: MenuItem): boolean {\n return this.hasChildren(item);\n }\n\n isExpanded(item: MenuItem, parents: readonly MenuItem[]): boolean {\n if (!this.hasChildren(item) || this.isCollapsed) {\n return false;\n }\n\n const parentStateId = this.parentStateId(parents);\n const itemStateId = this.itemStateId(item, parents);\n const explicitState = this.explicitExpandedByParentId.get(parentStateId);\n\n if (explicitState !== undefined) {\n return explicitState === itemStateId;\n }\n\n if (this.hoveredExpandedByParentId.get(parentStateId) === itemStateId) {\n return true;\n }\n\n return this.defaultExpandedByParentId.get(parentStateId) === itemStateId;\n }\n\n isCurrentPage(item: MenuItem, parents: readonly MenuItem[]): boolean {\n const itemStateId = this.itemStateId(item, parents);\n return this.resolvedActiveItemStateId === itemStateId && !this.hasChildren(item);\n }\n\n isCurrentBranch(item: MenuItem, parents: readonly MenuItem[]): boolean {\n const itemStateId = this.itemStateId(item, parents);\n const activeItemStateId = this.resolvedActiveItemStateId;\n\n return (\n activeItemStateId === itemStateId ||\n !!activeItemStateId?.startsWith(`${itemStateId}::`)\n );\n }\n\n isSelectedItem(item: MenuItem, parents: readonly MenuItem[]): boolean {\n return this.resolvedActiveItemStateId === this.itemStateId(item, parents);\n }\n\n isTopLevelBranchSelected(item: MenuItem, parents: readonly MenuItem[]): boolean {\n return parents.length === 0 && this.isCurrentBranch(item, parents);\n }\n\n isNestedItemSelected(item: MenuItem, parents: readonly MenuItem[]): boolean {\n return parents.length > 0 && this.isSelectedItem(item, parents);\n }\n\n getSubmenuId(item: MenuItem, parents: readonly MenuItem[]): string {\n return `tbk-menu-submenu-${this.itemStateId(item, parents)}`;\n }\n\n getItemStateId(item: MenuItem, parents: readonly MenuItem[]): string {\n return this.itemStateId(item, parents);\n }\n\n getItemAriaLabel(item: MenuItem): string {\n return `${item.ariaLabel || item.label}`.trim();\n }\n\n getItemTooltip(item: MenuItem, level: number): string | null {\n const explicitTooltip = `${item.tooltip ?? ''}`.trim();\n if (explicitTooltip) {\n return explicitTooltip;\n }\n\n return this.isCollapsed && this.isTopLevel(level) ? item.label : null;\n }\n\n getItemIconColor(item: MenuItem): IconColor {\n return item.iconColor || 'gradient';\n }\n\n getLinkRel(item: MenuItem): string | null {\n const explicitRel = `${item.rel ?? ''}`.trim();\n if (explicitRel) {\n return explicitRel;\n }\n\n return item.target === '_blank' ? 'noopener noreferrer' : null;\n }\n\n shouldRenderLink(item: MenuItem): boolean {\n return !this.hasChildren(item) && !item.disabled && !!`${item.href ?? ''}`.trim();\n }\n\n shouldRenderChildren(item: MenuItem, parents: readonly MenuItem[]): boolean {\n return this.isExpanded(item, parents);\n }\n\n hasBadge(item: MenuItem): boolean {\n return item.badge !== undefined && item.badge !== null && `${item.badge}`.trim() !== '';\n }\n\n getBadgeTone(item: MenuItem): MenuBadgeTone {\n return item.badgeTone || 'neutral';\n }\n\n getBadgeAriaLabel(item: MenuItem): string | null {\n const explicitLabel = `${item.badgeAriaLabel ?? ''}`.trim();\n if (explicitLabel) {\n return explicitLabel;\n }\n\n if (!this.hasBadge(item)) {\n return null;\n }\n\n return `${item.label}: ${item.badge}`;\n }\n\n private onDocumentClick = (event: MouseEvent): void => {\n if (!this.collapsed || !this.clickPinnedExpanded) {\n return;\n }\n const target = event.target;\n if (target instanceof Node && this.elementRef.nativeElement.contains(target)) {\n return;\n }\n this.collapseInteractiveMenu('outside-click');\n };\n\n private attachDocumentClickListener(): void {\n if (this.documentClickListener) {\n return;\n }\n this.documentClickListener = this.onDocumentClick;\n document.addEventListener('click', this.documentClickListener);\n }\n\n private detachDocumentClickListener(): void {\n if (!this.documentClickListener) {\n return;\n }\n document.removeEventListener('click', this.documentClickListener);\n this.documentClickListener = null;\n }\n\n onMenuMouseEnter(): void {\n if (this.peekBehavior !== 'hover-and-focus' || !this.collapsed || this.clickPinnedExpanded) {\n return;\n }\n\n this.hoverExpanded = true;\n this.emitCollapsedStateChange(false, 'hover');\n }\n\n onMenuMouseLeave(): void {\n if (this.peekBehavior !== 'hover-and-focus' || !this.collapsed || this.clickPinnedExpanded) {\n return;\n }\n\n this.hoverExpanded = false;\n this.hoveredExpandedByParentId.clear();\n this.emitCollapsedStateChange(true, 'hover');\n }\n\n onMenuFocusIn(): void {\n if (this.peekBehavior !== 'hover-and-focus' || !this.collapsed || this.clickPinnedExpanded) {\n return;\n }\n\n this.focusExpanded = true;\n this.emitCollapsedStateChange(false, 'focus');\n }\n\n onMenuFocusOut(event: FocusEvent): void {\n if (this.peekBehavior !== 'hover-and-focus' || !this.collapsed || this.clickPinnedExpanded) {\n return;\n }\n\n const nextFocusedElement = event.relatedTarget as Node | null;\n if (nextFocusedElement && this.elementRef.nativeElement.contains(nextFocusedElement)) {\n return;\n }\n\n this.focusExpanded = false;\n this.hoveredExpandedByParentId.clear();\n this.emitCollapsedStateChange(true, 'focus');\n }\n\n onToggleCollapse(): void {\n if (!this.collapsible) {\n return;\n }\n\n const nextCollapsedState = !this.collapsed;\n\n if (this.collapsedMode === 'uncontrolled') {\n this.uncontrolledCollapsedState = nextCollapsedState;\n this.clearInteractiveState(!nextCollapsedState);\n }\n\n this.collapsedChange.emit(nextCollapsedState);\n this.emitCollapsedStateChange(nextCollapsedState, 'toggle-button');\n }\n\n onItemHoverEnter(item: MenuItem, parents: readonly MenuItem[], level: number): void {\n if (\n this.childExpandBehavior !== 'click-and-hover' ||\n this.isTopLevel(level) ||\n !this.hasChildren(item) ||\n this.isCollapsed\n ) {\n return;\n }\n\n this.setHoveredExpandedItem(item, parents, true, 'hover');\n }\n\n onItemHoverLeave(item: MenuItem, parents: readonly MenuItem[], level: number): void {\n if (\n this.childExpandBehavior !== 'click-and-hover' ||\n this.isTopLevel(level) ||\n !this.hasChildren(item)\n ) {\n return;\n }\n\n this.setHoveredExpandedItem(item, parents, false, 'hover');\n }\n\n onButtonTriggerClick(item: MenuItem, parents: readonly MenuItem[], event: MouseEvent): void {\n if (item.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.hasChildren(item)) {\n this.setSelectedItem(item, parents);\n this.ensurePinnedExpansion();\n this.toggleExpandedItem(item, parents, 'click', event);\n return;\n }\n\n this.emitItemActivate(item, parents, event);\n }\n\n onAnchorTriggerClick(item: MenuItem, parents: readonly MenuItem[], event: MouseEvent): void {\n if (item.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.emitItemActivate(item, parents, event);\n }\n\n onTriggerKeydown(\n item: MenuItem,\n parents: readonly MenuItem[],\n level: number,\n event: KeyboardEvent,\n ): void {\n if (item.disabled) {\n return;\n }\n\n if (event.key === 'ArrowRight' && this.hasChildren(item)) {\n event.preventDefault();\n this.ensurePinnedExpansion();\n this.setExpandedItem(item, parents, true, 'keyboard', event);\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n if (this.hasChildren(item) && this.isExpanded(item, parents)) {\n event.preventDefault();\n this.setExpandedItem(item, parents, false, 'keyboard', event);\n return;\n }\n\n if (!this.isTopLevel(level) && parents.length) {\n event.preventDefault();\n this.focusItem(parents[parents.length - 1], parents.slice(0, -1));\n }\n\n return;\n }\n\n if (event.key === 'Escape' && this.collapsed && this.clickPinnedExpanded) {\n event.preventDefault();\n this.collapseInteractiveMenu('keyboard');\n this.focusCollapseToggle();\n }\n }\n\n private emitItemActivate(item: MenuItem, parents: readonly MenuItem[], nativeEvent: Event): void {\n this.setSelectedItem(item, parents);\n\n this.itemActivate.emit({\n item,\n parents,\n nativeEvent,\n });\n\n if (parents.length) {\n this.childSelect.emit({\n parent: parents[parents.length - 1],\n item,\n });\n } else {\n this.itemSelect.emit(item);\n }\n\n // Quando o menu está colapsado e o usuário ativa um item navegável dentro\n // do peek temporário (pin via clique), recolhe — AT/UI mantém consistência.\n if (this.collapsed && this.clickPinnedExpanded) {\n this.collapseInteractiveMenu('click');\n }\n }\n\n private toggleExpandedItem(\n item: MenuItem,\n parents: readonly MenuItem[],\n reason: MenuInteractionReason,\n nativeEvent?: Event,\n ): void {\n const nextExpandedState = !this.isExpanded(item, parents);\n this.setExpandedItem(item, parents, nextExpandedState, reason, nativeEvent);\n }\n\n private setExpandedItem(\n item: MenuItem,\n parents: readonly MenuItem[],\n expanded: boolean,\n reason: MenuInteractionReason,\n nativeEvent?: Event,\n ): void {\n if (!this.hasChildren(item)) {\n return;\n }\n\n const parentStateId = this.parentStateId(parents);\n const itemStateId = this.itemStateId(item, parents);\n const currentExpandedState = this.explicitExpandedByParentId.get(parentStateId);\n\n if (expanded) {\n if (currentExpandedState && currentExpandedState !== itemStateId) {\n this.clearDescendantState(currentExpandedState);\n }\n\n this.explicitExpandedByParentId.set(parentStateId, itemStateId);\n } else {\n this.explicitExpandedByParentId.set(parentStateId, null);\n this.clearDescendantState(itemStateId);\n }\n\n this.hoveredExpandedByParentId.delete(parentStateId);\n this.itemToggle.emit({\n item,\n parents,\n expanded,\n reason,\n nativeEvent,\n });\n }\n\n private setHoveredExpandedItem(\n item: MenuItem,\n parents: readonly MenuItem[],\n expanded: boolean,\n reason: MenuInteractionReason,\n ): void {\n const parentStateId = this.parentStateId(parents);\n const itemStateId = this.itemStateId(item, parents);\n\n if (this.explicitExpandedByParentId.get(parentStateId) === itemStateId) {\n return;\n }\n\n if (!expanded) {\n if (this.hoveredExpandedByParentId.get(parentStateId) === itemStateId) {\n this.hoveredExpandedByParentId.delete(parentStateId);\n this.clearDescendantState(itemStateId);\n this.itemToggle.emit({\n item,\n parents,\n expanded: false,\n reason,\n });\n }\n\n return;\n }\n\n const hoveredItemId = this.hoveredExpandedByParentId.get(parentStateId);\n if (hoveredItemId && hoveredItemId !== itemStateId) {\n this.clearDescendantState(hoveredItemId);\n }\n\n this.hoveredExpandedByParentId.set(parentStateId, itemStateId);\n this.itemToggle.emit({\n item,\n parents,\n expanded: true,\n reason,\n });\n }\n\n private ensurePinnedExpansion(): void {\n if (!this.collapsed) {\n return;\n }\n\n this.hoverExpanded = false;\n this.focusExpanded = false;\n this.clickPinnedExpanded = true;\n this.attachDocumentClickListener();\n this.emitCollapsedStateChange(false, 'click');\n }\n\n private focusItem(item: MenuItem, parents: readonly MenuItem[]): void {\n const itemStateId = this.itemStateId(item, parents);\n const interactiveElement = this.elementRef.nativeElement.querySelector<HTMLElement>(\n `[data-menu-item-id=\"${itemStateId}\"]`,\n );\n\n interactiveElement?.focus();\n }\n\n private focusCollapseToggle(): void {\n const toggleButton = this.elementRef.nativeElement.querySelector<HTMLElement>(\n '.tbk-menu__collapse-toggle',\n );\n\n toggleButton?.focus();\n }\n\n private buildDefaultExpandedState(): void {\n this.defaultExpandedByParentId.clear();\n this.walkExpandedDefaults(this.itemsState, []);\n }\n\n private walkExpandedDefaults(items: readonly MenuItem[], parents: readonly MenuItem[]): void {\n const expandableItem = items.find((item) => item.expanded && this.hasChildren(item));\n if (expandableItem) {\n this.defaultExpandedByParentId.set(\n this.parentStateId(parents),\n this.itemStateId(expandableItem, parents),\n );\n }\n\n items.forEach((item) => {\n if (!this.hasChildren(item)) {\n return;\n }\n\n this.walkExpandedDefaults(item.children ?? [], this.nextParents(parents, item));\n });\n }\n\n private findInitialSelectedItemState(\n items: readonly MenuItem[],\n parents: readonly MenuItem[],\n ): string | null {\n for (const item of items) {\n if (item.active) {\n return this.itemStateId(item, parents);\n }\n\n if (this.hasChildren(item)) {\n const nestedSelectedState = this.findInitialSelectedItemState(\n item.children ?? [],\n this.nextParents(parents, item),\n );\n\n if (nestedSelectedState) {\n return nestedSelectedState;\n }\n }\n }\n\n return null;\n }\n\n private setSelectedItem(item: MenuItem, parents: readonly MenuItem[]): void {\n this.selectedItemStateId = this.itemStateId(item, parents);\n }\n\n private get resolvedActiveItemStateId(): string | null {\n return this.selectedItemStateId ?? this.initialActiveItemStateId;\n }\n\n private parentStateId(parents: readonly MenuItem[]): string {\n if (!parents.length) {\n return '__root__';\n }\n\n const parentItem = parents[parents.length - 1];\n return this.itemStateId(parentItem, parents.slice(0, -1));\n }\n\n private itemStateId(item: MenuItem, parents: readonly MenuItem[]): string {\n return [\n ...parents.map((parent) => this.normalizeId(parent.id || parent.label || 'item')),\n this.normalizeId(item.id || item.label || 'item'),\n ].join('::');\n }\n\n private normalizeId(value: string): string {\n return `${value}`\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-');\n }\n\n private clearDescendantState(itemStateId: string): void {\n Array.from(this.explicitExpandedByParentId.keys()).forEach((key) => {\n if (key.startsWith(`${itemStateId}::`)) {\n this.explicitExpandedByParentId.delete(key);\n }\n });\n\n Array.from(this.hoveredExpandedByParentId.keys()).forEach((key) => {\n if (key.startsWith(`${itemStateId}::`)) {\n this.hoveredExpandedByParentId.delete(key);\n }\n });\n }\n\n private clearInteractiveState(clearExpandedState: boolean): void {\n this.hoverExpanded = false;\n this.focusExpanded = false;\n this.clickPinnedExpanded = false;\n this.hoveredExpandedByParentId.clear();\n this.detachDocumentClickListener();\n\n if (clearExpandedState) {\n this.explicitExpandedByParentId.clear();\n }\n }\n\n private collapseInteractiveMenu(reason: MenuInteractionReason): void {\n this.clearInteractiveState(true);\n this.emitCollapsedStateChange(true, reason);\n }\n\n private emitCollapsedStateChange(collapsed: boolean, reason: MenuInteractionReason): void {\n this.collapsedStateChange.emit({\n collapsed,\n reason,\n });\n }\n\n private resolveText(value: string | null | undefined, fallback: string): string {\n const normalized = `${value ?? ''}`.trim();\n return normalized || fallback;\n }\n\n private coerceBoolean(value: boolean | string | null | undefined): boolean {\n if (typeof value === 'string') {\n return value !== 'false';\n }\n\n return !!value;\n }\n}\n","<div\n class=\"tbk-menu__shell\"\n (mouseenter)=\"onMenuMouseEnter()\"\n (mouseleave)=\"onMenuMouseLeave()\"\n (focusin)=\"onMenuFocusIn()\"\n (focusout)=\"onMenuFocusOut($event)\"\n>\n <nav\n class=\"tbk-menu\"\n [class.tbk-menu--collapsed]=\"isCollapsed\"\n [attr.aria-label]=\"resolvedAriaLabel\"\n [attr.id]=\"menuId\"\n >\n <div class=\"tbk-menu__content\">\n <div class=\"tbk-menu__slot tbk-menu__slot--header\" *ngIf=\"hasCustomHeaderSlot\">\n <ng-content select=\"[tbkMenuHeader]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!showsEmptyState; else emptyState\">\n <ng-container\n *ngTemplateOutlet=\"\n menuBranch;\n context: { $implicit: resolvedItems, level: 0, parents: [], listId: null }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-template #emptyState>\n <div class=\"tbk-menu__empty\">\n <tbk-text\n [children]=\"resolvedEmptyStateLabel\"\n [as]=\"'span'\"\n [color]=\"'Secondary'\"\n [size]=\"'font-size-300'\"\n [weight]=\"'font-weight-medium'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </div>\n </ng-template>\n\n <div class=\"tbk-menu__slot tbk-menu__slot--footer\" *ngIf=\"hasCustomFooterSlot\">\n <ng-content select=\"[tbkMenuFooter]\"></ng-content>\n </div>\n </div>\n </nav>\n\n <button\n *ngIf=\"collapsible\"\n type=\"button\"\n class=\"tbk-menu__collapse-toggle\"\n [attr.aria-label]=\"toggleAriaLabel\"\n [attr.aria-expanded]=\"toggleAriaExpanded\"\n [attr.aria-controls]=\"menuId\"\n (click)=\"onToggleCollapse()\"\n >\n <tbk-icons [icon]=\"toggleIcon\" color=\"secondary\" [size]=\"12\"></tbk-icons>\n </button>\n</div>\n\n<ng-template #menuBranch let-items let-level=\"level\" let-parents=\"parents\" let-listId=\"listId\">\n <ul\n class=\"tbk-menu__list\"\n [class.tbk-menu__list--root]=\"isTopLevel(level)\"\n [class.tbk-menu__list--nested]=\"!isTopLevel(level)\"\n [attr.id]=\"listId || null\"\n >\n <li\n class=\"tbk-menu__item\"\n *ngFor=\"let item of items; trackBy: trackByItemId\"\n (mouseenter)=\"onItemHoverEnter(item, parents, level)\"\n (mouseleave)=\"onItemHoverLeave(item, parents, level)\"\n >\n <tbk-tooltip\n class=\"tbk-menu__tooltip\"\n [content]=\"getItemTooltip(item, level)\"\n [disabled]=\"!getItemTooltip(item, level)\"\n [fullWidth]=\"true\"\n >\n <ng-container\n *ngTemplateOutlet=\"menuTrigger; context: { item: item, level: level, parents: parents }\"\n ></ng-container>\n </tbk-tooltip>\n\n <ng-container *ngIf=\"shouldRenderChildren(item, parents)\">\n <ng-container\n *ngTemplateOutlet=\"\n menuBranch;\n context: {\n $implicit: item.children ?? [],\n level: level + 1,\n parents: nextParents(parents, item),\n listId: getSubmenuId(item, parents),\n }\n \"\n ></ng-container>\n </ng-container>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #menuTrigger let-item=\"item\" let-level=\"level\" let-parents=\"parents\">\n <a\n *ngIf=\"shouldRenderLink(item); else buttonTrigger\"\n class=\"tbk-menu__trigger\"\n [class.tbk-menu__trigger--top-level]=\"isTopLevel(level)\"\n [class.tbk-menu__trigger--nested]=\"!isTopLevel(level)\"\n [class.tbk-menu__trigger--active]=\"isCurrentBranch(item, parents)\"\n [class.tbk-menu__trigger--active-primary]=\"isTopLevelBranchSelected(item, parents)\"\n [class.tbk-menu__trigger--active-secondary]=\"isNestedItemSelected(item, parents)\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target || null\"\n [attr.rel]=\"getLinkRel(item)\"\n [attr.aria-label]=\"getItemAriaLabel(item)\"\n [attr.aria-current]=\"isCurrentPage(item, parents) ? 'page' : null\"\n [attr.data-menu-item-id]=\"getItemStateId(item, parents)\"\n [style.padding-inline-start.px]=\"getTriggerPaddingInlineStart(level)\"\n (click)=\"onAnchorTriggerClick(item, parents, $event)\"\n (keydown)=\"onTriggerKeydown(item, parents, level, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"triggerContent; context: { item: item, level: level, parents: parents }\"></ng-container>\n </a>\n\n <ng-template #buttonTrigger>\n <button\n type=\"button\"\n class=\"tbk-menu__trigger\"\n [class.tbk-menu__trigger--top-level]=\"isTopLevel(level)\"\n [class.tbk-menu__trigger--nested]=\"!isTopLevel(level)\"\n [class.tbk-menu__trigger--active]=\"isCurrentBranch(item, parents)\"\n [class.tbk-menu__trigger--active-primary]=\"isTopLevelBranchSelected(item, parents)\"\n [class.tbk-menu__trigger--active-secondary]=\"isNestedItemSelected(item, parents)\"\n [class.tbk-menu__trigger--disabled]=\"item.disabled\"\n [attr.aria-label]=\"getItemAriaLabel(item)\"\n [attr.aria-expanded]=\"!isCollapsed && hasChildren(item) ? isExpanded(item, parents) : null\"\n [attr.aria-controls]=\"!isCollapsed && hasChildren(item) ? getSubmenuId(item, parents) : null\"\n [attr.data-menu-item-id]=\"getItemStateId(item, parents)\"\n [style.padding-inline-start.px]=\"getTriggerPaddingInlineStart(level)\"\n [disabled]=\"item.disabled\"\n (click)=\"onButtonTriggerClick(item, parents, $event)\"\n (keydown)=\"onTriggerKeydown(item, parents, level, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"triggerContent; context: { item: item, level: level, parents: parents }\"></ng-container>\n </button>\n </ng-template>\n</ng-template>\n\n<ng-template #triggerContent let-item=\"item\" let-level=\"level\" let-parents=\"parents\">\n <span class=\"tbk-menu__icon\" *ngIf=\"isTopLevel(level)\" aria-hidden=\"true\">\n <tbk-icons *ngIf=\"item.icon\" [icon]=\"item.icon\" [color]=\"getItemIconColor(item)\" [size]=\"20\"></tbk-icons>\n </span>\n\n <tbk-text\n class=\"tbk-menu__label\"\n [children]=\"item.label\"\n [color]=\"item.disabled ? 'Disabled' : 'Blue'\"\n [size]=\"isTopLevel(level) ? 'font-size-350' : 'font-size-325'\"\n [weight]=\"isTopLevel(level) ? 'font-weight-bold' : 'font-weight-medium'\"\n [as]=\"'span'\"\n [truncate]=\"true\"\n margin=\"0\"\n ></tbk-text>\n\n <span\n class=\"tbk-menu__badge\"\n [class.tbk-menu__badge--info]=\"getBadgeTone(item) === 'info'\"\n [class.tbk-menu__badge--success]=\"getBadgeTone(item) === 'success'\"\n [class.tbk-menu__badge--warning]=\"getBadgeTone(item) === 'warning'\"\n [class.tbk-menu__badge--critical]=\"getBadgeTone(item) === 'critical'\"\n *ngIf=\"hasBadge(item)\"\n [attr.aria-label]=\"getBadgeAriaLabel(item)\"\n >\n {{ item.badge }}\n </span>\n\n <span\n class=\"tbk-menu__chevron\"\n [class.tbk-menu__chevron--expanded]=\"isExpanded(item, parents)\"\n *ngIf=\"showsChevron(item)\"\n aria-hidden=\"true\"\n >\n <tbk-icons icon=\"chevron-down-solid-full.svg\" color=\"secondary\" [size]=\"16\"></tbk-icons>\n </span>\n</ng-template>\n","/**\n * @deprecated Import from `src/app/patterns/Menu` instead. This barrel\n * remains only as a compatibility shim for legacy import paths.\n */\nexport * from '../../patterns/Menu';\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\n@Component({\n selector: 'tbk-search-filterbar',\n standalone: true,\n imports: [CommonModule, FormsModule, IconsComponent, TextComponent],\n templateUrl: './search-filterbar.component.html',\n styleUrls: ['./search-filterbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchFilterBarComponent),\n multi: true,\n },\n ],\n})\nexport class SearchFilterBarComponent implements OnInit, OnDestroy, ControlValueAccessor {\n private static readonly instances = new Set<SearchFilterBarComponent>();\n\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n\n @Input() label = 'Digite sua busca';\n @Input() placeholder = 'Clique em Ctrl + K para pesquisar';\n @Input() disabled = false;\n @Input() modal = true;\n @Input() recentSearchesStorageKey = 'tbk_search_filterbar_recent_searches';\n @Input() recentSearchesLimit = 5;\n @Input() persistRecentSearches = true;\n @Input() showRecentSearches = true;\n @Input() showShortcutHint = true;\n @Input() shortcutEnabled = true;\n @Input() shortcutHintKeys: ReadonlyArray<string> = ['Ctrl', 'K'];\n @Input() submitOnEnter = true;\n @Input() closeOnSubmit = true;\n @Input() submitOnRecentSearchSelect = false;\n @Input() openAriaLabel = 'Abrir busca';\n @Input() overlayAriaLabel = 'Busca';\n @Input() inputAriaLabel = 'Campo de busca';\n @Input() recentSearchesTitle = 'Pesquisas recentes';\n @Input() recentSearchesEmptyText = 'Sem pesquisas recentes';\n @Input() removeRecentSearchAriaLabel = 'Remover pesquisa recente';\n\n private _recentSearchesInput: string[] | null = null;\n @Input()\n set recentSearches(value: readonly string[] | null | undefined) {\n if (value == null) {\n this._recentSearchesInput = null;\n if (this.hasInitialized) {\n this.loadRecentSearches();\n }\n return;\n }\n\n const normalized = this.normalizeRecentSearches(value);\n this._recentSearchesInput = [...normalized];\n this.internalRecentSearches = [...normalized];\n }\n get recentSearches(): string[] | null {\n return this._recentSearchesInput ? [...this._recentSearchesInput] : null;\n }\n\n private _value = '';\n @Input()\n set value(nextValue: string) {\n this.applyExternalValue(nextValue ?? '', false);\n }\n get value(): string {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() searchSubmit = new EventEmitter<string>();\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() recentSearchesChange = new EventEmitter<string[]>();\n\n isOpen = false;\n private hasInitialized = false;\n private internalRecentSearches: string[] = [];\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private lastFocusedElementBeforeOpen: HTMLElement | null = null;\n private savedBodyOverflow = '';\n private savedBodyPaddingRight = '';\n private hiddenSiblings: Array<{\n element: HTMLElement;\n hadAriaHidden: boolean;\n previousAriaHidden: string | null;\n previousInert: boolean;\n }> = [];\n\n constructor(private readonly hostElement: ElementRef<HTMLElement>) {}\n\n get subtitle(): string {\n const currentValue = this.value.trim();\n if (currentValue) {\n return currentValue;\n }\n if (this.isOpen) {\n return '';\n }\n const placeholder = this.placeholder?.trim();\n return placeholder || 'Clique em Ctrl + K para pesquisar';\n }\n\n get resolvedRecentSearches(): string[] {\n return [...this.internalRecentSearches];\n }\n\n get hasRecentSearches(): boolean {\n return this.internalRecentSearches.length > 0;\n }\n\n get shouldRenderShortcutHint(): boolean {\n return (\n this.showShortcutHint &&\n !this.isOpen &&\n !this.value.trim() &&\n this.resolvedShortcutHintKeys.length > 0\n );\n }\n\n get resolvedShortcutHintKeys(): string[] {\n return this.shortcutHintKeys\n .map((item) => `${item ?? ''}`.trim())\n .filter(Boolean)\n .slice(0, 3);\n }\n\n private get isRecentSearchesControlled(): boolean {\n return this._recentSearchesInput !== null;\n }\n\n get usesModalPresentation(): boolean {\n return this.modal && this.showRecentSearches;\n }\n\n ngOnInit(): void {\n this.hasInitialized = true;\n SearchFilterBarComponent.instances.add(this);\n if (this.isRecentSearchesControlled) {\n this.internalRecentSearches = [...(this._recentSearchesInput ?? [])];\n return;\n }\n\n this.loadRecentSearches();\n }\n\n ngOnDestroy(): void {\n SearchFilterBarComponent.instances.delete(this);\n this.disableModalA11y();\n this.restoreBodyScroll();\n }\n\n writeValue(value: string | null): void {\n this.applyExternalValue(value ?? '', false);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.close();\n }\n }\n\n open(trigger?: HTMLElement | null): void {\n if (this.disabled) return;\n\n this.lastFocusedElementBeforeOpen = trigger || (document.activeElement as HTMLElement | null);\n this.setOpenState(true);\n if (this.usesModalPresentation) {\n this.disableBodyScroll();\n this.enableModalA11y();\n }\n setTimeout(() => this.searchInput?.nativeElement.focus(), 0);\n }\n\n close(): void {\n this.setOpenState(false);\n if (this.usesModalPresentation) {\n this.disableModalA11y();\n this.restoreBodyScroll();\n }\n this.onTouched();\n setTimeout(() => this.lastFocusedElementBeforeOpen?.focus(), 0);\n }\n\n onInput(value: string): void {\n this.setValueInternal(value, true);\n }\n\n submitSearch(): void {\n const normalized = this.value.trim();\n if (!normalized) return;\n\n this.setValueInternal(normalized, true);\n this.rememberRecentSearch(normalized);\n this.searchSubmit.emit(normalized);\n this.onTouched();\n if (this.closeOnSubmit) {\n this.close();\n }\n }\n\n selectRecentSearch(term: string): void {\n this.setValueInternal(term, true);\n if (this.submitOnRecentSearchSelect) {\n this.submitSearch();\n return;\n }\n\n this.onTouched();\n }\n\n removeRecentSearch(term: string): void {\n this.updateRecentSearches(\n this.internalRecentSearches.filter((item) => item !== term),\n true,\n );\n }\n\n onInputEnter(event: Event): void {\n if (!this.submitOnEnter) {\n return;\n }\n\n event.preventDefault();\n this.submitSearch();\n }\n\n @HostListener('document:keydown', ['$event'])\n onGlobalKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) {\n return;\n }\n\n const isCtrlK = (event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'k';\n\n if (isCtrlK && this.shortcutEnabled) {\n const activeElement = document.activeElement as HTMLElement | null;\n const eventTarget = event.target as HTMLElement | null;\n const shortcutTarget = SearchFilterBarComponent.resolveShortcutTarget(\n activeElement ?? eventTarget\n );\n\n if (shortcutTarget !== this) {\n return;\n }\n\n if (\n eventTarget &&\n SearchFilterBarComponent.isEditableElement(eventTarget) &&\n !this.hostElement.nativeElement.contains(eventTarget)\n ) {\n return;\n }\n\n event.preventDefault();\n this.open(activeElement);\n return;\n }\n\n if (event.key === 'Escape' && this.isOpen) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (event.key === 'Tab' && this.isOpen && this.usesModalPresentation) {\n this.trapFocus(event);\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) return;\n\n const target = event.target as Node | null;\n if (!target) return;\n\n if (!this.hostElement.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n private loadRecentSearches(): void {\n if (this.isRecentSearchesControlled) {\n this.internalRecentSearches = [...(this._recentSearchesInput ?? [])];\n return;\n }\n\n if (!this.persistRecentSearches || !this.recentSearchesStorageKey.trim()) {\n this.internalRecentSearches = [];\n return;\n }\n\n if (typeof window === 'undefined') return;\n\n try {\n const raw = window.localStorage.getItem(this.recentSearchesStorageKey);\n if (!raw) {\n this.internalRecentSearches = [];\n return;\n }\n\n const parsed = JSON.parse(raw);\n if (Array.isArray(parsed)) {\n const normalized = this.normalizeRecentSearches(parsed);\n\n if (normalized.length) {\n this.internalRecentSearches = normalized;\n return;\n }\n }\n\n this.internalRecentSearches = [];\n } catch {\n this.internalRecentSearches = [];\n }\n }\n\n private persistRecentSearchesToStorage(): void {\n if (\n this.isRecentSearchesControlled ||\n !this.persistRecentSearches ||\n !this.recentSearchesStorageKey.trim()\n ) {\n return;\n }\n\n if (typeof window === 'undefined') return;\n\n try {\n window.localStorage.setItem(\n this.recentSearchesStorageKey,\n JSON.stringify(this.internalRecentSearches)\n );\n } catch {\n // no-op when storage is unavailable\n }\n }\n\n private rememberRecentSearch(term: string): void {\n if (!this.showRecentSearches) {\n return;\n }\n\n this.updateRecentSearches(\n [term, ...this.internalRecentSearches.filter((item) => item !== term)],\n true,\n );\n }\n\n private updateRecentSearches(nextSearches: readonly string[], emit: boolean): void {\n this.internalRecentSearches = this.normalizeRecentSearches(nextSearches);\n this.persistRecentSearchesToStorage();\n\n if (!emit) {\n return;\n }\n\n this.recentSearchesChange.emit([...this.internalRecentSearches]);\n }\n\n private applyExternalValue(nextValue: string, emit: boolean): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private setValueInternal(nextValue: string, emit: boolean): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private setOpenState(nextValue: boolean): void {\n if (this.isOpen === nextValue) {\n return;\n }\n\n this.isOpen = nextValue;\n this.openedChange.emit(nextValue);\n }\n\n private normalizeRecentSearches(values: readonly unknown[]): string[] {\n const normalizedLimit =\n Number.isFinite(this.recentSearchesLimit) && this.recentSearchesLimit > 0\n ? Math.trunc(this.recentSearchesLimit)\n : 5;\n\n return Array.from(\n new Set(\n values\n .filter((item): item is string => typeof item === 'string')\n .map((item) => item.trim())\n .filter(Boolean),\n ),\n ).slice(0, normalizedLimit);\n }\n\n private disableBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n if (!this.savedBodyOverflow) {\n this.savedBodyOverflow = document.body.style.overflow;\n this.savedBodyPaddingRight = document.body.style.paddingRight;\n }\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n document.body.style.paddingRight = `${scrollbarWidth}px`;\n document.body.style.overflow = 'hidden';\n }\n\n private restoreBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n document.body.style.overflow = this.savedBodyOverflow;\n document.body.style.paddingRight = this.savedBodyPaddingRight;\n this.savedBodyOverflow = '';\n this.savedBodyPaddingRight = '';\n }\n\n private enableModalA11y(): void {\n if (typeof document === 'undefined') return;\n if (this.hiddenSiblings.length) return;\n\n const host = this.hostElement.nativeElement;\n let current: HTMLElement | null = host;\n\n while (current?.parentElement) {\n const parentElement = current.parentElement as HTMLElement;\n const siblings = Array.from(parentElement.children).filter(\n (child) => child !== current\n ) as HTMLElement[];\n\n for (const sibling of siblings) {\n const hadAriaHidden = sibling.hasAttribute('aria-hidden');\n const previousAriaHidden = sibling.getAttribute('aria-hidden');\n const previousInert = !!(sibling as HTMLElement & { inert?: boolean }).inert;\n\n this.hiddenSiblings.push({\n element: sibling,\n hadAriaHidden,\n previousAriaHidden,\n previousInert,\n });\n\n sibling.setAttribute('aria-hidden', 'true');\n (sibling as HTMLElement & { inert?: boolean }).inert = true;\n }\n\n if (parentElement === document.body) break;\n current = parentElement;\n }\n }\n\n private disableModalA11y(): void {\n for (const entry of this.hiddenSiblings) {\n if (entry.hadAriaHidden) {\n if (entry.previousAriaHidden == null) {\n entry.element.setAttribute('aria-hidden', 'true');\n } else {\n entry.element.setAttribute('aria-hidden', entry.previousAriaHidden);\n }\n } else {\n entry.element.removeAttribute('aria-hidden');\n }\n\n (entry.element as HTMLElement & { inert?: boolean }).inert = entry.previousInert;\n }\n\n this.hiddenSiblings = [];\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusables = this.getFocusableElements();\n if (!focusables.length) {\n event.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey) {\n if (!active || active === first) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n\n if (!active || active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n const selectors = [\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[href]',\n '[tabindex]:not([tabindex=\"-1\"])',\n ];\n\n return Array.from(\n this.hostElement.nativeElement.querySelectorAll<HTMLElement>(\n selectors.join(',')\n )\n ).filter((el) => el.offsetParent !== null || el === document.activeElement);\n }\n\n private canRespondToShortcut(): boolean {\n const host = this.hostElement.nativeElement;\n\n return (\n !this.disabled &&\n this.shortcutEnabled &&\n host.isConnected &&\n host.getClientRects().length > 0\n );\n }\n\n private static resolveShortcutTarget(\n activeElement: HTMLElement | null\n ): SearchFilterBarComponent | null {\n const candidates = [...SearchFilterBarComponent.instances].filter((instance) =>\n instance.canRespondToShortcut()\n );\n\n if (!candidates.length) {\n return null;\n }\n\n if (activeElement) {\n const focusedOwner = candidates.find((instance) =>\n instance.hostElement.nativeElement.contains(activeElement)\n );\n\n if (focusedOwner) {\n return focusedOwner;\n }\n }\n\n return candidates.sort((left, right) => {\n const position = left.hostElement.nativeElement.compareDocumentPosition(\n right.hostElement.nativeElement\n );\n\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n\n return 0;\n })[0] ?? null;\n }\n\n private static isEditableElement(element: HTMLElement): boolean {\n let currentElement: HTMLElement | null = element;\n\n while (currentElement) {\n const tagName = currentElement.tagName.toLowerCase();\n\n if (\n tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select' ||\n currentElement.isContentEditable ||\n currentElement.getAttribute('role') === 'textbox'\n ) {\n return true;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return false;\n }\n}\n","<div\n class=\"tbk-search-filterbar\"\n [ngClass]=\"{\n 'tbk-search-filterbar--open': isOpen,\n 'tbk-search-filterbar--disabled': disabled\n }\"\n>\n <div class=\"tbk-search-filterbar__bar\">\n <tbk-icons\n class=\"tbk-search-filterbar__icon\"\n [icon]=\"'magnifying-glass-solid.svg'\"\n [color]=\"'blue'\"\n [size]=\"18\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <div class=\"tbk-search-filterbar__main\">\n <button\n *ngIf=\"!isOpen; else inputMode\"\n type=\"button\"\n class=\"tbk-search-filterbar__trigger\"\n [disabled]=\"disabled\"\n (click)=\"open($any($event.currentTarget))\"\n [attr.aria-label]=\"openAriaLabel\"\n >\n <span class=\"tbk-search-filterbar__texts\">\n <tbk-text\n class=\"tbk-search-filterbar__title\"\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <tbk-text\n *ngIf=\"subtitle\"\n class=\"tbk-search-filterbar__subtitle\"\n [children]=\"subtitle\"\n [color]=\"'Primary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n </button>\n\n <ng-template #inputMode>\n <div class=\"tbk-search-filterbar__input-texts\">\n <tbk-text\n class=\"tbk-search-filterbar__title\"\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <input\n #searchInput\n type=\"text\"\n class=\"tbk-search-filterbar__input\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"inputAriaLabel\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown.enter)=\"onInputEnter($event)\"\n />\n </div>\n </ng-template>\n </div>\n\n <span class=\"tbk-search-filterbar__shortcuts\" *ngIf=\"shouldRenderShortcutHint\">\n <button\n *ngFor=\"let shortcutKey of resolvedShortcutHintKeys\"\n type=\"button\"\n class=\"tbk-search-filterbar__shortcut-key\"\n (click)=\"open($any($event.currentTarget))\"\n [disabled]=\"disabled\"\n >\n {{ shortcutKey }}\n </button>\n </span>\n </div>\n\n <div\n *ngIf=\"isOpen && usesModalPresentation\"\n class=\"tbk-search-filterbar__backdrop\"\n (click)=\"close()\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n *ngIf=\"isOpen && showRecentSearches\"\n class=\"tbk-search-filterbar__dropdown\"\n role=\"dialog\"\n [attr.aria-modal]=\"usesModalPresentation ? 'true' : 'false'\"\n [attr.aria-label]=\"overlayAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"tbk-search-filterbar__recent-card\">\n <span class=\"tbk-search-filterbar__recent-title\">{{ recentSearchesTitle }}</span>\n\n <ul *ngIf=\"hasRecentSearches; else emptyRecentSearchesState\" class=\"tbk-search-filterbar__recent-list\">\n <li *ngFor=\"let item of resolvedRecentSearches\" class=\"tbk-search-filterbar__recent-item\">\n <button\n type=\"button\"\n class=\"tbk-search-filterbar__recent-select\"\n (click)=\"selectRecentSearch(item)\"\n >\n {{ item }}\n </button>\n <button\n type=\"button\"\n class=\"tbk-search-filterbar__recent-remove\"\n [attr.aria-label]=\"removeRecentSearchAriaLabel\"\n (click)=\"removeRecentSearch(item)\"\n >\n <tbk-icons\n class=\"tbk-search-filterbar__recent-remove-icon\"\n [icon]=\"'xmark-regular-full.svg'\"\n [color]=\"'gray'\"\n [size]=\"14\"\n aria-hidden=\"true\"\n ></tbk-icons>\n </button>\n </li>\n </ul>\n\n <ng-template #emptyRecentSearchesState>\n <p class=\"tbk-search-filterbar__empty-state\">\n {{ recentSearchesEmptyText }}\n </p>\n </ng-template>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport interface SelectFilterBarOption<T = unknown> {\n label: string;\n value: T;\n disabled?: boolean;\n}\n\nexport type SelectFilterBarOptionInput<T = unknown> = string | SelectFilterBarOption<T>;\n\n@Component({\n selector: 'tbk-select-filterbar',\n standalone: true,\n imports: [CommonModule, IconsComponent, TextComponent],\n templateUrl: './select-filterbar.component.html',\n styleUrls: ['./select-filterbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterBarComponent),\n multi: true,\n },\n ],\n})\nexport class SelectFilterBarComponent implements OnDestroy, ControlValueAccessor {\n @ViewChild('triggerButton') triggerButton?: ElementRef<HTMLButtonElement>;\n\n @Input() label = 'Tipo de busca';\n @Input() placeholder = 'Selecione';\n @Input() disabled = false;\n @Input() modal = true;\n @Input() openAriaLabel = 'Abrir filtro de selecao';\n @Input() optionsAriaLabel = 'Opcoes de filtro';\n @Input() noOptionsText = 'Sem opcoes disponiveis';\n @Input() compareWith: (optionValue: unknown, selectedValue: unknown) => boolean = (\n optionValue,\n selectedValue,\n ) => Object.is(optionValue, selectedValue);\n\n private _options: SelectFilterBarOption[] = [];\n @Input()\n set options(nextOptions: ReadonlyArray<SelectFilterBarOptionInput>) {\n this._options = this.normalizeOptions(nextOptions);\n }\n get options(): ReadonlyArray<SelectFilterBarOption> {\n return this._options;\n }\n\n private _value: unknown = null;\n @Input()\n set value(nextValue: unknown) {\n this.applyExternalValue(nextValue, false);\n }\n get value(): unknown {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<unknown>();\n @Output() selectionChange = new EventEmitter<SelectFilterBarOption | null>();\n @Output() openedChange = new EventEmitter<boolean>();\n\n isOpen = false;\n highlightedIndex = -1;\n\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n private lastFocusedElementBeforeOpen: HTMLElement | null = null;\n private savedBodyOverflow = '';\n private savedBodyPaddingRight = '';\n private hiddenSiblings: Array<{\n element: HTMLElement;\n hadAriaHidden: boolean;\n previousAriaHidden: string | null;\n previousInert: boolean;\n }> = [];\n\n get selectedText(): string {\n return this.selectedOption?.label || this.placeholder;\n }\n\n get hasOptions(): boolean {\n return this._options.length > 0;\n }\n\n get selectedOption(): SelectFilterBarOption | null {\n return this.findOptionByValue(this._value);\n }\n\n writeValue(value: unknown): void {\n this.applyExternalValue(value, false);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.close();\n }\n }\n\n open(trigger?: HTMLElement | null): void {\n if (this.disabled) return;\n\n this.lastFocusedElementBeforeOpen = trigger || (document.activeElement as HTMLElement | null);\n this.highlightedIndex = this.resolveInitialHighlightIndex();\n this.setOpenState(true);\n if (this.modal) {\n this.disableBodyScroll();\n this.enableModalA11y();\n }\n setTimeout(() => this.triggerButton?.nativeElement.focus(), 0);\n }\n\n close(): void {\n this.setOpenState(false);\n this.highlightedIndex = -1;\n if (this.modal) {\n this.disableModalA11y();\n this.restoreBodyScroll();\n }\n this.onTouched();\n setTimeout(() => this.lastFocusedElementBeforeOpen?.focus(), 0);\n }\n\n toggle(trigger?: HTMLElement | null): void {\n if (this.isOpen) {\n this.close();\n return;\n }\n this.open(trigger);\n }\n\n selectOption(option: SelectFilterBarOption): void {\n if (option.disabled || this.disabled) {\n return;\n }\n\n this.setValueInternal(option.value, true);\n this.onTouched();\n this.close();\n }\n\n onOptionMouseEnter(index: number): void {\n this.highlightedIndex = index;\n }\n\n ngOnDestroy(): void {\n this.disableModalA11y();\n this.restoreBodyScroll();\n }\n\n @HostListener('document:keydown', ['$event'])\n onGlobalKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (event.key === 'Tab' && this.isOpen && this.modal) {\n this.trapFocus(event);\n return;\n }\n\n if (!this.isOpen || this.disabled || !this.hasOptions) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.moveHighlight(1);\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.moveHighlight(-1);\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.highlightedIndex = this.findNextEnabledIndex(0, 1);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.highlightedIndex = this.findNextEnabledIndex(this._options.length - 1, -1);\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n const option = this._options[this.highlightedIndex];\n if (option && !option.disabled) {\n this.selectOption(option);\n }\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) return;\n const target = event.target as Node | null;\n if (!target) return;\n\n if (!this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n isSelected(option: SelectFilterBarOption): boolean {\n return this.compareWith(option.value, this._value);\n }\n\n isHighlighted(index: number): boolean {\n return this.highlightedIndex === index;\n }\n\n trackByOption(index: number, option: SelectFilterBarOption): string {\n const valueLabel = option.value == null ? 'null' : String(option.value);\n return `${index}-${option.label}-${valueLabel}`;\n }\n\n private applyExternalValue(nextValue: unknown, emit: boolean): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n this.selectionChange.emit(this.findOptionByValue(nextValue));\n }\n\n private setValueInternal(nextValue: unknown, emit: boolean): void {\n this._value = nextValue;\n\n if (!emit) {\n return;\n }\n\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n this.selectionChange.emit(this.findOptionByValue(nextValue));\n }\n\n private setOpenState(nextValue: boolean): void {\n if (this.isOpen === nextValue) {\n return;\n }\n\n this.isOpen = nextValue;\n this.openedChange.emit(nextValue);\n }\n\n private normalizeOptions(\n nextOptions: ReadonlyArray<SelectFilterBarOptionInput> | null | undefined,\n ): SelectFilterBarOption[] {\n if (!Array.isArray(nextOptions)) {\n return [];\n }\n\n return nextOptions.reduce<SelectFilterBarOption[]>((normalizedOptions, option) => {\n if (typeof option === 'string') {\n const trimmed = option.trim();\n if (trimmed) {\n normalizedOptions.push({\n label: trimmed,\n value: trimmed,\n });\n }\n\n return normalizedOptions;\n }\n\n if (!option || typeof option.label !== 'string') {\n return normalizedOptions;\n }\n\n const trimmed = option.label.trim();\n if (!trimmed) {\n return normalizedOptions;\n }\n\n normalizedOptions.push({\n label: trimmed,\n value: option.value,\n disabled: !!option.disabled,\n });\n\n return normalizedOptions;\n }, []);\n }\n\n private resolveInitialHighlightIndex(): number {\n const selectedIndex = this._options.findIndex((option) => this.isSelected(option) && !option.disabled);\n if (selectedIndex >= 0) {\n return selectedIndex;\n }\n\n return this.findNextEnabledIndex(0, 1);\n }\n\n private moveHighlight(direction: 1 | -1): void {\n if (!this._options.length) {\n this.highlightedIndex = -1;\n return;\n }\n\n const startIndex =\n this.highlightedIndex >= 0\n ? this.highlightedIndex + direction\n : direction > 0\n ? 0\n : this._options.length - 1;\n\n this.highlightedIndex = this.findNextEnabledIndex(startIndex, direction);\n }\n\n private findNextEnabledIndex(startIndex: number, direction: 1 | -1): number {\n if (!this._options.length) {\n return -1;\n }\n\n let currentIndex = startIndex;\n\n for (let attempts = 0; attempts < this._options.length; attempts += 1) {\n const wrappedIndex = (currentIndex + this._options.length) % this._options.length;\n const option = this._options[wrappedIndex];\n\n if (!option.disabled) {\n return wrappedIndex;\n }\n\n currentIndex = wrappedIndex + direction;\n }\n\n return -1;\n }\n\n private findOptionByValue(value: unknown): SelectFilterBarOption | null {\n return this._options.find((option) => this.compareWith(option.value, value)) ?? null;\n }\n\n private disableBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n if (!this.savedBodyOverflow) {\n this.savedBodyOverflow = document.body.style.overflow;\n this.savedBodyPaddingRight = document.body.style.paddingRight;\n }\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n document.body.style.paddingRight = `${scrollbarWidth}px`;\n document.body.style.overflow = 'hidden';\n }\n\n private restoreBodyScroll(): void {\n if (typeof document === 'undefined') return;\n\n document.body.style.overflow = this.savedBodyOverflow;\n document.body.style.paddingRight = this.savedBodyPaddingRight;\n this.savedBodyOverflow = '';\n this.savedBodyPaddingRight = '';\n }\n\n private enableModalA11y(): void {\n if (typeof document === 'undefined') return;\n if (this.hiddenSiblings.length) return;\n\n const host = this.elementRef.nativeElement;\n let current: HTMLElement | null = host;\n\n while (current?.parentElement) {\n const parentElement = current.parentElement as HTMLElement;\n const siblings = Array.from(parentElement.children).filter(\n (child) => child !== current\n ) as HTMLElement[];\n\n for (const sibling of siblings) {\n const hadAriaHidden = sibling.hasAttribute('aria-hidden');\n const previousAriaHidden = sibling.getAttribute('aria-hidden');\n const previousInert = !!(sibling as HTMLElement & { inert?: boolean }).inert;\n\n this.hiddenSiblings.push({\n element: sibling,\n hadAriaHidden,\n previousAriaHidden,\n previousInert,\n });\n\n sibling.setAttribute('aria-hidden', 'true');\n (sibling as HTMLElement & { inert?: boolean }).inert = true;\n }\n\n if (parentElement === document.body) break;\n current = parentElement;\n }\n }\n\n private disableModalA11y(): void {\n for (const entry of this.hiddenSiblings) {\n if (entry.hadAriaHidden) {\n if (entry.previousAriaHidden == null) {\n entry.element.setAttribute('aria-hidden', 'true');\n } else {\n entry.element.setAttribute('aria-hidden', entry.previousAriaHidden);\n }\n } else {\n entry.element.removeAttribute('aria-hidden');\n }\n\n (entry.element as HTMLElement & { inert?: boolean }).inert = entry.previousInert;\n }\n\n this.hiddenSiblings = [];\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusables = this.getFocusableElements();\n if (!focusables.length) {\n event.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey) {\n if (!active || active === first) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n\n if (!active || active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n const selectors = [\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[href]',\n '[tabindex]:not([tabindex=\"-1\"])',\n ];\n\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>(selectors.join(','))\n ).filter((el) => el.offsetParent !== null || el === document.activeElement);\n }\n}\n","<div\n class=\"tbk-select-filterbar\"\n [ngClass]=\"{\n 'tbk-select-filterbar--open': isOpen,\n 'tbk-select-filterbar--disabled': disabled\n }\"\n>\n <button\n #triggerButton\n type=\"button\"\n class=\"tbk-select-filterbar__bar\"\n [disabled]=\"disabled\"\n (click)=\"toggle($any($event.currentTarget))\"\n [attr.aria-label]=\"openAriaLabel\"\n [attr.aria-expanded]=\"isOpen\"\n >\n <tbk-icons\n class=\"tbk-select-filterbar__icon\"\n [icon]=\"'arrows-retweet-regular.svg'\"\n [color]=\"'blue'\"\n [size]=\"20\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <span class=\"tbk-select-filterbar__texts\">\n <tbk-text\n class=\"tbk-select-filterbar__title\"\n [children]=\"label\"\n [color]=\"'Secondary'\"\n [as]=\"'span'\"\n [size]=\"'font-size-325'\"\n [weight]=\"'font-weight-regular'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <tbk-text\n class=\"tbk-select-filterbar__value\"\n [children]=\"selectedText\"\n [color]=\"selectedOption ? 'Primary' : 'Gray'\"\n [as]=\"'span'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </span>\n </button>\n\n <div\n *ngIf=\"isOpen && modal\"\n class=\"tbk-select-filterbar__backdrop\"\n (click)=\"close()\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n *ngIf=\"isOpen\"\n class=\"tbk-select-filterbar__dropdown\"\n role=\"listbox\"\n [attr.aria-label]=\"optionsAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"hasOptions; else emptyState\">\n <button\n *ngFor=\"let option of options; let optionIndex = index; trackBy: trackByOption\"\n type=\"button\"\n role=\"option\"\n class=\"tbk-select-filterbar__option\"\n [disabled]=\"option.disabled\"\n [attr.aria-selected]=\"isSelected(option)\"\n [class.tbk-select-filterbar__option--selected]=\"isSelected(option)\"\n [class.tbk-select-filterbar__option--active]=\"isHighlighted(optionIndex)\"\n [class.tbk-select-filterbar__option--disabled]=\"option.disabled\"\n (mouseenter)=\"onOptionMouseEnter(optionIndex)\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </button>\n </ng-container>\n\n <ng-template #emptyState>\n <p class=\"tbk-select-filterbar__empty-state\">\n {{ noOptionsText }}\n </p>\n </ng-template>\n </div>\n</div>\n","import { CHART_COLOR_FAMILIES, ChartColorFamily } from '../Charts/chart-theme';\n\n/** Cor de um segmento: uma familia da paleta oficial de charts. */\nexport type StackedProgressColor = ChartColorFamily;\n\nexport const STACKED_PROGRESS_COLOR_OPTIONS: readonly StackedProgressColor[] = CHART_COLOR_FAMILIES;\n\n/** Um segmento da barra de progresso empilhada. */\nexport interface StackedProgressItem {\n /** Identificador estavel. Gerado quando ausente. */\n readonly id?: string;\n /** Rotulo da categoria (ex.: \"0 estimates\"). */\n readonly label: string;\n /** Valor numerico (define a largura do segmento). */\n readonly value: number;\n /** Texto formatado exibido no header (ex.: \"US$0\"). Default: `value`. */\n readonly displayValue?: string;\n /** Cor do segmento. Default: ciclo por indice. */\n readonly color?: StackedProgressColor;\n /** Direção da tendência. */\n readonly trendDirection?: 'up' | 'down';\n /** Valor da tendência (ex: 2424 ou '2.424'). */\n readonly trendValue?: string | number;\n}\n\n/** Item normalizado internamente (id, cor, texto e percentual resolvidos). */\nexport interface NormalizedStackedProgressItem extends StackedProgressItem {\n readonly id: string;\n readonly color: StackedProgressColor;\n readonly display: string;\n /** Largura do segmento em porcentagem (0-100). */\n readonly percent: number;\n}\n","import type { EChartsOption } from 'echarts';\nimport { ChartThemeTokens } from '../Charts/chart-theme';\nimport {\n STACKED_PROGRESS_COLOR_OPTIONS,\n StackedProgressColor,\n StackedProgressItem,\n NormalizedStackedProgressItem,\n} from './stacked-progress-chart.types';\n\n/** Raio dos segmentos (espelha --tbk-ds-border-radius-sm-5). */\nconst SEGMENT_RADIUS = 5;\n/** Gap entre segmentos (borda branca), em px. */\nconst SEGMENT_GAP = 3;\n\nexport interface BuildStackedProgressOptionParams {\n readonly items: readonly NormalizedStackedProgressItem[];\n readonly thickness: number;\n readonly theme: ChartThemeTokens;\n}\n\nfunction resolveColor(theme: ChartThemeTokens, color: StackedProgressColor): string {\n return theme.colorByName[color];\n}\n\nfunction resolveHoverColor(theme: ChartThemeTokens, color: StackedProgressColor): string {\n return theme.colorHoverByName?.[color] ?? resolveColor(theme, color);\n}\n\n/**\n * Normaliza itens resolvendo id, cor, texto e o percentual de cada segmento.\n * Quando o total é 0, distribui igualmente. `minSegmentPercent` garante\n * visibilidade mínima de segmentos pequenos (com renormalização).\n */\nexport function normalizeStackedProgressItems(\n items: readonly StackedProgressItem[],\n minSegmentPercent = 0,\n): readonly NormalizedStackedProgressItem[] {\n const count = items.length;\n if (count === 0) return [];\n\n const values = items.map((item) => (Number.isFinite(item.value) ? Math.max(0, item.value) : 0));\n const total = values.reduce((sum, value) => sum + value, 0);\n\n let percents =\n total <= 0 ? values.map(() => 100 / count) : values.map((value) => (value / total) * 100);\n\n if (minSegmentPercent > 0) {\n percents = percents.map((percent) => Math.max(percent, minSegmentPercent));\n const sum = percents.reduce((acc, percent) => acc + percent, 0);\n percents = percents.map((percent) => (percent / sum) * 100);\n }\n\n return items.map((item, index) => ({\n ...item,\n value: values[index],\n id: item.id ?? `segment-${index}`,\n color: item.color ?? STACKED_PROGRESS_COLOR_OPTIONS[index % STACKED_PROGRESS_COLOR_OPTIONS.length],\n display:\n item.displayValue !== undefined && item.displayValue !== null\n ? `${item.displayValue}`\n : `${values[index]}`,\n percent: percents[index],\n }));\n}\n\n/**\n * Monta o `EChartsOption` de uma barra horizontal empilhada (um segmento por\n * item). Função pura (sem DOM) — testável isoladamente.\n */\nexport function buildStackedProgressOption(params: BuildStackedProgressOptionParams): EChartsOption {\n const { items, thickness, theme } = params;\n const displayByLabel = new Map(items.map((item) => [item.label, item.display]));\n\n return {\n textStyle: { fontFamily: theme.fontFamily },\n grid: { left: 0, right: 0, top: 0, bottom: 0, containLabel: false },\n tooltip: {\n trigger: 'item',\n backgroundColor: theme.surface,\n borderColor: theme.gridLine,\n textStyle: { color: theme.textPrimary, fontFamily: theme.fontFamily },\n formatter: (params: unknown) => {\n const entry = Array.isArray(params) ? params[0] : params;\n const name = (entry as { seriesName?: string })?.seriesName ?? '';\n return `${name}: ${displayByLabel.get(name) ?? ''}`;\n },\n },\n xAxis: { type: 'value', show: false },\n yAxis: { type: 'category', data: [''], show: false },\n series: items.map((item) => ({\n name: item.label,\n type: 'bar',\n stack: 'total',\n barWidth: thickness,\n data: [item.percent],\n itemStyle: {\n color: resolveColor(theme, item.color),\n borderRadius: SEGMENT_RADIUS,\n borderColor: theme.surface,\n borderWidth: SEGMENT_GAP,\n },\n emphasis: {\n itemStyle: {\n color: resolveHoverColor(theme, item.color),\n },\n },\n })),\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport type { ECElementEvent } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { TextComponent } from '../Text/text.component';\nimport { ChartThemeTokens, readChartThemeTokens } from '../Charts/chart-theme';\nimport {\n buildStackedProgressOption,\n normalizeStackedProgressItems,\n} from './stacked-progress-chart.options';\nimport { StackedProgressItem, NormalizedStackedProgressItem, StackedProgressColor } from './stacked-progress-chart.types';\n\nexport type {\n StackedProgressColor,\n StackedProgressItem,\n NormalizedStackedProgressItem,\n} from './stacked-progress-chart.types';\nexport { STACKED_PROGRESS_COLOR_OPTIONS } from './stacked-progress-chart.types';\n\n/**\n * Barra de progresso empilhada — wrapper do Design System sobre o ECharts\n * (`ngx-echarts`). Uma barra horizontal segmentada (um segmento por categoria)\n * com headers de valor + rótulo acima. Cores via tokens (`chart-theme`);\n * nenhuma cor hardcoded, nenhum token novo.\n */\n@Component({\n selector: 'tbk-stacked-progress-chart',\n standalone: true,\n imports: [CommonModule, NgxEchartsDirective, TextComponent],\n providers: [provideEchartsCore({ echarts: () => import('echarts') })],\n templateUrl: './stacked-progress-chart.component.html',\n styleUrls: ['./stacked-progress-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedProgressChartComponent {\n private readonly theme: ChartThemeTokens = readChartThemeTokens();\n\n // ── Conteúdo ───────────────────────────────────────────────────────────────\n /** Segmentos (categorias) exibidos. */\n readonly items = input<readonly StackedProgressItem[]>([]);\n\n // ── Aparência ─────────────────────────────────────────────────────────────────\n /** Exibe os headers (valor + rótulo) acima da barra. */\n readonly showHeaders = input(true, { transform: booleanAttribute });\n /** Espessura da barra em pixels. */\n readonly thickness = input<number, unknown>(24, { transform: numberAttribute });\n /** Percentual mínimo por segmento (mantém pequenos visíveis). */\n readonly minSegmentPercent = input<number, unknown>(0, { transform: numberAttribute });\n\n // ── i18n / a11y ────────────────────────────────────────────────────────────────\n readonly ariaLabel = input<string>('Barra de progresso');\n readonly emptyLabel = input<string>('Sem dados para exibir');\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly segmentClicked = output<NormalizedStackedProgressItem>();\n\n // ── Config do ECharts ───────────────────────────────────────────────────────────\n readonly initOpts = { renderer: 'svg' as const };\n\n readonly hasItems = computed(() => this.items().length > 0);\n\n readonly normalizedItems = computed(() =>\n normalizeStackedProgressItems(this.items(), this.minSegmentPercent()),\n );\n\n readonly option = computed(() =>\n buildStackedProgressOption({\n items: this.normalizedItems(),\n thickness: this.thickness(),\n theme: this.theme,\n }),\n );\n\n trackItem(_index: number, item: NormalizedStackedProgressItem): string {\n return item.id;\n }\n\n getColorHex(color?: StackedProgressColor): string {\n if (!color) return this.theme.neutral || '#CED1D4';\n return this.theme.colorByName[color] || this.theme.neutral || '#CED1D4';\n }\n\n formatPercent(percent: number): string {\n return `${percent.toFixed(1)}%`;\n }\n\n getRightText(item: NormalizedStackedProgressItem): string {\n if (!item.label) return item.display;\n if (item.display.includes(item.label)) return item.display;\n return `${item.display} ${item.label}`;\n }\n\n onChartClick(event: ECElementEvent): void {\n const item = this.normalizedItems()[event.seriesIndex ?? -1];\n if (item) {\n this.segmentClicked.emit(item);\n }\n }\n}\n","@if (hasItems()) {\n <div class=\"tbk-stacked-progress-chart\">\n <div\n echarts\n class=\"tbk-stacked-progress-chart__bar\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n [options]=\"option()\"\n [initOpts]=\"initOpts\"\n [autoResize]=\"true\"\n [style.height.px]=\"thickness()\"\n (chartClick)=\"onChartClick($event)\"\n ></div>\n\n @if (showHeaders()) {\n <div class=\"tbk-stacked-progress-chart__headers\">\n @for (item of normalizedItems(); track trackItem($index, item)) {\n <div class=\"tbk-stacked-progress-chart__header\">\n <div class=\"tbk-stacked-progress-chart__legend-left\">\n <div\n class=\"tbk-stacked-progress-chart__capsule\"\n [style.background-color]=\"getColorHex(item.color)\"\n ></div>\n <tbk-text\n class=\"tbk-stacked-progress-chart__percent\"\n as=\"span\"\n [children]=\"formatPercent(item.percent)\"\n color=\"Primary\"\n size=\"font-size-350\"\n weight=\"font-weight-bold\"\n ></tbk-text>\n @if (item.trendDirection && item.trendValue) {\n <span class=\"tbk-stacked-progress-chart__trend\">\n <tbk-text\n as=\"span\"\n [children]=\"(item.trendDirection === 'up' ? '↗ ' : '↘ ') + item.trendValue\"\n [color]=\"item.trendDirection === 'up' ? 'Success' : 'Critical'\"\n size=\"font-size-300\"\n weight=\"font-weight-medium\"\n ></tbk-text>\n </span>\n }\n </div>\n <div class=\"tbk-stacked-progress-chart__legend-right\">\n <tbk-text\n class=\"tbk-stacked-progress-chart__right-text\"\n as=\"span\"\n [children]=\"getRightText(item)\"\n color=\"Gray\"\n size=\"font-size-300\"\n ></tbk-text>\n </div>\n </div>\n }\n </div>\n }\n </div>\n} @else {\n <div class=\"tbk-stacked-progress-chart__empty\">\n <tbk-text as=\"span\" [children]=\"emptyLabel()\" color=\"Gray\" size=\"font-size-325\"></tbk-text>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../Button/button.component';\nimport { IconColor, IconName, IconsComponent } from '../Icons/icons.component';\nimport { TextComponent } from '../Text/text.component';\n\nexport interface StatsMetricCard {\n icon: IconName;\n iconColor?: IconColor;\n topBarColor?: string;\n color?: string;\n value: string | number;\n label: string;\n description?: string;\n}\n\nexport interface DonutSegment {\n dash: number;\n gap: number;\n offset: number;\n color: string;\n}\n\nconst DONUT_RADIUS = 35;\nconst DONUT_CIRCUMFERENCE = 2 * Math.PI * DONUT_RADIUS;\n\n@Component({\n selector: 'tbk-stats-overview-card',\n standalone: true,\n imports: [CommonModule, TextComponent, IconsComponent, ButtonComponent],\n templateUrl: './stats-overview-card.component.html',\n styleUrls: ['./stats-overview-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatsOverviewCardComponent {\n @Input() headerTitle = '';\n @Input() headerIcon: IconName | undefined = undefined;\n\n @Input() metricCards: StatsMetricCard[] = [];\n\n @Input() actionTitle = '';\n @Input() actionDescription = '';\n @Input() actionLabel = '';\n @Input() actionIcon: IconName = 'arrowUpBigSmallRegularFull';\n @Input() titleIcon: IconName = 'chartMixedRegular';\n @Input() illustrationSrc = '';\n @Input() filterLabel = '';\n @Input() filterOptions: { label: string; value: string }[] = [];\n @Input() set filterValue(val: string) {\n this.activeFilter = val || this.activeFilter;\n }\n\n activeFilter = '';\n hoveredIndex: number | null = null;\n\n @Output() metricCardClicked = new EventEmitter<StatsMetricCard>();\n @Output() filterChange = new EventEmitter<string>();\n\n selectFilter(value: string): void {\n this.activeFilter = value;\n this.filterChange.emit(value);\n }\n\n onSegmentEnter(index: number): void {\n this.hoveredIndex = index;\n }\n\n onSegmentLeave(): void {\n this.hoveredIndex = null;\n }\n\n readonly donutCircumference = DONUT_CIRCUMFERENCE;\n\n get totalValue(): number {\n return this.metricCards.reduce((sum, c) => sum + (Number(c.value) || 0), 0);\n }\n\n get donutSegments(): DonutSegment[] {\n const total = this.totalValue;\n if (total === 0) return [];\n\n let cumulative = 0;\n return this.metricCards.map(card => {\n const value = Number(card.value) || 0;\n const dash = (value / total) * DONUT_CIRCUMFERENCE;\n const segment: DonutSegment = {\n dash,\n gap: DONUT_CIRCUMFERENCE - dash,\n offset: -cumulative,\n color: card.color ?? '#3b82f6',\n };\n cumulative += dash;\n return segment;\n });\n }\n\n getTopBarStyle(card: StatsMetricCard): Record<string, string> {\n const color = card.topBarColor ?? 'var(--tbk-ds-bg-color-gradient-bg)';\n return { background: color };\n }\n}\n","<div class=\"tbk-stats-overview-card\">\n\n <!-- Panel (topo) -->\n <div class=\"tbk-stats-overview-card__panel\" *ngIf=\"actionTitle || actionLabel\">\n\n <!-- Filtro — absolute no desktop, static (topo) no mobile -->\n <div class=\"tbk-stats-overview-card__filter\" *ngIf=\"filterOptions.length > 0\">\n <span class=\"tbk-stats-overview-card__filter-label\" *ngIf=\"filterLabel\">{{ filterLabel }}</span>\n <span class=\"tbk-stats-overview-card__filter-divider\" *ngIf=\"filterLabel\"></span>\n <div class=\"tbk-stats-overview-card__filter-group\">\n <button\n *ngFor=\"let opt of filterOptions\"\n type=\"button\"\n class=\"tbk-stats-overview-card__filter-btn\"\n [class.tbk-stats-overview-card__filter-btn--active]=\"opt.value === activeFilter\"\n (click)=\"selectFilter(opt.value)\"\n >{{ opt.label }}</button>\n </div>\n </div>\n\n <!-- Corpo: donut + conteúdo -->\n <div class=\"tbk-stats-overview-card__panel-body\">\n\n <!-- Donut chart -->\n <div class=\"tbk-stats-overview-card__donut\">\n <svg viewBox=\"0 0 100 100\" class=\"tbk-stats-overview-card__donut-svg\">\n <g transform=\"rotate(-90, 50, 50)\">\n <circle\n cx=\"50\" cy=\"50\" r=\"35\"\n fill=\"none\"\n stroke=\"var(--tbk-ds-color-border-default)\"\n stroke-width=\"14\"\n class=\"tbk-stats-overview-card__donut-bg\"\n />\n <circle\n *ngFor=\"let seg of donutSegments; let i = index\"\n cx=\"50\" cy=\"50\" r=\"35\"\n fill=\"none\"\n [attr.stroke]=\"seg.color\"\n stroke-width=\"14\"\n [attr.stroke-dasharray]=\"seg.dash + ' ' + seg.gap\"\n [attr.stroke-dashoffset]=\"seg.offset\"\n class=\"tbk-stats-overview-card__donut-segment\"\n (mouseenter)=\"onSegmentEnter(i)\"\n (mouseleave)=\"onSegmentLeave()\"\n />\n </g>\n <text\n x=\"50\" y=\"47\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n class=\"tbk-stats-overview-card__donut-value\"\n >{{ totalValue }}</text>\n <text\n x=\"50\" y=\"62\"\n text-anchor=\"middle\"\n class=\"tbk-stats-overview-card__donut-label\"\n >Total</text>\n </svg>\n </div>\n\n <!-- Texto e botão -->\n <div class=\"tbk-stats-overview-card__panel-content\">\n <div class=\"tbk-stats-overview-card__panel-title\">\n <tbk-text\n [children]=\"actionTitle\"\n as=\"span\"\n size=\"font-size-350\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n </div>\n <tbk-text\n *ngIf=\"actionDescription\"\n [children]=\"actionDescription\"\n as=\"p\"\n size=\"font-size-300\"\n color=\"Gray\"\n weight=\"font-weight-regular\"\n margin=\"0\"\n ></tbk-text>\n <tbk-button\n *ngIf=\"actionLabel\"\n [label]=\"actionLabel\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'solid' }\"\n ></tbk-button>\n </div>\n </div>\n\n <!-- Ilustração -->\n <img\n *ngIf=\"illustrationSrc\"\n [src]=\"illustrationSrc\"\n class=\"tbk-stats-overview-card__illustration\"\n alt=\"\"\n aria-hidden=\"true\"\n />\n </div>\n\n <!-- Metric cards row -->\n <div class=\"tbk-stats-overview-card__metrics\" *ngIf=\"metricCards.length > 0\">\n <div class=\"tbk-stats-overview-card__top-bars\">\n <div\n *ngFor=\"let card of metricCards\"\n class=\"tbk-stats-overview-card__top-bar-segment\"\n [ngStyle]=\"getTopBarStyle(card)\"\n ></div>\n </div>\n\n <div class=\"tbk-stats-overview-card__metric-row\">\n <button\n *ngFor=\"let card of metricCards; let i = index\"\n type=\"button\"\n class=\"tbk-stats-overview-card__metric\"\n [class.tbk-stats-overview-card__metric--focused]=\"hoveredIndex === i\"\n (click)=\"metricCardClicked.emit(card)\"\n >\n <div class=\"tbk-stats-overview-card__metric-body\">\n <tbk-text\n [children]=\"card.value.toString()\"\n as=\"span\"\n size=\"font-size-500\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n <tbk-text\n [children]=\"card.label\"\n as=\"span\"\n size=\"font-size-300\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n </div>\n </button>\n </div>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n ToggleOption,\n ToggleOrientation,\n ToggleSurface,\n ToggleValue,\n ToggleVariant,\n} from './toggle.types';\n\nlet nextToggleId = 0;\n\n/**\n * Grupo de switches independentes — multi-seleção.\n *\n * Cada item é um `<input type=\"checkbox\" role=\"switch\">`, anunciado como\n * \"switch\" por leitores de tela. O valor exposto é um `Array<string | number>`\n * com as opções marcadas. Integra com Reactive Forms via `ControlValueAccessor`.\n *\n * @example\n * <tbk-toggle\n * label=\"Funcionalidades\"\n * [options]=\"features\"\n * [(ngModel)]=\"enabledFeatures\"\n * ></tbk-toggle>\n */\n@Component({\n selector: 'tbk-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true,\n },\n ],\n})\nexport class ToggleComponent implements ControlValueAccessor {\n /** Rótulo do grupo. Usado como `aria-labelledby` no wrapper. */\n @Input() label = '';\n\n /** Marca o grupo como obrigatório — adiciona \"*\" visual e `aria-required` nos inputs. */\n @Input() required = false;\n\n /** Texto auxiliar exibido abaixo do grupo. Lido via `aria-describedby`. */\n @Input() helperText = '';\n\n /** Controla a exibição do `helperText`. */\n @Input() showHelperText = false;\n\n /** Direção do layout. */\n @Input() orientation: ToggleOrientation = 'vertical';\n\n /** Marca o grupo como inválido — aplica visual de erro e `aria-invalid`. */\n @Input() invalid = false;\n\n /** Aparência do switch (cor on). */\n @Input() variant: ToggleVariant = 'primary';\n\n /** Estilo do container do item. `boxed` envolve cada item em um cartão. */\n @Input() surface: ToggleSurface = 'default';\n\n /** Opções renderizadas. `label`/`description` são tratados como texto puro. */\n @Input() options: ToggleOption[] = [];\n\n /** Desabilita todo o grupo. Itens individuais podem usar `option.disabled`. */\n @Input() disabled = false;\n\n /** Emitido sempre que a seleção muda. Mesmo payload do `ControlValueAccessor`. */\n @Output() valueChange = new EventEmitter<ToggleValue>();\n\n value: ToggleValue = [];\n\n readonly groupId = `tbk-toggle-${++nextToggleId}`;\n readonly labelId = `${this.groupId}-label`;\n readonly helperId = `${this.groupId}-helper`;\n\n private onChange: (value: ToggleValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly changeDetectorRef: ChangeDetectorRef) {}\n\n get hasVisibleHelper(): boolean {\n return this.showHelperText && !!this.helperText;\n }\n\n writeValue(value: ToggleValue | null): void {\n this.value = Array.isArray(value) ? [...value] : [];\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: (value: ToggleValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n }\n\n isChecked(option: ToggleOption): boolean {\n return (this.value ?? []).includes(option?.value);\n }\n\n onInputChange(option: ToggleOption): void {\n if (this.disabled || option?.disabled) {\n return;\n }\n\n const isSelected = this.isChecked(option);\n const next = isSelected\n ? (this.value ?? []).filter((item) => item !== option?.value)\n : [...(this.value ?? []), option?.value];\n\n this.value = next;\n this.onChange(next);\n this.valueChange.emit(next);\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n }\n\n onInputBlur(): void {\n this.onTouched();\n }\n\n trackByValue(_index: number, option: ToggleOption): string | number {\n return option?.value;\n }\n}\n","<div\n class=\"tbk-toggle\"\n role=\"group\"\n [attr.aria-labelledby]=\"label ? labelId : null\"\n [attr.aria-describedby]=\"hasVisibleHelper ? helperId : null\"\n [class.tbk-toggle--disabled]=\"disabled\"\n [class.tbk-toggle--boxed]=\"surface === 'boxed'\"\n [class.tbk-toggle--secondary]=\"variant === 'secondary'\"\n>\n <div *ngIf=\"label\" class=\"tbk-toggle__label\" [id]=\"labelId\">\n <span>{{ label }}</span>\n <span *ngIf=\"required\" class=\"tbk-toggle__required\" aria-hidden=\"true\">*</span>\n </div>\n\n <ul\n class=\"tbk-toggle__items\"\n [class.tbk-toggle__items--horizontal]=\"orientation === 'horizontal'\"\n >\n <li\n *ngFor=\"let option of options; trackBy: trackByValue\"\n class=\"tbk-toggle__item\"\n [class.tbk-toggle__item--checked]=\"isChecked(option)\"\n [class.tbk-toggle__item--invalid]=\"invalid\"\n [class.tbk-toggle__item--option-disabled]=\"option.disabled\"\n >\n <label class=\"tbk-toggle__item-content\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"tbk-toggle__input\"\n [value]=\"option.value\"\n [checked]=\"isChecked(option)\"\n [disabled]=\"disabled || option.disabled\"\n [attr.aria-checked]=\"isChecked(option)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [attr.aria-describedby]=\"hasVisibleHelper ? helperId : null\"\n (change)=\"onInputChange(option)\"\n (blur)=\"onInputBlur()\"\n />\n\n <span class=\"tbk-toggle__control\" aria-hidden=\"true\">\n <span class=\"tbk-toggle__dot\"></span>\n </span>\n\n <span class=\"tbk-toggle__text\">\n <span class=\"tbk-toggle__item-label\">{{ option.label }}</span>\n <span *ngIf=\"option.description\" class=\"tbk-toggle__item-description\">\n {{ option.description }}\n </span>\n </span>\n </label>\n </li>\n </ul>\n\n <div\n *ngIf=\"hasVisibleHelper\"\n class=\"tbk-toggle__helper\"\n [id]=\"helperId\"\n [class.tbk-toggle__helper--invalid]=\"invalid\"\n >\n {{ helperText }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\nimport { IconsComponent } from '../Icons/icons.component';\n\nexport type ViewSwitcherView = 'grid' | 'list';\n\nexport interface ViewSwitcherOption {\n id: ViewSwitcherView;\n label: string;\n}\n\nconst DEFAULT_OPTIONS: ViewSwitcherOption[] = [\n { id: 'grid', label: 'Visualização em grade' },\n { id: 'list', label: 'Visualização em lista' },\n];\n\n@Component({\n selector: 'tbk-view-switcher',\n standalone: true,\n imports: [CommonModule, IconsComponent],\n templateUrl: './view-switcher.component.html',\n styleUrls: ['./view-switcher.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewSwitcherComponent {\n @Input() activeView: ViewSwitcherView = 'list';\n @Input() ariaLabel = 'Alternar visualização';\n @Input() gridLabel = DEFAULT_OPTIONS[0].label;\n @Input() listLabel = DEFAULT_OPTIONS[1].label;\n\n @Output() viewChange = new EventEmitter<ViewSwitcherView>();\n\n @ViewChildren('btn') buttons!: QueryList<ElementRef<HTMLButtonElement>>;\n\n readonly views: ViewSwitcherView[] = ['grid', 'list'];\n\n isActive(view: ViewSwitcherView): boolean {\n return (this.activeView ?? 'list') === view;\n }\n\n setView(view: ViewSwitcherView): void {\n const current = this.activeView ?? 'list';\n if (current === view) return;\n this.activeView = view;\n this.viewChange.emit(view);\n }\n\n onKeydown(event: KeyboardEvent, view: ViewSwitcherView): void {\n const idx = this.views.indexOf(view);\n let targetIdx: number | null = null;\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n targetIdx = (idx + 1) % this.views.length;\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n targetIdx = (idx - 1 + this.views.length) % this.views.length;\n }\n\n if (targetIdx !== null) {\n event.preventDefault();\n const targetView = this.views[targetIdx];\n this.setView(targetView);\n const btns = this.buttons.toArray();\n btns[targetIdx]?.nativeElement.focus();\n }\n }\n}\n","<div\n class=\"tbk-view-switcher\"\n role=\"group\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <!-- Grid view button -->\n <button\n #btn\n class=\"tbk-view-switcher__btn\"\n [class.tbk-view-switcher__btn--active]=\"isActive('grid')\"\n type=\"button\"\n [attr.aria-pressed]=\"isActive('grid')\"\n [attr.aria-label]=\"gridLabel\"\n (click)=\"setView('grid')\"\n (keydown)=\"onKeydown($event, 'grid')\"\n >\n <tbk-icons\n name=\"gridRegularFull\"\n [color]=\"null\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n\n <!-- List view button -->\n <button\n #btn\n class=\"tbk-view-switcher__btn\"\n [class.tbk-view-switcher__btn--active]=\"isActive('list')\"\n type=\"button\"\n [attr.aria-pressed]=\"isActive('list')\"\n [attr.aria-label]=\"listLabel\"\n (click)=\"setView('list')\"\n (keydown)=\"onKeydown($event, 'list')\"\n >\n <tbk-icons\n name=\"listRegularFull\"\n [color]=\"null\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { AbstractControl, FormGroup, Validators } from '@angular/forms';\nimport { combineLatest, startWith, Subscription } from 'rxjs';\nimport { ButtonComponent } from '../Button/button.component';\n\nexport type FormSectionStatus = 'empty' | 'in-progress' | 'completed';\nexport type StepStatus = 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'ERROR';\n\nexport interface FormSectionStepperItem {\n id: string;\n label: string;\n description?: string;\n // Range: 0 to 1. When provided, status is inferred.\n progress?: number;\n // If provided, overrides the status inferred from progress.\n status?: FormSectionStatus | StepStatus;\n // Optional section form reference for dynamic progress/state.\n formGroup?: FormGroup | null;\n}\n\n@Component({\n selector: 'tbk-form-section-stepper',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n templateUrl: './form-section-stepper.component.html',\n styleUrls: ['./form-section-stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormSectionStepperComponent implements OnInit, OnChanges, OnDestroy {\n @Input() sections: FormSectionStepperItem[] = [];\n // Current section id for visual highlight.\n @Input() currentSectionId?: string;\n // Disables clicks.\n @Input() disabled = false;\n // Optional: auto open next section when current one reaches 100%.\n @Input() autoAdvance = false;\n // Optional external map to associate a FormGroup with section id.\n @Input() sectionFormGroups: Record<string, FormGroup | null> = {};\n // Optional layout controls for product teams.\n @Input() containerPadding = '0';\n @Input() sectionGap = 8;\n @Input() sectionCollapsedHeight = 53;\n @Input() sectionExpandedMinHeight = 217;\n @Input() sectionExpandedMaxHeight: number | null = null;\n @Input() panelContentPadding = '0 16px 14px 42px';\n @Input() minWidth: string | null = null;\n @Input() maxWidth: string | null = null;\n\n @Output() sectionChange = new EventEmitter<string>();\n\n // Submit button — enabled only when every section reaches COMPLETED.\n @Input() showSubmitButton = false;\n @Input() submitLabel = 'Enviar';\n @Output() submitClick = new EventEmitter<void>();\n\n expandedSectionId?: string;\n expandedSectionIndex?: number;\n\n private readonly statusById = new Map<string, StepStatus>();\n private readonly progressById = new Map<string, number>();\n private readonly showCheckById = new Map<string, boolean>();\n private readonly formSubscriptions = new Map<string, Subscription>();\n private readonly formRefsById = new Map<string, FormGroup>();\n private readonly checkTimers = new Map<string, ReturnType<typeof setTimeout>>();\n private pulseSectionId?: string;\n private pulseSectionIndex?: number;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.syncSectionsState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['sections'] || changes['sectionFormGroups']) {\n this.syncSectionsState();\n }\n\n if (changes['currentSectionId']) {\n this.syncCurrentSection();\n }\n }\n\n ngOnDestroy(): void {\n this.formSubscriptions.forEach((sub) => sub.unsubscribe());\n this.formSubscriptions.clear();\n this.formRefsById.clear();\n this.checkTimers.forEach((timer) => clearTimeout(timer));\n this.checkTimers.clear();\n }\n\n get allSectionsCompleted(): boolean {\n const list = this.sections ?? [];\n if (list.length === 0) return false;\n return list.every((section) => section && this.getSectionStatus(section) === 'COMPLETED');\n }\n\n onSubmitClick(): void {\n if (!this.allSectionsCompleted) return;\n this.submitClick.emit();\n }\n\n onSectionClick(section: FormSectionStepperItem, sectionIndex: number): void {\n if (!section || !section.id || this.disabled) {\n return;\n }\n\n const isAlreadyExpanded = this.expandedSectionIndex === sectionIndex;\n\n this.currentSectionId = section.id;\n this.expandedSectionId = isAlreadyExpanded ? undefined : section.id;\n this.expandedSectionIndex = isAlreadyExpanded ? undefined : sectionIndex;\n\n if (!isAlreadyExpanded) {\n this.startPulse(section.id, sectionIndex);\n }\n\n this.sectionChange.emit(section.id);\n this.cdr.markForCheck();\n }\n\n trackBySectionId(index: number, section: FormSectionStepperItem): string {\n if (!section || !section.id) {\n return `${index}`;\n }\n return `${section.id}-${index}`;\n }\n\n isCurrent(section: FormSectionStepperItem): boolean {\n if (!section) return false;\n return this.currentSectionId === section.id;\n }\n\n isExpanded(section: FormSectionStepperItem, sectionIndex?: number): boolean {\n if (!section) return false;\n if (sectionIndex !== undefined) {\n return this.expandedSectionIndex === sectionIndex;\n }\n\n return this.expandedSectionId === section.id;\n }\n\n isPulsing(section: FormSectionStepperItem, sectionIndex?: number): boolean {\n if (!section) return false;\n if (sectionIndex !== undefined) {\n return this.pulseSectionIndex === sectionIndex;\n }\n\n return this.pulseSectionId === section.id;\n }\n\n getSectionStatus(section: FormSectionStepperItem): StepStatus {\n if (!section || !section.id) return 'NOT_STARTED';\n return this.statusById.get(section.id) ?? this.getLegacyStatus(section);\n }\n\n getSectionProgress(section: FormSectionStepperItem): number {\n if (!section || !section.id) return 0;\n if (this.progressById.has(section.id)) {\n return this.progressById.get(section.id) ?? 0;\n }\n\n return this.getLegacyProgress(section);\n }\n\n shouldShowCheck(section: FormSectionStepperItem): boolean {\n if (!section || !section.id) return false;\n return this.showCheckById.get(section.id) ?? false;\n }\n\n getRingDashOffset(section: FormSectionStepperItem): number {\n if (!section) return this.ringCircumference;\n const progress = this.getSectionProgress(section);\n const clamped = Math.max(0, Math.min(100, progress));\n return this.ringCircumference * (1 - clamped / 100);\n }\n\n getAriaLabel(section: FormSectionStepperItem): string {\n if (!section) return '';\n const status = this.getSectionStatus(section);\n const progress = Math.round(this.getSectionProgress(section));\n\n if (status === 'COMPLETED') {\n return `${section.label || ''}, concluido`;\n }\n\n if (status === 'ERROR') {\n return `${section.label || ''}, com erro`;\n }\n\n return `${section.label || ''}, ${progress}% concluido`;\n }\n\n getSectionClasses(section: FormSectionStepperItem, sectionIndex?: number): { [klass: string]: boolean } {\n if (!section) return {};\n const status = this.getSectionStatus(section);\n\n return {\n 'tbk-form-section-stepper__item--expanded': this.isExpanded(section, sectionIndex),\n 'tbk-form-section-stepper__item--current': this.isCurrent(section),\n 'tbk-form-section-stepper__item--pulse': this.isPulsing(section, sectionIndex),\n 'tbk-form-section-stepper__item--status-not-started': status === 'NOT_STARTED',\n 'tbk-form-section-stepper__item--status-progress': status === 'IN_PROGRESS',\n 'tbk-form-section-stepper__item--status-completed': status === 'COMPLETED',\n 'tbk-form-section-stepper__item--status-error': status === 'ERROR',\n };\n }\n\n calculateSectionProgress(formGroup: FormGroup): number {\n if (!formGroup) return 0;\n const controls = this.flattenControls(formGroup);\n const requiredControls = controls.filter((control) => this.isRequiredControl(control));\n\n if (requiredControls.length === 0) {\n return 100;\n }\n\n const validRequiredCount = requiredControls.filter((control) => control.valid).length;\n return (validRequiredCount / requiredControls.length) * 100;\n }\n\n readonly ringRadius = 9;\n readonly ringCircumference = 2 * Math.PI * this.ringRadius;\n\n private syncCurrentSection(): void {\n const list = this.sections ?? [];\n const currentIndex = this.currentSectionId\n ? list.findIndex((s) => s?.id === this.currentSectionId)\n : -1;\n const currentExists = currentIndex >= 0;\n\n if (currentExists) {\n this.expandedSectionId = this.currentSectionId;\n this.expandedSectionIndex = currentIndex;\n this.cdr.markForCheck();\n return;\n }\n\n if (this.expandedSectionIndex === undefined && list.length > 0) {\n const firstSection = list[0];\n if (firstSection) {\n this.currentSectionId = firstSection.id;\n this.expandedSectionId = firstSection.id;\n this.expandedSectionIndex = 0;\n this.cdr.markForCheck();\n }\n }\n }\n\n private syncSectionsState(): void {\n const list = this.sections ?? [];\n const activeIds = new Set(list.map((section) => section?.id));\n\n this.formSubscriptions.forEach((sub, id) => {\n if (!activeIds.has(id)) {\n sub.unsubscribe();\n this.formSubscriptions.delete(id);\n this.formRefsById.delete(id);\n this.statusById.delete(id);\n this.progressById.delete(id);\n this.showCheckById.delete(id);\n\n const timer = this.checkTimers.get(id);\n if (timer) {\n clearTimeout(timer);\n this.checkTimers.delete(id);\n }\n }\n });\n\n list.forEach((section) => {\n if (section) {\n this.bindSection(section);\n }\n });\n this.syncCurrentSection();\n this.cdr.markForCheck();\n }\n\n private bindSection(section: FormSectionStepperItem): void {\n if (!section || !section.id) return;\n const formGroup = this.resolveSectionFormGroup(section);\n\n if (!formGroup) {\n this.unsubscribeSection(section.id);\n const status = this.getLegacyStatus(section);\n const progress = this.getLegacyProgress(section);\n this.updateSectionState(section.id, status, progress);\n return;\n }\n\n const currentFormRef = this.formRefsById.get(section.id);\n if (currentFormRef === formGroup && this.formSubscriptions.has(section.id)) {\n return;\n }\n\n this.unsubscribeSection(section.id);\n this.formRefsById.set(section.id, formGroup);\n\n const sub = combineLatest([\n formGroup.valueChanges.pipe(startWith(formGroup.value)),\n formGroup.statusChanges.pipe(startWith(formGroup.status)),\n ]).subscribe(() => {\n const nextStatus = this.deriveStatusFromForm(formGroup);\n const nextProgress = this.calculateSectionProgress(formGroup);\n this.updateSectionState(section.id, nextStatus, nextProgress);\n });\n\n this.formSubscriptions.set(section.id, sub);\n }\n\n private unsubscribeSection(sectionId: string): void {\n if (!sectionId) return;\n const sub = this.formSubscriptions.get(sectionId);\n if (sub) {\n sub.unsubscribe();\n this.formSubscriptions.delete(sectionId);\n }\n\n this.formRefsById.delete(sectionId);\n }\n\n private resolveSectionFormGroup(section: FormSectionStepperItem): FormGroup | null {\n if (!section || !section.id) return null;\n return (this.sectionFormGroups?.[section.id]) ?? section.formGroup ?? null;\n }\n\n private updateSectionState(sectionId: string, nextStatus: StepStatus, nextProgress: number): void {\n if (!sectionId) return;\n const previousStatus = this.statusById.get(sectionId);\n const clampedProgress = Math.max(0, Math.min(100, nextProgress));\n\n this.statusById.set(sectionId, nextStatus);\n this.progressById.set(sectionId, clampedProgress);\n\n if (nextStatus === 'COMPLETED') {\n const timer = this.checkTimers.get(sectionId);\n if (timer) {\n clearTimeout(timer);\n }\n\n this.showCheckById.set(sectionId, false);\n const nextTimer = setTimeout(() => {\n this.showCheckById.set(sectionId, true);\n this.cdr.markForCheck();\n }, 150);\n this.checkTimers.set(sectionId, nextTimer);\n } else {\n this.showCheckById.set(sectionId, false);\n const timer = this.checkTimers.get(sectionId);\n if (timer) {\n clearTimeout(timer);\n this.checkTimers.delete(sectionId);\n }\n }\n\n if (this.autoAdvance && previousStatus && previousStatus !== 'COMPLETED' && nextStatus === 'COMPLETED') {\n this.openNextSection(sectionId);\n }\n\n this.cdr.markForCheck();\n }\n\n private openNextSection(sectionId: string): void {\n const list = this.sections ?? [];\n const index = list.findIndex((section) => section?.id === sectionId);\n if (index < 0 || index >= list.length - 1) {\n return;\n }\n\n const next = list[index + 1];\n if (!next) return;\n this.currentSectionId = next.id;\n this.expandedSectionId = next.id;\n this.expandedSectionIndex = index + 1;\n this.sectionChange.emit(next.id);\n this.startPulse(next.id, index + 1);\n }\n\n private startPulse(sectionId: string, sectionIndex?: number): void {\n this.pulseSectionId = sectionId;\n this.pulseSectionIndex = sectionIndex;\n const currentPulseIndex = sectionIndex;\n setTimeout(() => {\n if (this.pulseSectionId === sectionId && this.pulseSectionIndex === currentPulseIndex) {\n this.pulseSectionId = undefined;\n this.pulseSectionIndex = undefined;\n this.cdr.markForCheck();\n }\n }, 180);\n }\n\n private deriveStatusFromForm(formGroup: FormGroup): StepStatus {\n const progress = this.calculateSectionProgress(formGroup);\n const interacted = this.hasInteracted(formGroup);\n\n if (formGroup.invalid && interacted) {\n return 'ERROR';\n }\n\n if (progress >= 100) {\n return 'COMPLETED';\n }\n\n if (progress > 0) {\n return 'IN_PROGRESS';\n }\n\n return 'NOT_STARTED';\n }\n\n private hasInteracted(control: AbstractControl): boolean {\n if (!control) return false;\n if (control.touched || control.dirty) {\n return true;\n }\n\n const maybeChildren = (control as { controls?: Record<string, AbstractControl> | AbstractControl[] }).controls;\n if (!maybeChildren) {\n return false;\n }\n\n if (Array.isArray(maybeChildren)) {\n return maybeChildren.some((child) => this.hasInteracted(child));\n }\n\n return Object.values(maybeChildren).some((child) => this.hasInteracted(child));\n }\n\n private flattenControls(control: AbstractControl): AbstractControl[] {\n if (!control) return [];\n const maybeChildren = (control as { controls?: Record<string, AbstractControl> | AbstractControl[] }).controls;\n if (!maybeChildren) {\n return [control];\n }\n\n if (Array.isArray(maybeChildren)) {\n return maybeChildren.flatMap((child) => this.flattenControls(child));\n }\n\n return Object.values(maybeChildren).flatMap((child) => this.flattenControls(child));\n }\n\n private isRequiredControl(control: AbstractControl): boolean {\n if (!control) return false;\n if (typeof control.hasValidator === 'function') {\n return control.hasValidator(Validators.required) || control.hasValidator(Validators.requiredTrue);\n }\n\n return false;\n }\n\n private getLegacyStatus(section: FormSectionStepperItem): StepStatus {\n if (!section) return 'NOT_STARTED';\n if (section.status) {\n const normalized = section.status.toString().toUpperCase().replace(/-/g, '_');\n if (normalized === 'EMPTY' || normalized === 'NOT_STARTED') {\n return 'NOT_STARTED';\n }\n if (normalized === 'IN_PROGRESS') {\n return 'IN_PROGRESS';\n }\n if (normalized === 'COMPLETED') {\n return 'COMPLETED';\n }\n if (normalized === 'ERROR') {\n return 'ERROR';\n }\n }\n\n const progress = this.getLegacyProgress(section);\n if (progress >= 100) {\n return 'COMPLETED';\n }\n if (progress > 0) {\n return 'IN_PROGRESS';\n }\n\n return 'NOT_STARTED';\n }\n\n private getLegacyProgress(section: FormSectionStepperItem): number {\n if (!section) return 0;\n const raw = section.progress ?? 0;\n const normalized = raw <= 1 ? raw * 100 : raw;\n return Math.max(0, Math.min(100, normalized));\n }\n\n getPanelId(sectionId: string): string {\n return `tbk-form-section-stepper-panel-${sectionId}`;\n }\n\n getHeaderId(sectionId: string): string {\n return `tbk-form-section-stepper-header-${sectionId}`;\n }\n\n getProgressNow(section: FormSectionStepperItem): number {\n return Math.round(this.getSectionProgress(section));\n }\n\n isProgressVisible(section: FormSectionStepperItem): boolean {\n if (!section) return false;\n const status = this.getSectionStatus(section);\n return status === 'IN_PROGRESS' || (status === 'COMPLETED' && !this.shouldShowCheck(section));\n }\n\n getChevronIcon(section: FormSectionStepperItem): string {\n return this.isExpanded(section) ? '/assets/chevron-up-solid-full.svg' : '/assets/chevron-down-solid-full.svg';\n }\n\n getContentMessage(section: FormSectionStepperItem): string {\n if (!section) return '';\n if (this.getSectionStatus(section) === 'COMPLETED') {\n return 'Você preencheu todos os campos obrigatórios.';\n }\n return section.description || 'Preencha os dados obrigatórios para avançar com o registro';\n }\n\n getItemRoleDescription(section: FormSectionStepperItem): string {\n if (!section) return '';\n return `${section.label || ''}, secao do stepper`;\n }\n\n isItemDisabled(): boolean {\n return this.disabled;\n }\n\n isError(section: FormSectionStepperItem): boolean {\n return this.getSectionStatus(section) === 'ERROR';\n }\n\n isCompleted(section: FormSectionStepperItem): boolean {\n return this.getSectionStatus(section) === 'COMPLETED';\n }\n\n isNotStarted(section: FormSectionStepperItem): boolean {\n return this.getSectionStatus(section) === 'NOT_STARTED';\n }\n\n isInProgress(section: FormSectionStepperItem): boolean {\n return this.getSectionStatus(section) === 'IN_PROGRESS';\n }\n\n getProgressTrackColor(): string {\n return 'var(--tbk-ds-bg-color-gray-400)';\n }\n\n getProgressFillColor(): string {\n return 'var(--tbk-ds-color-icon-success)';\n }\n\n getIconPath(section: FormSectionStepperItem): string {\n if (this.isError(section)) {\n return '/assets/error-form-section-stepper.svg';\n }\n\n if (this.isCompleted(section)) {\n return '/assets/check-form-section-stepper.svg';\n }\n\n return '/assets/notstarted-form-section-stepper.svg';\n }\n\n getIconAlt(section: FormSectionStepperItem): string {\n if (this.isError(section)) {\n return 'Erro na secao';\n }\n\n if (this.isCompleted(section)) {\n return 'Secao concluida';\n }\n\n return 'Secao nao iniciada';\n }\n\n getProgressStateLabel(section: FormSectionStepperItem): string {\n if (!section) return '';\n const status = this.getSectionStatus(section);\n if (status === 'COMPLETED') {\n return 'concluido';\n }\n\n if (status === 'ERROR') {\n return 'com erro';\n }\n\n return `${this.getProgressNow(section)}% concluido`;\n }\n\n getAriaValueNow(section: FormSectionStepperItem): number {\n if (!section) return 0;\n const status = this.getSectionStatus(section);\n if (status === 'COMPLETED') {\n return 100;\n }\n\n if (status === 'NOT_STARTED') {\n return 0;\n }\n\n return this.getProgressNow(section);\n }\n\n getExpandedAria(section: FormSectionStepperItem, sectionIndex?: number): 'true' | 'false' {\n return this.isExpanded(section, sectionIndex) ? 'true' : 'false';\n }\n\n getMinHeight(section: FormSectionStepperItem, sectionIndex?: number): string {\n return this.isExpanded(section, sectionIndex)\n ? `${this.sectionExpandedMinHeight}px`\n : `${this.sectionCollapsedHeight}px`;\n }\n\n getMaxHeight(section: FormSectionStepperItem, sectionIndex?: number): string | null {\n if (!this.isExpanded(section, sectionIndex) || this.sectionExpandedMaxHeight === null) {\n return null;\n }\n\n return `${this.sectionExpandedMaxHeight}px`;\n }\n\n getTriggerHeight(section: FormSectionStepperItem, sectionIndex?: number): string | null {\n return this.isExpanded(section, sectionIndex) ? null : `${this.sectionCollapsedHeight}px`;\n }\n\n getPanelPadding(section: FormSectionStepperItem, sectionIndex?: number): string | null {\n return this.isExpanded(section, sectionIndex) ? this.panelContentPadding : null;\n }\n\n getPanelMaxHeight(section: FormSectionStepperItem, sectionIndex?: number): string | null {\n if (!this.isExpanded(section, sectionIndex) || this.sectionExpandedMaxHeight === null) {\n return null;\n }\n\n return `${Math.max(0, this.sectionExpandedMaxHeight - this.sectionCollapsedHeight)}px`;\n }\n\n getContainerAriaLabel(): string {\n return 'Stepper de secoes do formulario';\n }\n\n getPanelStateClass(section: FormSectionStepperItem, sectionIndex?: number): { [klass: string]: boolean } {\n return {\n 'tbk-form-section-stepper__panel--expanded': this.isExpanded(section, sectionIndex),\n 'tbk-form-section-stepper__panel--collapsed': !this.isExpanded(section, sectionIndex),\n };\n }\n}\n","<div\n class=\"tbk-form-section-stepper\"\n [class.tbk-form-section-stepper--disabled]=\"disabled\"\n [style.padding]=\"containerPadding\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n role=\"group\"\n [attr.aria-label]=\"getContainerAriaLabel()\"\n>\n <div class=\"tbk-form-section-stepper__list\" [style.gap.px]=\"sectionGap\">\n <div\n *ngFor=\"let section of sections; let itemIndex = index; trackBy: trackBySectionId\"\n class=\"tbk-form-section-stepper__item\"\n [ngClass]=\"getSectionClasses(section, itemIndex)\"\n [style.min-height]=\"getMinHeight(section, itemIndex)\"\n [style.max-height]=\"getMaxHeight(section, itemIndex)\"\n [attr.data-status]=\"getSectionStatus(section)\"\n [attr.aria-roledescription]=\"getItemRoleDescription(section)\"\n >\n <button\n type=\"button\"\n class=\"tbk-form-section-stepper__trigger\"\n [style.min-height.px]=\"sectionCollapsedHeight\"\n [style.height]=\"getTriggerHeight(section, itemIndex)\"\n (click)=\"onSectionClick(section, itemIndex)\"\n [disabled]=\"isItemDisabled()\"\n [attr.id]=\"getHeaderId(section.id)\"\n [attr.aria-controls]=\"getPanelId(section.id)\"\n [attr.aria-expanded]=\"getExpandedAria(section, itemIndex)\"\n >\n <div class=\"tbk-form-section-stepper__main\">\n <div class=\"tbk-form-section-stepper__header\">\n <img\n class=\"tbk-form-section-stepper__chevron\"\n [src]=\"getChevronIcon(section)\"\n alt=\"Expandir ou recolher secao\"\n />\n\n <div\n class=\"tbk-form-section-stepper__text\"\n [attr.aria-label]=\"getAriaLabel(section)\"\n >\n <div class=\"tbk-form-section-stepper__label\">\n {{ section.label }}\n </div>\n\n <div class=\"tbk-form-section-stepper__sr-only\">\n {{ section.label }}, {{ getProgressStateLabel(section) }}\n </div>\n </div>\n </div>\n\n <div\n class=\"tbk-form-section-stepper__indicator\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"getAriaValueNow(section)\"\n [attr.aria-label]=\"getAriaLabel(section)\"\n >\n <ng-container *ngIf=\"isProgressVisible(section); else staticIcon\">\n <svg class=\"tbk-form-section-stepper__ring\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle\n class=\"tbk-form-section-stepper__ring-track\"\n cx=\"12\"\n cy=\"12\"\n [attr.r]=\"ringRadius\"\n [attr.stroke]=\"getProgressTrackColor()\"\n ></circle>\n <circle\n class=\"tbk-form-section-stepper__ring-fill\"\n cx=\"12\"\n cy=\"12\"\n [attr.r]=\"ringRadius\"\n [attr.stroke]=\"getProgressFillColor()\"\n [attr.stroke-dasharray]=\"ringCircumference\"\n [attr.stroke-dashoffset]=\"getRingDashOffset(section)\"\n ></circle>\n </svg>\n </ng-container>\n\n <ng-template #staticIcon>\n <ng-container *ngIf=\"isCompleted(section); else assetIcon\">\n <svg\n class=\"tbk-form-section-stepper__status-icon tbk-form-section-stepper__check-icon\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10.5\" fill=\"var(--tbk-ds-color-icon-success)\" />\n <path\n d=\"M7 12.5L10.5 16L17 9\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #assetIcon>\n <ng-container *ngIf=\"isNotStarted(section); else errorIcon\">\n <svg\n class=\"tbk-form-section-stepper__status-icon\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"var(--tbk-ds-bg-color-gray-500)\"\n stroke-width=\"3\"\n />\n </svg>\n </ng-container>\n <ng-template #errorIcon>\n <img\n class=\"tbk-form-section-stepper__status-icon\"\n [src]=\"getIconPath(section)\"\n [attr.alt]=\"getIconAlt(section)\"\n />\n </ng-template>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </button>\n\n <div\n class=\"tbk-form-section-stepper__panel\"\n [ngClass]=\"getPanelStateClass(section, itemIndex)\"\n [attr.id]=\"getPanelId(section.id)\"\n [attr.aria-labelledby]=\"getHeaderId(section.id)\"\n [attr.aria-hidden]=\"!isExpanded(section, itemIndex)\"\n >\n <div\n class=\"tbk-form-section-stepper__panel-inner\"\n [style.padding]=\"getPanelPadding(section, itemIndex)\"\n [style.max-height]=\"getPanelMaxHeight(section, itemIndex)\"\n >\n <div class=\"tbk-form-section-stepper__description\">\n {{ getContentMessage(section) }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"showSubmitButton\" class=\"tbk-form-section-stepper__footer\">\n <tbk-button\n [label]=\"submitLabel\"\n [fullWidth]=\"true\"\n [disabled]=\"!allSectionsCompleted\"\n [appearance]=\"{ variant: 'primary', fill: 'solid' }\"\n (clicked)=\"onSubmitClick()\"\n ></tbk-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonAppearance, ButtonComponent } from '../../components/Button/button.component';\nimport {\n DatePickerFilterBarComponent,\n DatePickerFilterBarPreset,\n} from '../../components/DatePickerFilterBar/date-picker-filterbar.component';\nimport { DatePickerMode } from '../../components/DatePicker/date-picker.component';\nimport { SearchFilterBarComponent } from '../../components/SearchFilterBar/search-filterbar.component';\nimport { SelectFilterBarComponent } from '../../components/SelectFilterBar/select-filterbar.component';\n\n@Component({\n selector: 'tbk-advanced-fill-search',\n standalone: true,\n imports: [\n CommonModule,\n SearchFilterBarComponent,\n SelectFilterBarComponent,\n DatePickerFilterBarComponent,\n ButtonComponent,\n ],\n templateUrl: './advanced-fill-search.component.html',\n styleUrls: ['./advanced-fill-search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdvancedFillSearchComponent {\n @Input() searchLabel = 'Digite sua busca';\n @Input() searchPlaceholder = 'Qual é a palavra chave?';\n @Input() searchValue = '';\n @Output() searchValueChange = new EventEmitter<string>();\n @Output() searchSubmit = new EventEmitter<string>();\n\n @Input() selectLabel = 'Tipo de busca';\n @Input() selectValue: unknown = 'Palavra chave';\n @Input() selectOptions = ['Palavra chave', 'CPF/CNPJ', 'Documento'];\n @Output() selectValueChange = new EventEmitter<unknown>();\n\n @Input() dateLabel = 'Período';\n @Input() datePlaceholder = 'Últimas 24 horas';\n @Input() dateDisabled = false;\n @Input() dateModal = true;\n @Input() dateMode: DatePickerMode = 'range';\n @Input() dateValue: Date | [Date, Date] | null = null;\n @Input() dateMinDate: Date | null = null;\n @Input() dateMaxDate: Date | null = null;\n @Input() dateCustomDateRangePeriodYears: number | null = null;\n @Input() dateClearable = true;\n @Input() dateShowApplyButton = false;\n @Input() dateCloseOnSingleSelection = true;\n @Input() dateCloseOnRangeComplete = true;\n @Input() dateCloseOnPresetSelect = true;\n @Input() dateOpenAriaLabel = 'Abrir filtro de periodo';\n @Input() dateOverlayAriaLabel = 'Filtro de periodo';\n @Input() datePresetsLabel = 'Periodos sugeridos';\n @Input() dateApplyButtonLabel = 'Aplicar';\n @Input() dateClearButtonLabel = 'Limpar';\n @Input() datePresets: readonly DatePickerFilterBarPreset[] = [];\n\n @Output() dateValueChange = new EventEmitter<Date | [Date, Date] | null>();\n @Output() dateOpenedChange = new EventEmitter<boolean>();\n\n @Input() buttonLabel = 'Pesquisar';\n @Input() buttonSize: 'sm' | 'md' | 'lg' = 'md';\n @Input() buttonAppearance: ButtonAppearance = {\n variant: 'primary',\n fill: 'solid',\n };\n @Input() buttonFullWidth = true;\n @Input() buttonDisabled = false;\n @Input() buttonTooltip = 'Pesquisar';\n @Output() buttonClick = new EventEmitter<void>();\n\n onSearchValueChange(nextValue: string): void {\n this.searchValue = nextValue;\n this.searchValueChange.emit(nextValue);\n }\n\n onSearchSubmit(term: string): void {\n this.searchValue = term;\n this.searchValueChange.emit(term);\n this.searchSubmit.emit(term);\n }\n\n onSelectValueChange(nextValue: unknown): void {\n this.selectValue = nextValue;\n this.selectValueChange.emit(nextValue);\n }\n\n onDateValueChange(nextValue: Date | [Date, Date] | null): void {\n this.dateValue = nextValue;\n this.dateValueChange.emit(nextValue);\n }\n\n onDateOpenedChange(isOpen: boolean): void {\n this.dateOpenedChange.emit(isOpen);\n }\n\n onButtonClick(): void {\n this.buttonClick.emit();\n }\n}\n","<div class=\"tbk-advanced-fill-search\">\n <div class=\"tbk-advanced-fill-search__segment tbk-advanced-fill-search__segment--search\">\n <tbk-search-filterbar\n [label]=\"searchLabel\"\n [placeholder]=\"searchPlaceholder\"\n [value]=\"searchValue\"\n (valueChange)=\"onSearchValueChange($event)\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n ></tbk-search-filterbar>\n </div>\n\n <div class=\"tbk-advanced-fill-search__segment tbk-advanced-fill-search__segment--select\">\n <tbk-select-filterbar\n [label]=\"selectLabel\"\n [value]=\"selectValue\"\n [options]=\"selectOptions\"\n (valueChange)=\"onSelectValueChange($event)\"\n ></tbk-select-filterbar>\n </div>\n\n <div class=\"tbk-advanced-fill-search__segment tbk-advanced-fill-search__segment--date\">\n <tbk-date-picker-filterbar\n [label]=\"dateLabel\"\n [placeholder]=\"datePlaceholder\"\n [disabled]=\"dateDisabled\"\n [modal]=\"dateModal\"\n [mode]=\"dateMode\"\n [minDate]=\"dateMinDate\"\n [maxDate]=\"dateMaxDate\"\n [customDateRangePeriodYears]=\"dateCustomDateRangePeriodYears\"\n [clearable]=\"dateClearable\"\n [showApplyButton]=\"dateShowApplyButton\"\n [closeOnSingleSelection]=\"dateCloseOnSingleSelection\"\n [closeOnRangeComplete]=\"dateCloseOnRangeComplete\"\n [closeOnPresetSelect]=\"dateCloseOnPresetSelect\"\n [openAriaLabel]=\"dateOpenAriaLabel\"\n [overlayAriaLabel]=\"dateOverlayAriaLabel\"\n [presetsLabel]=\"datePresetsLabel\"\n [applyButtonLabel]=\"dateApplyButtonLabel\"\n [clearButtonLabel]=\"dateClearButtonLabel\"\n [presets]=\"datePresets\"\n [value]=\"dateValue\"\n (valueChange)=\"onDateValueChange($event)\"\n (openedChange)=\"onDateOpenedChange($event)\"\n ></tbk-date-picker-filterbar>\n </div>\n\n <div class=\"tbk-advanced-fill-search__segment tbk-advanced-fill-search__segment--button\">\n <tbk-button\n [label]=\"buttonLabel\"\n [size]=\"buttonSize\"\n [appearance]=\"buttonAppearance\"\n [fullWidth]=\"buttonFullWidth\"\n [disabled]=\"buttonDisabled\"\n [tooltip]=\"buttonTooltip\"\n (clicked)=\"onButtonClick()\"\n ></tbk-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BadgeComponent } from '../../components/Badge/badge.component';\nimport { IconsComponent } from '../../components/Icons/icons.component';\nimport { TextComponent } from '../../components/Text/text.component';\n\nexport interface AdvancedSelectSearchOption {\n value: string | number;\n label: string;\n count?: number;\n disabled?: boolean;\n selected?: boolean;\n}\n\nexport interface AdvancedSelectSearchSection {\n id: string | number;\n title: string;\n badgeTotal?: number;\n collapsible?: boolean;\n collapsed?: boolean;\n options: AdvancedSelectSearchOption[];\n searchable?: boolean;\n searchPlaceholder?: string;\n searchValue?: string;\n}\n\n@Component({\n selector: 'tbk-advanced-select-search',\n standalone: true,\n imports: [CommonModule, TextComponent, IconsComponent, BadgeComponent],\n templateUrl: './advanced-select-search.component.html',\n styleUrls: ['./advanced-select-search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdvancedSelectSearchComponent {\n @Input() title = '';\n @Input() sections: AdvancedSelectSearchSection[] = [];\n @Input() showOptionCount = true;\n\n @Output() sectionsChange = new EventEmitter<AdvancedSelectSearchSection[]>();\n @Output() selectionChange = new EventEmitter<AdvancedSelectSearchSection[]>();\n\n mobileFiltersOpen = false;\n\n get hasSections(): boolean {\n return this.sections?.length > 0;\n }\n\n toggleMobileFilters(): void {\n this.mobileFiltersOpen = !this.mobileFiltersOpen;\n }\n\n toggleSection(section: AdvancedSelectSearchSection): void {\n if (!section.collapsible) return;\n this.sections = this.sections.map((current) =>\n current.id === section.id ? { ...current, collapsed: !current.collapsed } : current,\n );\n }\n\n toggleOption(section: AdvancedSelectSearchSection, option: AdvancedSelectSearchOption): void {\n if (option.disabled) return;\n\n const nextSections = this.sections.map((current) => {\n if (current.id !== section.id) return current;\n\n const nextOptions = current.options.map((currentOption) => {\n if (currentOption.value === option.value) {\n return { ...currentOption, selected: !currentOption.selected };\n }\n return currentOption;\n });\n\n return { ...current, options: nextOptions };\n });\n\n this.sections = nextSections;\n this.sectionsChange.emit(this.sections);\n this.selectionChange.emit(this.sections);\n }\n\n trackBySectionId(_index: number, section: AdvancedSelectSearchSection): string | number {\n return section.id;\n }\n\n trackByOptionValue(_index: number, option: AdvancedSelectSearchOption): string | number {\n return option.value;\n }\n\n onSectionSearchInput(section: AdvancedSelectSearchSection, event: Event): void {\n const target = event.target as HTMLInputElement;\n section.searchValue = target.value;\n }\n\n getFilteredOptions(section: AdvancedSelectSearchSection): AdvancedSelectSearchOption[] {\n if (!section.searchable || !section.searchValue) {\n return section.options;\n }\n const query = section.searchValue.toLowerCase().trim();\n return section.options.filter((option) =>\n option.label.toLowerCase().includes(query)\n );\n }\n}\n","<aside\n class=\"tbk-advanced-select-search\"\n [class.tbk-advanced-select-search--mobile-open]=\"mobileFiltersOpen\"\n>\n <!-- Mobile toggle — only visible below 768px -->\n <button\n type=\"button\"\n class=\"tbk-advanced-select-search__mobile-toggle\"\n (click)=\"toggleMobileFilters()\"\n [attr.aria-expanded]=\"mobileFiltersOpen\"\n aria-controls=\"tbk-ass-panel\"\n >\n <tbk-icons\n name=\"barsRegular\"\n [size]=\"16\"\n color=\"blue\"\n ></tbk-icons>\n <tbk-text\n [children]=\"mobileFiltersOpen ? 'Ocultar filtros' : 'Mostrar filtros'\"\n size=\"font-size-350\"\n color=\"Blue\"\n weight=\"font-weight-medium\"\n ></tbk-text>\n <tbk-icons\n name=\"chevronDownSolidFull\"\n [size]=\"14\"\n color=\"blue\"\n class=\"tbk-advanced-select-search__mobile-chevron\"\n [ngClass]=\"{ 'tbk-advanced-select-search__mobile-chevron--open': mobileFiltersOpen }\"\n ></tbk-icons>\n </button>\n\n <!-- Panel: always visible on desktop, toggled on mobile -->\n <div class=\"tbk-advanced-select-search__panel\" id=\"tbk-ass-panel\">\n <header class=\"tbk-advanced-select-search__header\" *ngIf=\"title\">\n <tbk-text\n [children]=\"title\"\n [size]=\"'font-size-450'\"\n [color]=\"'Primary'\"\n [weight]=\"'font-weight-bold'\"\n ></tbk-text>\n </header>\n\n <section class=\"tbk-advanced-select-search__sections\" *ngIf=\"hasSections\">\n <div\n class=\"tbk-advanced-select-search__section\"\n *ngFor=\"let section of sections; trackBy: trackBySectionId\"\n >\n <button\n type=\"button\"\n class=\"tbk-advanced-select-search__section-header\"\n [class.tbk-advanced-select-search__section-header--collapsible]=\"section.collapsible\"\n (click)=\"toggleSection(section)\"\n [attr.aria-expanded]=\"section.collapsible ? !section.collapsed : null\"\n [attr.aria-controls]=\"'tbk-ass-section-body-' + section.id\"\n >\n <div class=\"tbk-advanced-select-search__section-header-left\">\n <tbk-text\n class=\"tbk-advanced-select-search__section-title\"\n [children]=\"section.title\"\n [size]=\"'font-size-350'\"\n [color]=\"'Gray'\"\n [weight]=\"'font-weight-bold'\"\n ></tbk-text>\n </div>\n\n <div\n *ngIf=\"section.collapsible\"\n class=\"tbk-advanced-select-search__section-header-right\"\n >\n <tbk-icons\n [name]=\"'chevronDownSolidFull'\"\n [size]=\"16\"\n [color]=\"'gray'\"\n [ngClass]=\"{\n 'tbk-advanced-select-search__chevron--collapsed': section.collapsed\n }\"\n ></tbk-icons>\n </div>\n </button>\n\n <div\n class=\"tbk-advanced-select-search__section-body\"\n [class.tbk-advanced-select-search__section-body--collapsed]=\"section.collapsed\"\n [id]=\"'tbk-ass-section-body-' + section.id\"\n >\n <div class=\"tbk-advanced-select-search__section-body-inner\">\n <div *ngIf=\"section.searchable\" class=\"tbk-advanced-select-search__section-search\">\n <input\n type=\"text\"\n class=\"tbk-advanced-select-search__section-search-input\"\n [placeholder]=\"section.searchPlaceholder || 'Pesquisar...'\"\n [value]=\"section.searchValue || ''\"\n (input)=\"onSectionSearchInput(section, $event)\"\n />\n </div>\n <ul class=\"tbk-advanced-select-search__options\">\n <li\n *ngFor=\"let option of getFilteredOptions(section); trackBy: trackByOptionValue\"\n class=\"tbk-advanced-select-search__option-item\"\n [class.tbk-advanced-select-search__option-item--selected]=\"option.selected\"\n [class.tbk-advanced-select-search__option-item--disabled]=\"option.disabled\"\n (click)=\"toggleOption(section, option)\"\n role=\"checkbox\"\n [attr.aria-checked]=\"option.selected ? 'true' : 'false'\"\n [attr.aria-disabled]=\"option.disabled ? 'true' : null\"\n [attr.tabindex]=\"option.disabled ? '-1' : '0'\"\n (keydown.space)=\"toggleOption(section, option); $event.preventDefault()\"\n (keydown.enter)=\"toggleOption(section, option); $event.preventDefault()\"\n >\n <tbk-text\n [children]=\"option.label\"\n [size]=\"'font-size-350'\"\n [color]=\"'Gray'\"\n [weight]=\"'font-weight-regular'\"\n ></tbk-text>\n\n <tbk-badge\n *ngIf=\"showOptionCount && option.count !== undefined\"\n class=\"tbk-advanced-select-search__option-count\"\n [label]=\"option.count\"\n [variant]=\"'primary'\"\n [size]=\"'sm'\"\n >\n </tbk-badge>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </section>\n </div>\n</aside>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport { AvatarComponent } from '../../components/Avatar/avatar.component';\nimport { IconColor, IconName, IconsComponent } from '../../components/Icons/icons.component';\nimport { TextComponent } from '../../components/Text/text.component';\nimport { TooltipComponent } from '../../components/Tooltip/tooltip.component';\n\nexport type HeaderLandmarkRole = 'none' | 'banner';\nexport type HeaderActionVariant = 'icon' | 'prominent';\n\nexport interface HeaderActionItem {\n id: string;\n icon: IconName;\n label?: string;\n ariaLabel?: string;\n tooltip?: string;\n variant?: HeaderActionVariant;\n iconColor?: IconColor;\n disabled?: boolean;\n hidden?: boolean;\n}\n\nexport interface HeaderActionClickEvent {\n actionId: string;\n action: Readonly<HeaderActionItem>;\n nativeEvent: MouseEvent;\n}\n\nexport interface HeaderProfileConfig {\n name: string;\n initials?: string;\n imageSrc?: string;\n ariaLabel?: string;\n tooltip?: string;\n disabled?: boolean;\n hidden?: boolean;\n}\n\nexport interface HeaderProfileClickEvent {\n profile: Readonly<HeaderProfileConfig>;\n nativeEvent: MouseEvent;\n}\n\nexport interface HeaderI18nLabels {\n defaultBrandAlt: string;\n assistantActionLabel: string;\n helpActionLabel: string;\n notificationsActionLabel: string;\n profileActionLabel: string;\n profileActionLabelWithNamePrefix: string;\n profileAvatarLabel: string;\n profileAvatarLabelWithNamePrefix: string;\n defaultUserName: string;\n}\n\nexport const DEFAULT_HEADER_I18N: Readonly<HeaderI18nLabels> = {\n defaultBrandAlt: 'Marca',\n assistantActionLabel: 'Assistente',\n helpActionLabel: 'Ajuda',\n notificationsActionLabel: 'Notificacoes',\n profileActionLabel: 'Abrir perfil',\n profileActionLabelWithNamePrefix: 'Abrir perfil de',\n profileAvatarLabel: 'Avatar do perfil',\n profileAvatarLabelWithNamePrefix: 'Avatar de',\n defaultUserName: 'Usuario',\n};\n\nexport const ECONTRATO_HEADER_ACTIONS: readonly HeaderActionItem[] = [\n {\n id: 'assistant',\n icon: 'sparkle-regular.svg',\n label: 'Pergunte a TINA IA',\n ariaLabel: 'Abrir assistente TINA IA',\n tooltip: 'Abrir assistente TINA IA',\n variant: 'prominent',\n },\n {\n id: 'help',\n icon: 'message-question-regular-full.svg',\n ariaLabel: 'Abrir central de ajuda',\n tooltip: 'Abrir central de ajuda',\n variant: 'icon',\n },\n {\n id: 'notifications',\n icon: 'bell-regular-full.svg',\n ariaLabel: 'Abrir notificacoes',\n tooltip: 'Abrir notificacoes',\n variant: 'icon',\n },\n];\n\nexport const EGARANTIA_HEADER_ACTIONS: readonly HeaderActionItem[] = [\n {\n id: 'pendencias',\n icon: 'calendar-light-full.svg',\n ariaLabel: 'Abrir processos com pendencias',\n tooltip: 'Processos com pendencias',\n variant: 'icon',\n },\n {\n id: 'notifications',\n icon: 'bell-regular-full.svg',\n ariaLabel: 'Abrir notificacoes',\n tooltip: 'Abrir notificacoes',\n variant: 'icon',\n },\n];\n\n@Directive({\n selector: '[tbkHeaderBrand]',\n standalone: true,\n})\nexport class HeaderBrandSlotDirective {}\n\n@Directive({\n selector: '[tbkHeaderActions]',\n standalone: true,\n})\nexport class HeaderActionsSlotDirective {}\n\n@Component({\n selector: 'tbk-header',\n standalone: true,\n imports: [\n CommonModule,\n IconsComponent,\n TooltipComponent,\n AvatarComponent,\n TextComponent,\n ],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef);\n private cachedI18n: HeaderI18nLabels = DEFAULT_HEADER_I18N;\n private cachedI18nKey: Partial<HeaderI18nLabels> | null = null;\n\n private presetState: 'eContrato' | 'eGarantia' = 'eContrato';\n private explicitActionsProvided = false;\n private actionsState: HeaderActionItem[] | null | undefined = undefined;\n\n /**\n * Duração (ms) que o botão IA fica expandido no auto-expand inicial.\n * @default 3800\n */\n @Input() autoExpandDuration = 3800;\n\n /**\n * Delay (ms) antes de o auto-expand disparar após o componente inicializar.\n * @default 600\n */\n @Input() autoExpandDelay = 600;\n\n /** Controla a classe CSS de auto-expand do botão IA. */\n isAssistantAutoExpanded = false;\n\n private _autoExpandTimers: ReturnType<typeof setTimeout>[] = [];\n\n ngOnInit(): void {\n const t1 = setTimeout(() => {\n this.isAssistantAutoExpanded = true;\n this.cdr.markForCheck();\n\n const t2 = setTimeout(() => {\n this.isAssistantAutoExpanded = false;\n this.cdr.markForCheck();\n }, this.autoExpandDuration);\n\n this._autoExpandTimers.push(t2);\n }, this.autoExpandDelay);\n\n this._autoExpandTimers.push(t1);\n }\n\n ngOnDestroy(): void {\n this._autoExpandTimers.forEach(clearTimeout);\n this._autoExpandTimers = [];\n }\n\n /** `'banner'` aplica `role=\"banner\"` no wrapper. Use quando este Header for o landmark principal do app. */\n @Input() landmarkRole: HeaderLandmarkRole = 'none';\n\n /** Texto `alt` do logo. Vazio → usa o fallback de i18n (`defaultBrandAlt`). */\n @Input() brandAlt = '';\n\n /** Caminho do SVG do logo. Sobrescritível para white-label. */\n @Input() brandImageSrc = '/assets/tecnobank-wordmark-white.svg';\n\n /** @deprecated Use `actions` para configurar a acao principal. */\n @Input() assistantLabel = '';\n /** @deprecated Use `profile` para configurar o nome exibido no perfil. */\n @Input() userName = '';\n /** @deprecated Use `profile` para configurar as iniciais exibidas no avatar. */\n @Input() userInitials = '';\n /** @deprecated Use `profile` para configurar a imagem do avatar. */\n @Input() userAvatarSrc = '';\n\n /** @deprecated Use `actions` para configurar os icones. */\n @Input() assistantIcon: IconName = 'sparkle-regular.svg';\n /** @deprecated Use `actions` para configurar os icones. */\n @Input() helpIcon: IconName = 'message-question-regular-full.svg';\n /** @deprecated Use `actions` para configurar os icones. */\n @Input() notificationsIcon: IconName = 'bell-regular-full.svg';\n\n /** @deprecated Use `actions` para configurar textos acessiveis. */\n @Input() assistantAriaLabel = '';\n /** @deprecated Use `actions` para configurar textos acessiveis. */\n @Input() helpAriaLabel = '';\n /** @deprecated Use `actions` para configurar textos acessiveis. */\n @Input() notificationsAriaLabel = '';\n /** @deprecated Use `profile` para configurar textos acessiveis. */\n @Input() profileAriaLabel = '';\n\n /**\n * Define o preset de ações padrão para um produto específico.\n * - 'eContrato': Assistente TINA IA + central de ajuda + notificações.\n * - 'eGarantia': Processos com pendências + notificações.\n * @default 'eContrato'\n */\n @Input()\n set preset(value: 'eContrato' | 'eGarantia' | null | undefined) {\n const nextPreset = value === 'eGarantia' ? 'eGarantia' : 'eContrato';\n if (this.presetState === nextPreset) {\n return;\n }\n this.presetState = nextPreset;\n if (!this.explicitActionsProvided) {\n this.actionsState = undefined;\n }\n }\n\n get preset(): 'eContrato' | 'eGarantia' {\n return this.presetState;\n }\n\n /**\n * API recomendada para configurar os botões de ação. `undefined` mantém o\n * comportamento baseado no preset ativo. `null` ou `[]` esconde todas as ações.\n */\n @Input()\n set actions(value: HeaderActionItem[] | null | undefined) {\n if (value !== undefined) {\n this.explicitActionsProvided = true;\n this.actionsState = value;\n } else {\n this.explicitActionsProvided = false;\n this.actionsState = undefined;\n }\n }\n\n get actions(): HeaderActionItem[] | null | undefined {\n return this.actionsState;\n }\n\n /**\n * API recomendada para configurar o perfil. `undefined` mantém o comportamento\n * legado (`userName`/`userInitials`/`userAvatarSrc`). `null` esconde o perfil.\n */\n @Input() profile: HeaderProfileConfig | null | undefined = undefined;\n\n /** Desliga tooltips em todas as ações (útil em containers densos). */\n @Input() disableTooltips = false;\n\n /** Override granular dos textos default — ideal para i18n. */\n @Input() i18n: Partial<HeaderI18nLabels> | null = null;\n\n /** Emitido por qualquer botão de ação (preferido). */\n @Output() actionClick = new EventEmitter<HeaderActionClickEvent>();\n\n /** Emitido pelo botão de perfil (preferido). */\n @Output() profileActionClick = new EventEmitter<HeaderProfileClickEvent>();\n\n /** @deprecated Use `actionClick` filtrando por `actionId === 'assistant'`. */\n @Output() assistantClick = new EventEmitter<MouseEvent>();\n /** @deprecated Use `actionClick` filtrando por `actionId === 'help'`. */\n @Output() helpClick = new EventEmitter<MouseEvent>();\n /** @deprecated Use `actionClick` filtrando por `actionId === 'notifications'`. */\n @Output() notificationsClick = new EventEmitter<MouseEvent>();\n /** @deprecated Use `profileActionClick`. */\n @Output() profileClick = new EventEmitter<MouseEvent>();\n\n @ContentChild(HeaderBrandSlotDirective)\n private readonly brandSlotDirective?: HeaderBrandSlotDirective;\n\n @ContentChild(HeaderActionsSlotDirective)\n private readonly actionsSlotDirective?: HeaderActionsSlotDirective;\n\n get hasCustomBrandSlot(): boolean {\n return !!this.brandSlotDirective;\n }\n\n get hasCustomActionsSlot(): boolean {\n return !!this.actionsSlotDirective;\n }\n\n get resolvedLandmarkRole(): string | null {\n return this.landmarkRole === 'banner' ? 'banner' : null;\n }\n\n get resolvedI18n(): HeaderI18nLabels {\n // Memoiza pela identity do input — evita recriar objeto em todo CD.\n if (this.cachedI18nKey !== this.i18n) {\n this.cachedI18nKey = this.i18n;\n this.cachedI18n = { ...DEFAULT_HEADER_I18N, ...(this.i18n ?? {}) };\n }\n return this.cachedI18n;\n }\n\n get resolvedBrandAlt(): string {\n return this.resolveText(this.brandAlt, this.resolvedI18n.defaultBrandAlt);\n }\n\n get resolvedBrandSrc(): string {\n const normalized = `${this.brandImageSrc ?? ''}`.trim();\n return normalized || '/assets/tecnobank-wordmark-white.svg';\n }\n\n get resolvedActions(): HeaderActionItem[] {\n if (this.explicitActionsProvided && this.actionsState === null) {\n return [];\n }\n\n if (this.explicitActionsProvided && Array.isArray(this.actionsState)) {\n return this.sanitizeActions(this.actionsState);\n }\n\n if (this.preset === 'eGarantia') {\n return this.sanitizeActions([...EGARANTIA_HEADER_ACTIONS]);\n }\n\n const assistantLabel = this.resolveText(\n this.assistantLabel,\n this.resolvedI18n.assistantActionLabel,\n );\n const helpLabel = this.resolveText(this.helpAriaLabel, this.resolvedI18n.helpActionLabel);\n const notificationsLabel = this.resolveText(\n this.notificationsAriaLabel,\n this.resolvedI18n.notificationsActionLabel,\n );\n\n const legacyActions: HeaderActionItem[] = [\n {\n id: 'assistant',\n icon: this.assistantIcon,\n label: assistantLabel,\n ariaLabel: this.resolveText(this.assistantAriaLabel, assistantLabel),\n tooltip: this.resolveText(this.assistantAriaLabel, assistantLabel),\n variant: 'prominent' as const,\n },\n {\n id: 'help',\n icon: this.helpIcon,\n ariaLabel: helpLabel,\n tooltip: helpLabel,\n variant: 'icon' as const,\n },\n {\n id: 'notifications',\n icon: this.notificationsIcon,\n ariaLabel: notificationsLabel,\n tooltip: notificationsLabel,\n variant: 'icon' as const,\n },\n ];\n\n return this.sanitizeActions(legacyActions);\n }\n\n private sanitizeActions(actions: HeaderActionItem[]): HeaderActionItem[] {\n return actions\n .filter((action) => !action?.hidden)\n .map<HeaderActionItem>((action) => ({\n ...action,\n id: `${action.id ?? ''}`.trim(),\n label: `${action.label ?? ''}`.trim(),\n ariaLabel: `${action.ariaLabel ?? ''}`.trim(),\n tooltip: `${action.tooltip ?? ''}`.trim(),\n variant: action.variant === 'prominent' ? 'prominent' : 'icon',\n }))\n .filter((action) => !!action.id);\n }\n\n get resolvedProfile(): HeaderProfileConfig | null {\n const sourceProfile =\n this.profile === undefined\n ? {\n name: this.resolveText(this.userName, this.resolvedI18n.defaultUserName),\n initials: this.userInitials,\n imageSrc: this.userAvatarSrc,\n ariaLabel: this.profileAriaLabel,\n tooltip: this.profileAriaLabel,\n }\n : this.profile;\n\n if (!sourceProfile || sourceProfile.hidden) {\n return null;\n }\n\n const name = `${sourceProfile.name ?? ''}`.trim();\n const initials = this.normalizeInitials(sourceProfile.initials || name);\n const imageSrc = `${sourceProfile.imageSrc ?? ''}`.trim();\n\n if (!name && !initials && !imageSrc) {\n return null;\n }\n\n return {\n ...sourceProfile,\n name,\n initials,\n imageSrc,\n ariaLabel: `${sourceProfile.ariaLabel ?? ''}`.trim(),\n tooltip: `${sourceProfile.tooltip ?? ''}`.trim(),\n };\n }\n\n getProfileAriaLabel(profile: HeaderProfileConfig): string {\n const customLabel = `${profile.ariaLabel ?? ''}`.trim();\n if (customLabel) {\n return customLabel;\n }\n\n return profile.name\n ? `${this.resolvedI18n.profileActionLabelWithNamePrefix} ${profile.name}`\n : this.resolvedI18n.profileActionLabel;\n }\n\n getProfileTooltip(profile: HeaderProfileConfig): string | null {\n const tooltip = `${profile.tooltip ?? ''}`.trim();\n if (tooltip) {\n return tooltip;\n }\n\n return this.getProfileAriaLabel(profile);\n }\n\n getProfileAvatarLabel(profile: HeaderProfileConfig): string {\n return profile.name\n ? `${this.resolvedI18n.profileAvatarLabelWithNamePrefix} ${profile.name}`\n : this.resolvedI18n.profileAvatarLabel;\n }\n\n getActionAriaLabel(action: HeaderActionItem): string {\n return `${action.ariaLabel || action.label || action.id}`.trim();\n }\n\n getActionTooltip(action: HeaderActionItem): string | null {\n const tooltip = `${action.tooltip ?? ''}`.trim();\n if (tooltip) {\n return tooltip;\n }\n\n const label = `${action.label ?? ''}`.trim();\n if (label) {\n return label;\n }\n\n const ariaLabel = `${action.ariaLabel ?? ''}`.trim();\n return ariaLabel || null;\n }\n\n getActionIconColor(action: HeaderActionItem): IconColor {\n if (action.iconColor) {\n return action.iconColor;\n }\n\n return action.variant === 'prominent' ? 'ia' : 'white';\n }\n\n isProminentAction(action: HeaderActionItem): boolean {\n return action.variant === 'prominent';\n }\n\n onActionButtonClick(action: HeaderActionItem, event: MouseEvent): void {\n if (action.disabled) {\n return;\n }\n\n this.actionClick.emit({\n actionId: action.id,\n action,\n nativeEvent: event,\n });\n\n switch (action.id) {\n case 'assistant':\n this.assistantClick.emit(event);\n break;\n case 'help':\n this.helpClick.emit(event);\n break;\n case 'notifications':\n this.notificationsClick.emit(event);\n break;\n default:\n break;\n }\n }\n\n onProfileButtonClick(profile: HeaderProfileConfig, event: MouseEvent): void {\n if (profile.disabled) {\n return;\n }\n\n this.profileActionClick.emit({\n profile,\n nativeEvent: event,\n });\n\n this.profileClick.emit(event);\n }\n\n trackActionById(_: number, action: HeaderActionItem): string {\n return action.id;\n }\n\n private resolveText(value: string | null | undefined, fallback: string): string {\n const normalized = `${value ?? ''}`.trim();\n return normalized || fallback;\n }\n\n private normalizeInitials(value: string): string {\n const normalized = `${value ?? ''}`.trim();\n if (!normalized) {\n return '';\n }\n\n const parts = normalized.split(/\\s+/).filter(Boolean);\n if (parts.length > 1) {\n return parts\n .slice(0, 2)\n .map((part) => part.charAt(0))\n .join('')\n .toUpperCase();\n }\n\n return normalized.replace(/\\s+/g, '').slice(0, 2).toUpperCase();\n }\n}\n","<div class=\"tbk-header\" [attr.role]=\"resolvedLandmarkRole\">\n <div class=\"tbk-header__inner\">\n <div class=\"tbk-header__brand\">\n <ng-container *ngIf=\"hasCustomBrandSlot; else defaultBrand\">\n <ng-content select=\"[tbkHeaderBrand]\"></ng-content>\n </ng-container>\n\n <ng-template #defaultBrand>\n <img\n *ngIf=\"resolvedBrandSrc; else defaultBrandText\"\n class=\"tbk-header__brand-mark\"\n [src]=\"resolvedBrandSrc\"\n [alt]=\"resolvedBrandAlt\"\n />\n </ng-template>\n\n <ng-template #defaultBrandText>\n <tbk-text\n class=\"tbk-header__brand-text\"\n [children]=\"resolvedBrandAlt\"\n [as]=\"'span'\"\n [color]=\"'White'\"\n [size]=\"'font-size-500'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n </ng-template>\n </div>\n\n <div class=\"tbk-header__actions\">\n <ng-container *ngIf=\"hasCustomActionsSlot; else defaultActions\">\n <ng-content select=\"[tbkHeaderActions]\"></ng-content>\n </ng-container>\n\n <ng-template #defaultActions>\n <ng-container *ngFor=\"let action of resolvedActions; trackBy: trackActionById\">\n <tbk-tooltip\n class=\"tbk-header__tooltip\"\n [content]=\"getActionTooltip(action)\"\n [disabled]=\"disableTooltips || !getActionTooltip(action)\"\n >\n <button\n type=\"button\"\n class=\"tbk-header__action\"\n [class.tbk-header__action--icon]=\"!isProminentAction(action)\"\n [class.tbk-header__action--prominent]=\"isProminentAction(action)\"\n [class.tbk-header__action--auto-expanded]=\"isProminentAction(action) && isAssistantAutoExpanded\"\n [attr.aria-label]=\"getActionAriaLabel(action)\"\n [attr.aria-expanded]=\"isProminentAction(action) ? isAssistantAutoExpanded || null : null\"\n [disabled]=\"action.disabled\"\n (click)=\"onActionButtonClick(action, $event)\"\n >\n <tbk-text\n *ngIf=\"isProminentAction(action) && action.label\"\n class=\"tbk-header__action-label\"\n [children]=\"action.label || ''\"\n [as]=\"'span'\"\n [color]=\"'White'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-bold'\"\n [margin]=\"'0'\"\n ></tbk-text>\n <tbk-icons\n [icon]=\"action.icon\"\n [color]=\"getActionIconColor(action)\"\n [size]=\"16\"\n ></tbk-icons>\n </button>\n </tbk-tooltip>\n </ng-container>\n\n <ng-container *ngIf=\"resolvedProfile as profileConfig\">\n <tbk-tooltip\n class=\"tbk-header__tooltip\"\n [content]=\"getProfileTooltip(profileConfig)\"\n [disabled]=\"disableTooltips || !getProfileTooltip(profileConfig)\"\n >\n <button\n type=\"button\"\n class=\"tbk-header__action tbk-header__action--profile\"\n [attr.aria-label]=\"getProfileAriaLabel(profileConfig)\"\n [disabled]=\"profileConfig.disabled\"\n (click)=\"onProfileButtonClick(profileConfig, $event)\"\n >\n <span class=\"tbk-header__profile-avatar\" aria-hidden=\"true\">\n <tbk-avatar\n [size]=\"20\"\n [src]=\"profileConfig.imageSrc || ''\"\n [initials]=\"profileConfig.initials || ''\"\n [ariaLabel]=\"getProfileAvatarLabel(profileConfig)\"\n ></tbk-avatar>\n </span>\n <tbk-text\n class=\"tbk-header__profile-name\"\n [children]=\"profileConfig.name\"\n [as]=\"'span'\"\n [color]=\"'White'\"\n [size]=\"'font-size-350'\"\n [weight]=\"'font-weight-medium'\"\n [truncate]=\"true\"\n [margin]=\"'0'\"\n ></tbk-text>\n </button>\n </tbk-tooltip>\n </ng-container>\n </ng-template>\n </div>\n </div>\n</div>\n","import { IconName, IconToken } from '../../components/Icons/icons.component';\n\nexport type SidePanelAiResumeMode = 'overlay' | 'inline';\nexport type SidePanelAiResumePosition = 'right' | 'left';\n\nexport type SidePanelAiResumeCloseSource = 'button' | 'escape';\n\nexport interface SidePanelAiResumeCloseEvent {\n readonly source: SidePanelAiResumeCloseSource;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelAiResumeToggleEvent {\n readonly expanded: boolean;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelAiResumeI18n {\n readonly badgeLabel?: string;\n readonly closeLabel?: string;\n readonly expandSectionLabel?: string;\n readonly collapseSectionLabel?: string;\n readonly loadingLabel?: string;\n}\n\nexport const DEFAULT_SIDE_PANEL_AI_RESUME_I18N: Required<SidePanelAiResumeI18n> = {\n badgeLabel: 'FORNECIDO POR IA',\n closeLabel: 'Fechar painel',\n expandSectionLabel: 'Expandir seção',\n collapseSectionLabel: 'Recolher seção',\n loadingLabel: 'Carregando conteúdo',\n};\n\nexport interface SidePanelAiResumeDefaults {\n readonly badgeIcon: IconName;\n readonly sectionIcon: IconToken;\n}\n\nexport const DEFAULT_SIDE_PANEL_AI_RESUME_ICONS: SidePanelAiResumeDefaults = {\n badgeIcon: 'sparkle',\n sectionIcon: 'sparkle',\n};\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport { BadgeComponent } from '../../components/Badge/badge.component';\nimport { ButtonComponent } from '../../components/Button/button.component';\nimport { IconName, IconToken, IconsComponent } from '../../components/Icons/icons.component';\nimport { TextComponent } from '../../components/Text/text.component';\nimport {\n DEFAULT_SIDE_PANEL_AI_RESUME_I18N,\n DEFAULT_SIDE_PANEL_AI_RESUME_ICONS,\n SidePanelAiResumeCloseEvent,\n SidePanelAiResumeI18n,\n SidePanelAiResumeMode,\n SidePanelAiResumePosition,\n SidePanelAiResumeToggleEvent,\n} from './side-panel-ai-resume.types';\n\nexport type {\n SidePanelAiResumeCloseEvent,\n SidePanelAiResumeCloseSource,\n SidePanelAiResumeI18n,\n SidePanelAiResumeMode,\n SidePanelAiResumePosition,\n SidePanelAiResumeToggleEvent,\n} from './side-panel-ai-resume.types';\n\n/**\n * Pattern: Side Panel AI Resume.\n *\n * Painel lateral para exibir conteúdo gerado/revisado por IA com:\n * - Cabeçalho com título, badge \"fornecido por IA\" e ação de fechar\n * - Seção de divulgação (disclosure) com chevron expand/collapse\n * - Slot principal para conteúdo projetado\n * - Slot opcional de footer\n *\n * Composto inteiramente de primitivos existentes (Badge, Button, Icons, Text)\n * e tokens oficiais do Design System. Nenhum token, primitive, ícone ou estilo\n * paralelo é introduzido.\n */\n@Component({\n selector: 'tbk-side-panel-ai-resume',\n standalone: true,\n imports: [CommonModule, BadgeComponent, ButtonComponent, IconsComponent, TextComponent],\n templateUrl: './side-panel-ai-resume.component.html',\n styleUrls: ['./side-panel-ai-resume.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-side-panel-ai-resume-host--open]': 'open()',\n '[class.tbk-side-panel-ai-resume-host--overlay]': \"mode() === 'overlay'\",\n '[class.tbk-side-panel-ai-resume-host--inline]': \"mode() === 'inline'\",\n '[class.tbk-side-panel-ai-resume-host--left]': \"position() === 'left'\",\n '[class.tbk-side-panel-ai-resume-host--right]': \"position() === 'right'\",\n '[class.tbk-side-panel-ai-resume-host--loading]': 'loading()',\n '[attr.data-mode]': 'mode()',\n '[attr.data-position]': 'position()',\n },\n})\nexport class SidePanelAiResumeComponent {\n private static nextId = 0;\n private readonly fallbackId = `tbk-side-panel-ai-resume-${++SidePanelAiResumeComponent.nextId}`;\n\n // ── Content ──────────────────────────────────────────────────────────────\n readonly title = input.required<string>();\n readonly sectionTitle = input.required<string>();\n readonly intro = input<string>('');\n\n // ── AI affordances ───────────────────────────────────────────────────────\n readonly badgeLabel = input<string | undefined>(undefined);\n readonly badgeIcon = input<IconName>(DEFAULT_SIDE_PANEL_AI_RESUME_ICONS.badgeIcon);\n readonly sectionIcon = input<IconToken>(DEFAULT_SIDE_PANEL_AI_RESUME_ICONS.sectionIcon);\n\n // ── Mode / positioning ───────────────────────────────────────────────────\n readonly mode = input<SidePanelAiResumeMode>('overlay');\n readonly position = input<SidePanelAiResumePosition>('right');\n\n // ── State (two-way via model) ────────────────────────────────────────────\n readonly open = model<boolean>(true);\n readonly expanded = model<boolean>(true);\n\n // ── State (one-way) ──────────────────────────────────────────────────────\n readonly loading = input(false, { transform: booleanAttribute });\n readonly closable = input(true, { transform: booleanAttribute });\n\n // ── a11y / i18n ──────────────────────────────────────────────────────────\n readonly panelId = input<string | undefined>(undefined);\n readonly i18n = input<SidePanelAiResumeI18n>({});\n\n // ── Outputs ──────────────────────────────────────────────────────────────\n readonly closed = output<SidePanelAiResumeCloseEvent>();\n readonly sectionToggled = output<SidePanelAiResumeToggleEvent>();\n\n // ── Derived state ────────────────────────────────────────────────────────\n readonly resolvedI18n = computed<Required<SidePanelAiResumeI18n>>(() => ({\n ...DEFAULT_SIDE_PANEL_AI_RESUME_I18N,\n ...this.i18n(),\n }));\n\n readonly resolvedBadgeLabel = computed(\n () => this.badgeLabel() ?? this.resolvedI18n().badgeLabel,\n );\n\n readonly resolvedPanelId = computed(() => this.panelId() ?? this.fallbackId);\n readonly titleId = computed(() => `${this.resolvedPanelId()}-title`);\n readonly sectionRegionId = computed(() => `${this.resolvedPanelId()}-section`);\n readonly sectionToggleId = computed(() => `${this.resolvedPanelId()}-section-toggle`);\n\n readonly sectionToggleAriaLabel = computed(() => {\n const i18n = this.resolvedI18n();\n return this.expanded() ? i18n.collapseSectionLabel : i18n.expandSectionLabel;\n });\n\n readonly sectionToggleIcon = computed<IconToken>(() =>\n this.expanded() ? 'chevronUpSolidFull' : 'chevronDownSolidFull',\n );\n\n readonly dialogRole = computed<'dialog' | 'complementary'>(() =>\n this.mode() === 'overlay' ? 'dialog' : 'complementary',\n );\n\n readonly ariaModal = computed<'true' | null>(() =>\n this.mode() === 'overlay' ? 'true' : null,\n );\n\n readonly ariaHidden = computed<'true' | null>(() => {\n if (this.mode() !== 'overlay') return null;\n return this.open() ? null : 'true';\n });\n\n readonly ariaBusy = computed<'true' | null>(() => (this.loading() ? 'true' : null));\n\n readonly inertAttribute = computed<'' | null>(() => {\n if (this.mode() !== 'overlay') return null;\n return this.open() ? null : '';\n });\n\n // ── Handlers ─────────────────────────────────────────────────────────────\n onClose(event: MouseEvent): void {\n if (!this.closable()) return;\n this.open.set(false);\n this.closed.emit({ source: 'button', originalEvent: event });\n }\n\n @HostListener('keydown.escape', ['$event'])\n onEscape(event: Event): void {\n if (this.mode() !== 'overlay') return;\n if (!this.open()) return;\n if (!this.closable()) return;\n event.preventDefault();\n event.stopPropagation();\n this.open.set(false);\n this.closed.emit({ source: 'escape', originalEvent: event });\n }\n\n toggleSection(event: MouseEvent | KeyboardEvent): void {\n const next = !this.expanded();\n this.expanded.set(next);\n this.sectionToggled.emit({ expanded: next, originalEvent: event });\n }\n}\n","<aside\n class=\"tbk-side-panel-ai-resume\"\n [class.tbk-side-panel-ai-resume--open]=\"open()\"\n [attr.id]=\"resolvedPanelId()\"\n [attr.role]=\"dialogRole()\"\n [attr.aria-modal]=\"ariaModal()\"\n [attr.aria-labelledby]=\"titleId()\"\n [attr.aria-hidden]=\"ariaHidden()\"\n [attr.aria-busy]=\"ariaBusy()\"\n [attr.inert]=\"inertAttribute()\"\n>\n <header class=\"tbk-side-panel-ai-resume__header\">\n <div class=\"tbk-side-panel-ai-resume__heading\">\n <tbk-text\n class=\"tbk-side-panel-ai-resume__title\"\n [attr.id]=\"titleId()\"\n [children]=\"title()\"\n as=\"p\"\n size=\"font-size-450\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n\n <tbk-badge\n class=\"tbk-side-panel-ai-resume__badge\"\n [label]=\"resolvedBadgeLabel()\"\n [icon]=\"badgeIcon()\"\n iconPosition=\"left\"\n size=\"sm\"\n variant=\"primary\"\n ></tbk-badge>\n </div>\n\n @if (closable()) {\n <tbk-button\n class=\"tbk-side-panel-ai-resume__close\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'text' }\"\n icon=\"xmarkRegularFull\"\n iconPosition=\"only\"\n [label]=\"resolvedI18n().closeLabel\"\n [ariaLabel]=\"resolvedI18n().closeLabel\"\n [tooltip]=\"resolvedI18n().closeLabel\"\n (clicked)=\"onClose($event)\"\n ></tbk-button>\n }\n </header>\n\n <div class=\"tbk-side-panel-ai-resume__body\">\n @if (loading()) {\n <div\n class=\"tbk-side-panel-ai-resume__loading\"\n role=\"status\"\n [attr.aria-label]=\"resolvedI18n().loadingLabel\"\n >\n <div class=\"tbk-side-panel-ai-resume__skeleton tbk-side-panel-ai-resume__skeleton--header\"></div>\n <div class=\"tbk-side-panel-ai-resume__skeleton tbk-side-panel-ai-resume__skeleton--text\"></div>\n <div class=\"tbk-side-panel-ai-resume__skeleton tbk-side-panel-ai-resume__skeleton--body\"></div>\n <span class=\"tbk-side-panel-ai-resume__sr-only\">{{ resolvedI18n().loadingLabel }}</span>\n </div>\n } @else {\n <section class=\"tbk-side-panel-ai-resume__section\">\n <button\n type=\"button\"\n class=\"tbk-side-panel-ai-resume__section-toggle\"\n [attr.id]=\"sectionToggleId()\"\n [attr.aria-expanded]=\"expanded() ? 'true' : 'false'\"\n [attr.aria-controls]=\"sectionRegionId()\"\n [attr.aria-label]=\"sectionToggleAriaLabel()\"\n (click)=\"toggleSection($event)\"\n >\n <tbk-icons\n class=\"tbk-side-panel-ai-resume__section-icon\"\n [name]=\"sectionIcon()\"\n color=\"success\"\n [size]=\"16\"\n [decorative]=\"true\"\n ></tbk-icons>\n\n <tbk-text\n class=\"tbk-side-panel-ai-resume__section-title\"\n [children]=\"sectionTitle()\"\n as=\"span\"\n size=\"font-size-350\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n margin=\"0\"\n ></tbk-text>\n\n <tbk-icons\n class=\"tbk-side-panel-ai-resume__section-chevron\"\n [name]=\"sectionToggleIcon()\"\n color=\"gray\"\n [size]=\"14\"\n [decorative]=\"true\"\n ></tbk-icons>\n </button>\n\n @if (expanded()) {\n <div\n class=\"tbk-side-panel-ai-resume__section-body\"\n [attr.id]=\"sectionRegionId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"sectionToggleId()\"\n >\n @if (intro()) {\n <tbk-text\n class=\"tbk-side-panel-ai-resume__intro\"\n [children]=\"intro()\"\n as=\"p\"\n size=\"font-size-325\"\n color=\"Secondary\"\n weight=\"font-weight-regular\"\n margin=\"0\"\n ></tbk-text>\n }\n\n <div class=\"tbk-side-panel-ai-resume__content\">\n <ng-content></ng-content>\n </div>\n </div>\n }\n </section>\n\n <ng-content select=\"[side-panel-ai-resume-footer]\"></ng-content>\n }\n </div>\n</aside>\n","import { IconName } from '../../components/Icons/icons.component';\n\nexport type SidePanelTinaAiMode = 'overlay' | 'inline';\nexport type SidePanelTinaAiPosition = 'right' | 'left';\nexport type SidePanelTinaAiCloseSource = 'button' | 'escape';\n\n/** Ação rápida exibida na grade abaixo do composer. */\nexport interface SidePanelTinaAiQuickAction {\n readonly id: string;\n readonly icon: IconName;\n readonly label: string;\n readonly description?: string;\n}\n\nexport interface SidePanelTinaAiQuickActionEvent {\n readonly action: SidePanelTinaAiQuickAction;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelTinaAiCloseEvent {\n readonly source: SidePanelTinaAiCloseSource;\n readonly originalEvent: Event;\n}\n\n/** Um modo do segmented control (ex.: Scrape, Search, Map, Crawl). */\nexport interface SidePanelTinaAiTab {\n /** Identificador estável do modo. */\n readonly id: string;\n /** Rótulo visível. */\n readonly label: string;\n /** Badge opcional ao lado do rótulo (ex.: \"New\"). */\n readonly badge?: string;\n /** Desabilita o modo. */\n readonly disabled?: boolean;\n}\n\nexport interface SidePanelTinaAiTabChangeEvent {\n readonly tab: SidePanelTinaAiTab;\n readonly index: number;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelTinaAiSubmitEvent {\n /** Valor do campo (sem espaços nas pontas), incluindo o prefixo se houver. */\n readonly value: string;\n /** Modo ativo no momento do envio. */\n readonly tabId: string | null;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelTinaAiSecondaryEvent {\n readonly value: string;\n readonly tabId: string | null;\n readonly originalEvent: Event;\n}\n\nexport interface SidePanelTinaAiI18n {\n readonly tablistLabel?: string;\n readonly inputLabel?: string;\n readonly newBadgeLabel?: string;\n readonly closeLabel?: string;\n readonly savedPromptsLabel?: string;\n readonly quickActionsLabel?: string;\n}\n\nexport const DEFAULT_SIDE_PANEL_TINA_AI_I18N: Required<SidePanelTinaAiI18n> = {\n tablistLabel: 'Modos',\n inputLabel: 'Endereço ou consulta',\n newBadgeLabel: 'New',\n closeLabel: 'Fechar painel',\n savedPromptsLabel: 'Saved prompts',\n quickActionsLabel: 'Ações rápidas',\n};\n\nexport interface SidePanelTinaAiDefaults {\n readonly primaryActionIcon?: IconName;\n readonly secondaryActionIcon?: IconName;\n}\n\nexport const DEFAULT_SIDE_PANEL_TINA_AI_ICONS: SidePanelTinaAiDefaults = {\n primaryActionIcon: undefined,\n secondaryActionIcon: undefined,\n};\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport { BadgeComponent } from '../../components/Badge/badge.component';\nimport { ButtonComponent } from '../../components/Button/button.component';\nimport { IconName, IconsComponent } from '../../components/Icons/icons.component';\nimport { TextComponent } from '../../components/Text/text.component';\nimport {\n DEFAULT_SIDE_PANEL_TINA_AI_I18N,\n SidePanelTinaAiCloseEvent,\n SidePanelTinaAiI18n,\n SidePanelTinaAiMode,\n SidePanelTinaAiPosition,\n SidePanelTinaAiQuickAction,\n SidePanelTinaAiQuickActionEvent,\n SidePanelTinaAiSecondaryEvent,\n SidePanelTinaAiSubmitEvent,\n SidePanelTinaAiTab,\n SidePanelTinaAiTabChangeEvent,\n} from './side-panel-tina-ai.types';\n\nexport type {\n SidePanelTinaAiCloseEvent,\n SidePanelTinaAiCloseSource,\n SidePanelTinaAiI18n,\n SidePanelTinaAiMode,\n SidePanelTinaAiPosition,\n SidePanelTinaAiQuickAction,\n SidePanelTinaAiQuickActionEvent,\n SidePanelTinaAiSecondaryEvent,\n SidePanelTinaAiSubmitEvent,\n SidePanelTinaAiTab,\n SidePanelTinaAiTabChangeEvent,\n} from './side-panel-tina-ai.types';\n\n/**\n * Pattern: Side Panel Tina AI.\n *\n * Painel lateral (overlay deslizante ou inline) que exibe a superfície de\n * interação com a IA \"Tina\" no estilo \"playground\":\n * - Hero com título e subtítulo\n * - Segmented control de modos (com badge \"New\" opcional)\n * - Barra de entrada com prefixo opcional, toolbar de opções (slot),\n * ação secundária e ação primária\n *\n * Composto de primitivos existentes (Badge, Button, Icons, Text) e tokens\n * oficiais do Design System. Nenhum token, primitive ou estilo paralelo novo.\n */\n@Component({\n selector: 'tbk-side-panel-tina-ai',\n standalone: true,\n imports: [CommonModule, BadgeComponent, ButtonComponent, IconsComponent, TextComponent],\n templateUrl: './side-panel-tina-ai.component.html',\n styleUrls: ['./side-panel-tina-ai.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tbk-side-panel-tina-ai-host--open]': 'open()',\n '[class.tbk-side-panel-tina-ai-host--overlay]': \"mode() === 'overlay'\",\n '[class.tbk-side-panel-tina-ai-host--inline]': \"mode() === 'inline'\",\n '[class.tbk-side-panel-tina-ai-host--left]': \"position() === 'left'\",\n '[class.tbk-side-panel-tina-ai-host--right]': \"position() === 'right'\",\n '[class.tbk-side-panel-tina-ai-host--loading]': 'loading()',\n '[class.tbk-side-panel-tina-ai-host--active]': 'conversationStarted()',\n '[attr.data-mode]': 'mode()',\n '[attr.data-position]': 'position()',\n },\n})\nexport class SidePanelTinaAiComponent {\n private static nextId = 0;\n private readonly fallbackId = `tbk-side-panel-tina-ai-${++SidePanelTinaAiComponent.nextId}`;\n\n // ── Hero ─────────────────────────────────────────────────────────────────\n readonly title = input<string>('Playground');\n readonly subtitle = input<string>('');\n\n // ── Modos (segmented control) ──────────────────────────────────────────────\n readonly tabs = input<readonly SidePanelTinaAiTab[]>([]);\n readonly activeTab = model<string | null>(null);\n\n // ── Campo de entrada ────────────────────────────────────────────────────────\n readonly prompt = model<string>('');\n readonly prefix = input<string>('');\n readonly placeholder = input<string>('');\n\n // ── Ações ────────────────────────────────────────────────────────────────────\n readonly primaryActionLabel = input<string>('Enviar');\n readonly primaryActionIcon = input<IconName | undefined>(undefined);\n readonly secondaryActionLabel = input<string>('');\n readonly secondaryActionIcon = input<IconName | undefined>(undefined);\n\n // ── Container (side panel) ───────────────────────────────────────────────────\n readonly mode = input<SidePanelTinaAiMode>('overlay');\n readonly position = input<SidePanelTinaAiPosition>('right');\n readonly open = model<boolean>(true);\n readonly closable = input(true, { transform: booleanAttribute });\n /** Exibe o fundo decorativo com gradiente animado (orbs). */\n readonly gradient = input(true, { transform: booleanAttribute });\n\n // ── Estado ────────────────────────────────────────────────────────────────────\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly requireValue = input(true, { transform: booleanAttribute });\n /** Indica se uma conversa já foi iniciada (true após o primeiro submit). */\n readonly conversationStarted = model<boolean>(false);\n\n // ── a11y / i18n ──────────────────────────────────────────────────────────────\n readonly panelId = input<string | undefined>(undefined);\n readonly i18n = input<SidePanelTinaAiI18n>({});\n\n // ── Quick actions ─────────────────────────────────────────────────────────────\n /** Ações rápidas exibidas na grade abaixo do composer. */\n readonly quickActions = input<readonly SidePanelTinaAiQuickAction[]>([]);\n /** Exibe a linha \"Saved prompts\" no rodapé do composer (usa o label do i18n). */\n readonly showSavedPrompts = input(false, { transform: booleanAttribute });\n\n // ── Saídas ──────────────────────────────────────────────────────────────────────\n readonly submitted = output<SidePanelTinaAiSubmitEvent>();\n readonly secondaryAction = output<SidePanelTinaAiSecondaryEvent>();\n readonly tabChange = output<SidePanelTinaAiTabChangeEvent>();\n readonly closed = output<SidePanelTinaAiCloseEvent>();\n readonly quickActionClicked = output<SidePanelTinaAiQuickActionEvent>();\n\n // ── Estado derivado ───────────────────────────────────────────────────────────\n readonly resolvedI18n = computed<Required<SidePanelTinaAiI18n>>(() => ({\n ...DEFAULT_SIDE_PANEL_TINA_AI_I18N,\n ...this.i18n(),\n }));\n\n readonly resolvedPanelId = computed(() => this.panelId() ?? this.fallbackId);\n readonly titleId = computed(() => `${this.resolvedPanelId()}-title`);\n readonly inputId = computed(() => `${this.resolvedPanelId()}-input`);\n\n readonly hasTabs = computed(() => this.tabs().length > 0);\n readonly hasSubtitle = computed(() => this.subtitle().trim().length > 0);\n readonly hasPrefix = computed(() => this.prefix().length > 0);\n readonly hasSecondaryAction = computed(() => this.secondaryActionLabel().trim().length > 0);\n readonly hasQuickActions = computed(() => this.quickActions().length > 0);\n\n readonly resolvedActiveTab = computed<string | null>(() => {\n const active = this.activeTab();\n const tabs = this.tabs();\n if (active && tabs.some((tab) => tab.id === active)) return active;\n return tabs.length ? tabs[0].id : null;\n });\n\n readonly canSubmit = computed(() => {\n if (this.loading() || this.disabled()) return false;\n if (this.requireValue() && this.prompt().trim().length === 0) return false;\n return true;\n });\n\n readonly dialogRole = computed<'dialog' | 'complementary'>(() =>\n this.mode() === 'overlay' ? 'dialog' : 'complementary',\n );\n\n readonly ariaModal = computed<'true' | null>(() => (this.mode() === 'overlay' ? 'true' : null));\n\n readonly ariaHidden = computed<'true' | null>(() => {\n if (this.mode() !== 'overlay') return null;\n return this.open() ? null : 'true';\n });\n\n readonly inertAttribute = computed<'' | null>(() => {\n if (this.mode() !== 'overlay') return null;\n return this.open() ? null : '';\n });\n\n // ── Handlers: container ────────────────────────────────────────────────────────\n onClose(event: MouseEvent): void {\n if (!this.closable()) return;\n this.open.set(false);\n this.closed.emit({ source: 'button', originalEvent: event });\n }\n\n @HostListener('keydown.escape', ['$event'])\n onEscape(event: Event): void {\n if (this.mode() !== 'overlay') return;\n if (!this.open() || !this.closable()) return;\n event.preventDefault();\n event.stopPropagation();\n this.open.set(false);\n this.closed.emit({ source: 'escape', originalEvent: event });\n }\n\n // ── Handlers: conteúdo ─────────────────────────────────────────────────────────\n isTabActive(tab: SidePanelTinaAiTab): boolean {\n return tab.id === this.resolvedActiveTab();\n }\n\n selectTab(tab: SidePanelTinaAiTab, index: number, event: Event): void {\n if (tab.disabled || this.disabled()) return;\n if (tab.id === this.resolvedActiveTab()) return;\n this.activeTab.set(tab.id);\n this.tabChange.emit({ tab, index, originalEvent: event });\n }\n\n onPromptInput(event: Event): void {\n this.prompt.set((event.target as HTMLInputElement).value);\n }\n\n onInputKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.submit(event);\n }\n }\n\n submit(event: Event): void {\n if (!this.canSubmit()) return;\n this.submitted.emit({\n value: this.prompt().trim(),\n tabId: this.resolvedActiveTab(),\n originalEvent: event,\n });\n this.conversationStarted.set(true);\n }\n\n resetConversation(): void {\n this.conversationStarted.set(false);\n this.prompt.set('');\n }\n\n onSecondaryAction(event: Event): void {\n if (this.loading() || this.disabled()) return;\n this.secondaryAction.emit({\n value: this.prompt().trim(),\n tabId: this.resolvedActiveTab(),\n originalEvent: event,\n });\n }\n\n onQuickAction(action: SidePanelTinaAiQuickAction, event: Event): void {\n if (this.disabled()) return;\n this.quickActionClicked.emit({ action, originalEvent: event });\n }\n\n trackTab(_index: number, tab: SidePanelTinaAiTab): string {\n return tab.id;\n }\n\n trackQuickAction(_index: number, action: SidePanelTinaAiQuickAction): string {\n return action.id;\n }\n}\n","<aside\n class=\"tbk-side-panel-tina-ai\"\n [class.tbk-side-panel-tina-ai--open]=\"open()\"\n [class.tbk-side-panel-tina-ai--active]=\"conversationStarted()\"\n [attr.id]=\"resolvedPanelId()\"\n [attr.role]=\"dialogRole()\"\n [attr.aria-modal]=\"ariaModal()\"\n [attr.aria-labelledby]=\"titleId()\"\n [attr.aria-hidden]=\"ariaHidden()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.inert]=\"inertAttribute()\"\n>\n <!-- Título SR: sempre no DOM para aria-labelledby funcionar mesmo em modo conversa -->\n <p class=\"tbk-side-panel-tina-ai__sr-title\" [id]=\"titleId()\">{{ title() }}</p>\n\n @if (closable()) {\n <div class=\"tbk-side-panel-tina-ai__bar\">\n <tbk-button\n class=\"tbk-side-panel-tina-ai__close\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'text' }\"\n icon=\"xmarkRegularFull\"\n iconPosition=\"only\"\n [label]=\"resolvedI18n().closeLabel\"\n [ariaLabel]=\"resolvedI18n().closeLabel\"\n [tooltip]=\"resolvedI18n().closeLabel\"\n (clicked)=\"onClose($event)\"\n ></tbk-button>\n </div>\n }\n\n <div class=\"tbk-side-panel-tina-ai__body\">\n\n @if (!conversationStarted()) {\n <!-- Espaçador superior: empurra o conteúdo para o centro vertical -->\n <div class=\"tbk-side-panel-tina-ai__spacer\" aria-hidden=\"true\"></div>\n\n <!-- Welcome: orb + saudação -->\n <div class=\"tbk-side-panel-tina-ai__welcome\">\n @if (gradient()) {\n <div class=\"tbk-side-panel-tina-ai__orb-wrap\" aria-hidden=\"true\">\n <span class=\"tbk-side-panel-tina-ai__orb-avatar\"></span>\n </div>\n }\n\n <header class=\"tbk-side-panel-tina-ai__hero\">\n <p class=\"tbk-side-panel-tina-ai__title\" aria-hidden=\"true\">{{ title() }}</p>\n\n @if (hasSubtitle()) {\n <tbk-text\n class=\"tbk-side-panel-tina-ai__subtitle\"\n [children]=\"subtitle()\"\n as=\"p\"\n size=\"font-size-600\"\n color=\"Primary\"\n weight=\"font-weight-bold\"\n align=\"center\"\n margin=\"0\"\n ></tbk-text>\n }\n </header>\n </div>\n } @else {\n <!-- Thread: área de mensagens da conversa -->\n <div class=\"tbk-side-panel-tina-ai__thread\">\n <ng-content select=\"[tbk-tina-messages]\"></ng-content>\n </div>\n }\n\n <!-- Composer: sempre visível; simplifica no modo conversa via CSS -->\n <div\n class=\"tbk-side-panel-tina-ai__composer\"\n [class.tbk-side-panel-tina-ai__composer--disabled]=\"disabled()\"\n >\n <!-- Toolbar: tabs + ações (oculto no modo conversa) -->\n <div class=\"tbk-side-panel-tina-ai__toolbar\">\n <div class=\"tbk-side-panel-tina-ai__toolbar-start\">\n @if (hasTabs()) {\n <div\n class=\"tbk-side-panel-tina-ai__tabs\"\n role=\"group\"\n [attr.aria-label]=\"resolvedI18n().tablistLabel\"\n >\n @for (tab of tabs(); track trackTab($index, tab)) {\n <button\n type=\"button\"\n class=\"tbk-side-panel-tina-ai__tab\"\n [class.tbk-side-panel-tina-ai__tab--active]=\"isTabActive(tab)\"\n [attr.aria-pressed]=\"isTabActive(tab) ? 'true' : 'false'\"\n [disabled]=\"tab.disabled || disabled()\"\n (click)=\"selectTab(tab, $index, $event)\"\n >\n <span class=\"tbk-side-panel-tina-ai__tab-label\">{{ tab.label }}</span>\n\n @if (tab.badge) {\n <tbk-badge\n class=\"tbk-side-panel-tina-ai__tab-badge\"\n [label]=\"tab.badge\"\n size=\"sm\"\n variant=\"info\"\n ></tbk-badge>\n }\n </button>\n }\n </div>\n }\n\n <ng-content select=\"[tbk-tina-toolbar-start]\"></ng-content>\n </div>\n\n <div class=\"tbk-side-panel-tina-ai__toolbar-end\">\n @if (hasSecondaryAction()) {\n <tbk-button\n class=\"tbk-side-panel-tina-ai__secondary\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'text' }\"\n [label]=\"secondaryActionLabel()\"\n [icon]=\"secondaryActionIcon()\"\n iconPosition=\"left\"\n [disabled]=\"loading() || disabled()\"\n (clicked)=\"onSecondaryAction($event)\"\n ></tbk-button>\n }\n\n <tbk-button\n class=\"tbk-side-panel-tina-ai__primary\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'solid' }\"\n [label]=\"primaryActionLabel()\"\n [icon]=\"primaryActionIcon()\"\n iconPosition=\"left\"\n [loading]=\"loading()\"\n [disabled]=\"!canSubmit()\"\n (clicked)=\"submit($event)\"\n ></tbk-button>\n </div>\n </div>\n\n <!-- Campo de texto -->\n <div class=\"tbk-side-panel-tina-ai__field\">\n @if (hasPrefix()) {\n <span class=\"tbk-side-panel-tina-ai__prefix\" aria-hidden=\"true\">{{ prefix() }}</span>\n }\n\n <input\n class=\"tbk-side-panel-tina-ai__input\"\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.aria-label]=\"resolvedI18n().inputLabel\"\n [placeholder]=\"placeholder()\"\n [value]=\"prompt()\"\n [disabled]=\"disabled()\"\n (input)=\"onPromptInput($event)\"\n (keydown)=\"onInputKeydown($event)\"\n />\n\n <!-- Botão compacto de envio: visível apenas no modo conversa -->\n <tbk-button\n class=\"tbk-side-panel-tina-ai__send\"\n size=\"sm\"\n [appearance]=\"{ variant: 'primary', fill: 'solid' }\"\n icon=\"arrowUpBigSmallRegularFull\"\n iconPosition=\"only\"\n [label]=\"primaryActionLabel()\"\n [ariaLabel]=\"primaryActionLabel()\"\n [loading]=\"loading()\"\n [disabled]=\"!canSubmit()\"\n (clicked)=\"submit($event)\"\n ></tbk-button>\n </div>\n\n <!-- Footer: saved prompts + slot de attach (oculto no modo conversa) -->\n @if (showSavedPrompts()) {\n <div class=\"tbk-side-panel-tina-ai__composer-footer\">\n <button type=\"button\" class=\"tbk-side-panel-tina-ai__saved-prompts\">\n <tbk-icons name=\"sparkleRegular\" [size]=\"14\" color=\"secondary\" aria-hidden=\"true\"></tbk-icons>\n {{ resolvedI18n().savedPromptsLabel }}\n </button>\n <ng-content select=\"[tbk-tina-attach]\"></ng-content>\n </div>\n }\n </div>\n\n @if (!conversationStarted()) {\n <!-- Quick actions -->\n @if (hasQuickActions()) {\n <div\n class=\"tbk-side-panel-tina-ai__quick-actions\"\n role=\"group\"\n [attr.aria-label]=\"resolvedI18n().quickActionsLabel\"\n >\n @for (action of quickActions(); track trackQuickAction($index, action)) {\n <button\n type=\"button\"\n class=\"tbk-side-panel-tina-ai__quick-action\"\n [disabled]=\"disabled()\"\n (click)=\"onQuickAction(action, $event)\"\n >\n <tbk-icons\n [icon]=\"action.icon\"\n [size]=\"18\"\n color=\"secondary\"\n aria-hidden=\"true\"\n ></tbk-icons>\n <span class=\"tbk-side-panel-tina-ai__quick-action-label\">{{ action.label }}</span>\n @if (action.description) {\n <span class=\"tbk-side-panel-tina-ai__quick-action-desc\">{{ action.description }}</span>\n }\n </button>\n }\n </div>\n }\n\n <!-- Espaçador inferior: simétrico ao superior, garante centralização -->\n <div class=\"tbk-side-panel-tina-ai__spacer\" aria-hidden=\"true\"></div>\n }\n\n </div>\n</aside>\n","// Components\nexport * from './app/components/Autocomplete/index';\nexport * from './app/components/Avatar/index';\nexport * from './app/components/Badge/index';\nexport * from './app/components/Banner/index';\nexport * from './app/components/BarChart/index';\nexport * from './app/components/Breadcrumb/index';\nexport * from './app/components/BulkActionBar/index';\nexport * from './app/components/Button/index';\nexport * from './app/components/ButtonRadio/index';\nexport * from './app/components/Card/index';\nexport * from './app/components/Charts/index';\nexport * from './app/components/ChassiInput/index';\nexport * from './app/components/Checkbox/index';\nexport * from './app/components/Chips/index';\nexport * from './app/components/ContentPanel/index';\nexport * from './app/components/CurrencyInput/index';\nexport * from './app/components/DataTable/index';\nexport * from './app/components/DatePicker/index';\nexport * from './app/components/DatePickerFilterBar/index';\nexport * from './app/components/DonutChart/index';\nexport * from './app/components/FormGroup/index';\nexport * from './app/components/GaugeChart/index';\nexport * from './app/components/GravameInput/index';\nexport * from './app/components/Icons/index';\nexport * from './app/components/InputFields/index';\nexport * from './app/components/Kpis/index';\nexport * from './app/components/Layout/index';\nexport * from './app/components/LineChart/index';\nexport * from './app/components/MapChart/index';\nexport * from './app/components/Menu/index';\nexport * from './app/components/Pagination/index';\nexport * from './app/components/PasswordInput/index';\nexport * from './app/components/PercentInput/index';\nexport * from './app/components/Pinfield/index';\nexport * from './app/components/PlacaInput/index';\nexport * from './app/components/RenavamInput/index';\nexport * from './app/components/Search/index';\nexport * from './app/components/SearchFilterBar/index';\nexport * from './app/components/Select/index';\nexport * from './app/components/SelectFilterBar/index';\nexport * from './app/components/StackedProgressChart/index';\nexport * from './app/components/StatsOverviewCard/index';\nexport * from './app/components/Tabs/index';\nexport * from './app/components/Text/index';\nexport * from './app/components/TextArea/index';\nexport * from './app/components/TextInput/index';\nexport * from './app/components/Toggle/index';\nexport * from './app/components/Tooltip/index';\nexport * from './app/components/ViewSwitcher/index';\nexport * from './app/components/YearInput/index';\nexport * from './app/components/form-section-stepper/index';\n\n// Patterns\nexport * from './app/patterns/AdvancedFillSearch/index';\nexport * from './app/patterns/AdvancedSelectSearch/index';\nexport * from './app/patterns/Header/index';\nexport * from './app/patterns/Menu/index';\nexport * from './app/patterns/SidePanelAiResume/index';\nexport * from './app/patterns/SidePanelTinaAi/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["VARIANT_ICON_COLOR"],"mappings":"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"}