@openkit-labs/ngx-kit-ui 0.0.28
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.
- package/README.md +63 -0
- package/fesm2022/openkit-labs-ngx-kit-ui.mjs +5278 -0
- package/fesm2022/openkit-labs-ngx-kit-ui.mjs.map +1 -0
- package/index.d.ts +1907 -0
- package/package.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openkit-labs-ngx-kit-ui.mjs","sources":["../../../projects/ngx-kit-ui/src/lib/components/button/button/button.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/button/button.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/floating-action-button/floating-action-button.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/floating-action-button/floating-action-button.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/round-button/round-button.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/round-button/round-button.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/text-button/text-button.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/text-button/text-button.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group-item/kit-button-group-item-active.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group-item/kit-button-group-item-idle.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group-item/button-group-item.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group-item/button-group-item.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group.component.ts","../../../projects/ngx-kit-ui/src/lib/components/button/button-group/button-group.component.html","../../../projects/ngx-kit-ui/src/lib/components/button/button.module.ts","../../../projects/ngx-kit-ui/src/lib/components/data/simple-table/simple-table.component.ts","../../../projects/ngx-kit-ui/src/lib/components/data/simple-table/simple-table.component.html","../../../projects/ngx-kit-ui/src/lib/components/data/progress-bar/progress-bar.component.ts","../../../projects/ngx-kit-ui/src/lib/components/data/progress-bar/progress-bar.component.html","../../../projects/ngx-kit-ui/src/lib/components/data/carousel/carousel.component.ts","../../../projects/ngx-kit-ui/src/lib/components/data/carousel/carousel.component.html","../../../projects/ngx-kit-ui/src/lib/components/data/data.module.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/base/base-input.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-caption/text-caption.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-caption/text-caption.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-field-title/input-field-title.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-field-title/input-field-title.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-email/input-email.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-email/input-email.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-number/input-number.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-number/input-number.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-otp/input-otp.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-otp/input-otp.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-password/input-password.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-password/input-password.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-select/kit-select-item.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-select/kit-select-item-active.directive.ts","../../../projects/ngx-kit-ui/src/lib/services/screen/screen.service.ts","../../../projects/ngx-kit-ui/src/lib/components/overlays/dialog/dialog.component.ts","../../../projects/ngx-kit-ui/src/lib/components/overlays/dialog/dialog.component.html","../../../projects/ngx-kit-ui/src/lib/components/overlays/bottom-sheet/bottom-sheet.component.ts","../../../projects/ngx-kit-ui/src/lib/components/overlays/bottom-sheet/bottom-sheet.component.html","../../../projects/ngx-kit-ui/src/lib/components/overlays/overlays.module.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-label/text-label.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-label/text-label.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-text/input-text.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-text/input-text.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-select/kit-select-empty.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-select/input-select.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-select/input-select.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-phone/input-phone.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-phone/input-phone.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-textarea/input-textarea.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-textarea/input-textarea.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-time/input-time.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-time/input-time.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-date/input-date.component.ts","../../../projects/ngx-kit-ui/src/lib/components/inputs/input-date/input-date.component.html","../../../projects/ngx-kit-ui/src/lib/components/inputs/input.module.ts","../../../projects/ngx-kit-ui/src/lib/components/interactors/gesture-detector/gesture-detector.component.ts","../../../projects/ngx-kit-ui/src/lib/components/interactors/gesture-detector/gesture-detector.component.html","../../../projects/ngx-kit-ui/src/lib/components/interactors/interactors.module.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/app-root/app-root.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/app-root/app-root.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/center/center.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/center/center.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/column/column.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/column/column.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/constrained-box/constrained-box.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/constrained-box/constrained-box.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/expanded/expanded.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/expanded/expanded.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/padding/padding.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/padding/padding.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/page/page.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/page/page.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/row/row.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/row/row.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/sized-box/sized-box.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/sized-box/sized-box.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/spacer/spacer.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/spacer/spacer.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/sticky-container/sticky-container.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/sticky-container/sticky-container.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/divider/divider.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/divider/divider.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/stack/stack.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/stack/stack.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/container/container.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/container/container.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/top-bar/top-bar.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/top-bar/top-bar.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/bottom-bar/bottom-bar.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/bottom-bar/bottom-bar.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/side-menu/side-menu.service.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/side-menu/side-menu.component.ts","../../../projects/ngx-kit-ui/src/lib/components/layout/side-menu/side-menu.component.html","../../../projects/ngx-kit-ui/src/lib/components/layout/layout.module.ts","../../../projects/ngx-kit-ui/src/lib/components/media/image/image-loading.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/media/image/image-error.directive.ts","../../../projects/ngx-kit-ui/src/lib/components/media/image/image.component.ts","../../../projects/ngx-kit-ui/src/lib/components/media/image/image.component.html","../../../projects/ngx-kit-ui/src/lib/components/media/avatar/avatar.component.ts","../../../projects/ngx-kit-ui/src/lib/components/media/avatar/avatar.component.html","../../../projects/ngx-kit-ui/src/lib/components/media/media.module.ts","../../../projects/ngx-kit-ui/src/lib/services/navigation/navigation.service.ts","../../../projects/ngx-kit-ui/src/lib/components/navigation/router-outlet/router-outlet.component.ts","../../../projects/ngx-kit-ui/src/lib/components/navigation/router-outlet/router-outlet.component.html","../../../projects/ngx-kit-ui/src/lib/components/navigation/tab-view/tab-content/tab-content.component.ts","../../../projects/ngx-kit-ui/src/lib/components/navigation/tab-view/tab-content/tab-content.component.html","../../../projects/ngx-kit-ui/src/lib/components/navigation/tab-view/tab-view/tab-view.component.ts","../../../projects/ngx-kit-ui/src/lib/components/navigation/tab-view/tab-view/tab-view.component.html","../../../projects/ngx-kit-ui/src/lib/components/navigation/navigation.module.ts","../../../projects/ngx-kit-ui/src/lib/components/panels/card/card.component.ts","../../../projects/ngx-kit-ui/src/lib/components/panels/card/card.component.html","../../../projects/ngx-kit-ui/src/lib/components/panels/badge/badge.component.ts","../../../projects/ngx-kit-ui/src/lib/components/panels/badge/badge.component.html","../../../projects/ngx-kit-ui/src/lib/components/panels/panel.module.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-body/text-body.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-body/text-body.component.html","../../../projects/ngx-kit-ui/src/lib/components/text/text-display/text-display.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-display/text-display.component.html","../../../projects/ngx-kit-ui/src/lib/components/text/text-heading/text-heading.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-heading/text-heading.component.html","../../../projects/ngx-kit-ui/src/lib/components/text/text-link/text-link.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-link/text-link.component.html","../../../projects/ngx-kit-ui/src/lib/components/text/text-subheading/text-subheading.component.ts","../../../projects/ngx-kit-ui/src/lib/components/text/text-subheading/text-subheading.component.html","../../../projects/ngx-kit-ui/src/lib/components/text/text.module.ts","../../../projects/ngx-kit-ui/src/lib/services/theme/theme.service.ts","../../../projects/ngx-kit-ui/src/lib/pipes/file-size/file-size.pipe.ts","../../../projects/ngx-kit-ui/src/lib/pipes/time-ago/time-ago.pipe.ts","../../../projects/ngx-kit-ui/src/lib/pipes/kmb/kmb.pipe.ts","../../../projects/ngx-kit-ui/src/lib/pipes/pipes.module.ts","../../../projects/ngx-kit-ui/src/lib/directives/press-and-hold/press-and-hold.directive.ts","../../../projects/ngx-kit-ui/src/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.ts","../../../projects/ngx-kit-ui/src/lib/directives/directives.module.ts","../../../projects/ngx-kit-ui/src/public-api.ts","../../../projects/ngx-kit-ui/src/openkit-labs-ngx-kit-ui.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { ButtonColor } from '../button-options';\nimport { NgClass } from '@angular/common';\n\n/**\n * A standard button component with different color schemes.\n */\n@Component({\n selector: 'kit-button',\n standalone: true,\n imports: [NgClass],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class KitButtonComponent {\n /**\n * The button's color scheme\n */\n @Input() color: ButtonColor = 'primary';\n\n /**\n * Whether the button is disabled\n */\n @Input() disabled: boolean = false;\n\n /**\n * Whether the button should take up the full width of its container\n */\n @Input() fullWidth: boolean = false;\n\n /**\n * Whether to apply the outline style to the button\n */\n @Input() outline: boolean = false;\n\n /**\n * Emitted when the button is clicked\n */\n @Output() clicked = new EventEmitter<void>();\n\n /**\n * Apply the full-width class to the host element when fullWidth is true\n */\n @HostBinding('class.full-width')\n get isFullWidth(): boolean {\n return this.fullWidth;\n }\n\n /**\n * Classes to apply to the button element\n */\n get buttonClasses(): string[] {\n const classes = ['kit-button'];\n\n // Add color class\n classes.push(`kit-button--${this.color}`);\n\n // Add outline class if needed\n if (this.outline) {\n classes.push('kit-button--outline');\n }\n\n // Add full width class if needed\n if (this.fullWidth) {\n classes.push('kit-button--full-width');\n }\n\n return classes;\n }\n\n /**\n * Handle button click\n */\n handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}","<button type=\"button\"\n [ngClass]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\">\n <div class=\"kit-button__content\">\n <ng-content></ng-content>\n </div>\n</button>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ButtonColor } from '../button-options';\nimport { NgClass } from '@angular/common';\n\n/**\n * Positions where the floating action button can be placed\n */\nexport type FloatingActionButtonPosition = 'bottom-right' | 'bottom-left' | 'bottom-center' | 'top-right' | 'top-left' | 'center-right' | 'center-left' | 'center-center';\n\n/**\n * A floating action button component that uses a round button internally and can be positioned in various locations.\n */\n@Component({\n selector: 'kit-button-floating-action',\n standalone: true,\n imports: [NgClass],\n templateUrl: './floating-action-button.component.html',\n styleUrls: ['./floating-action-button.component.scss']\n})\nexport class KitFloatingActionButtonComponent {\n /**\n * The position of the floating action button\n */\n @Input() position: FloatingActionButtonPosition = 'bottom-right';\n\n /**\n * The button's color scheme\n */\n @Input() color: ButtonColor = 'primary';\n\n /**\n * Whether the button is disabled\n */\n @Input() disabled: boolean = false;\n\n /**\n * Whether to apply the outline style to the button\n */\n @Input() outline: boolean = false;\n\n /**\n * Emitted when the button is clicked\n */\n @Output() clicked = new EventEmitter<void>();\n\n /**\n * Handle button click\n */\n handleClick(event: MouseEvent): void {\n this.clicked.emit();\n }\n\n /**\n * Classes to apply to the container of the floating action button\n */\n get containerClasses(): string[] {\n return ['kit-floating-action-button', `kit-floating-action-button--${this.position}`];\n }\n\n /**\n * Classes to apply to the button element\n */\n get buttonClasses(): string[] {\n const classes = ['kit-floating-action-button__button'];\n\n // Add color class\n classes.push(`kit-floating-action-button__button--${this.color}`);\n\n // Add outline class if needed\n if (this.outline) {\n classes.push('kit-floating-action-button__button--outline');\n }\n\n return classes;\n }\n}\n","<div [ngClass]=\"containerClasses\">\n <button type=\"button\"\n [ngClass]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\">\n <div class=\"kit-floating-action-button__content\">\n <ng-content></ng-content>\n </div>\n </button>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ButtonColor } from '../button-options';\nimport { NgClass } from '@angular/common';\n\n/**\n * A round/circular button component with different color schemes.\n */\n@Component({\n selector: 'kit-button-round',\n standalone: true,\n imports: [NgClass],\n templateUrl: './round-button.component.html',\n styleUrls: ['./round-button.component.scss']\n})\nexport class KitRoundButtonComponent {\n /**\n * The button's color scheme\n */\n @Input() color: ButtonColor = 'primary';\n\n /**\n * Whether the button is disabled\n */\n @Input() disabled: boolean = false;\n\n /**\n * Whether to apply the outline style to the button\n */\n @Input() outline: boolean = false;\n\n /**\n * Emitted when the button is clicked\n */\n @Output() clicked = new EventEmitter<void>();\n\n /**\n * Classes to apply to the button element\n */\n get buttonClasses(): string[] {\n const classes = ['kit-round-button'];\n\n // Add color class\n classes.push(`kit-round-button--${this.color}`);\n\n // Add outline class if needed\n if (this.outline) {\n classes.push('kit-round-button--outline');\n }\n\n return classes;\n }\n\n /**\n * Handle button click\n */\n handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}\n","<button\n type=\"button\"\n [ngClass]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\">\n <div class=\"kit-round-button__content\">\n <ng-content></ng-content>\n </div>\n</button>\n","import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { ButtonColor } from '../button-options';\nimport { NgClass } from '@angular/common';\n\n/**\n * A text button component that appears as clickable text.\n */\n@Component({\n selector: 'kit-button-text',\n standalone: true,\n imports: [NgClass],\n templateUrl: './text-button.component.html',\n styleUrls: ['./text-button.component.scss']\n})\nexport class KitTextButtonComponent {\n /**\n * The button's color scheme\n */\n @Input() color: ButtonColor = 'primary';\n\n /**\n * Whether the button is disabled\n */\n @Input() disabled: boolean = false;\n\n /**\n * Whether the button should take up the full width of its container\n */\n @Input() fullWidth: boolean = false;\n\n /**\n * Emitted when the button is clicked\n */\n @Output() clicked = new EventEmitter<void>();\n\n /**\n * Apply the full-width class to the host element when fullWidth is true\n */\n @HostBinding('class.full-width')\n get isFullWidth(): boolean {\n return this.fullWidth;\n }\n\n /**\n * Classes to apply to the button element\n */\n get buttonClasses(): string[] {\n const classes = ['kit-text-button'];\n\n // Add color class\n classes.push(`kit-text-button--${this.color}`);\n\n // Add full width class if needed\n if (this.fullWidth) {\n classes.push('kit-text-button--full-width');\n }\n\n return classes;\n }\n\n /**\n * Handle button click\n */\n handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}","<button\n type=\"button\"\n [ngClass]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\">\n <div class=\"kit-text-button__content\">\n <ng-content></ng-content>\n </div>\n</button>","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[kitButtonGroupItemActive]'\n})\nexport class KitButtonGroupItemActiveDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[kitButtonGroupItemIdle]'\n})\nexport class KitButtonGroupItemIdleDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { Component, Input, Output, EventEmitter, HostBinding, HostListener, ContentChild, TemplateRef } from '@angular/core';\nimport { ButtonColor } from '../../button-options';\nimport { KitButtonGroupItemActiveDirective } from './kit-button-group-item-active.directive';\nimport { KitButtonGroupItemIdleDirective } from './kit-button-group-item-idle.directive';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'kit-button-group-item',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './button-group-item.component.html',\n styleUrls: ['./button-group-item.component.scss']\n})\nexport class KitButtonGroupItemComponent {\n\n @Input() active: boolean = false;\n @Input() color: ButtonColor = 'primary';\n @Output() clicked = new EventEmitter<void>();\n\n // Apply classes on the host element so SCSS selectors match\n @HostBinding('class')\n get hostClasses(): string {\n const base = `kit-button-group-item kit-button-group-item--${this.color}`;\n return this.active ? `${base} active` : base;\n }\n\n // Template slots\n @ContentChild(KitButtonGroupItemActiveDirective, { read: TemplateRef }) activeTemplate?: TemplateRef<any>;\n @ContentChild(KitButtonGroupItemIdleDirective, { read: TemplateRef }) idleTemplate?: TemplateRef<any>;\n\n // Forward clicks from the host\n @HostListener('click')\n onClick(): void {\n this.clicked.emit();\n }\n}\n","@if(active && activeTemplate)\n{\n<ng-container *ngTemplateOutlet=\"activeTemplate\"></ng-container>\n}\n@else\n{\n@if(idleTemplate)\n{\n<ng-container *ngTemplateOutlet=\"idleTemplate\"></ng-container>\n}\n@else\n{\n<ng-content></ng-content>\n}\n}","import { Component, ContentChildren, QueryList, AfterContentInit, OnDestroy, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KitButtonGroupItemComponent } from './button-group-item/button-group-item.component';\nimport { ButtonColor } from '../button-options';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'kit-button-group',\n standalone: true,\n imports: [NgClass],\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss']\n})\nexport class KitButtonGroupComponent implements AfterContentInit, OnDestroy {\n\n @ContentChildren(KitButtonGroupItemComponent) items!: QueryList<KitButtonGroupItemComponent>;\n\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n @Input() selectionMode: 'single' | 'multiple' = 'single';\n @Input() color: ButtonColor = 'primary';\n\n private itemsSubscription: Subscription | null = null;\n\n ngAfterContentInit(): void {\n this.updateItemColors();\n this.items.forEach(item => {\n item.clicked.subscribe(() => this.onItemClicked(item));\n });\n\n this.itemsSubscription = this.items.changes.subscribe(() => {\n this.updateItemColors();\n this.items.forEach(item => {\n item.clicked.subscribe(() => this.onItemClicked(item));\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.itemsSubscription) {\n this.itemsSubscription.unsubscribe();\n }\n }\n\n onItemClicked(item: KitButtonGroupItemComponent): void {\n if (this.selectionMode === 'single') {\n this.items.forEach(i => i.active = false);\n item.active = true;\n } else {\n item.active = !item.active;\n }\n }\n\n private updateItemColors(): void {\n this.items.forEach(item => {\n item.color = this.color;\n });\n }\n}\n","<div class=\"kit-button-group\"\n [class.kit-button-group--vertical]=\"orientation === 'vertical'\"\n [ngClass]=\"'kit-button-group--' + color\">\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { KitButtonComponent } from './button/button.component';\nimport { KitTextButtonComponent } from './text-button/text-button.component';\nimport { KitRoundButtonComponent } from './round-button/round-button.component';\nimport { KitFloatingActionButtonComponent } from './floating-action-button/floating-action-button.component';\nimport { KitButtonGroupComponent } from './button-group/button-group.component';\nimport { KitButtonGroupItemComponent } from './button-group/button-group-item/button-group-item.component';\nimport { KitButtonGroupItemActiveDirective } from './button-group/button-group-item/kit-button-group-item-active.directive';\nimport { KitButtonGroupItemIdleDirective } from './button-group/button-group-item/kit-button-group-item-idle.directive';\n\n@NgModule({\n imports: [\n KitButtonComponent,\n KitTextButtonComponent,\n KitRoundButtonComponent,\n KitFloatingActionButtonComponent,\n KitButtonGroupComponent,\n KitButtonGroupItemComponent,\n KitButtonGroupItemActiveDirective,\n KitButtonGroupItemIdleDirective\n ],\n exports: [\n KitButtonComponent,\n KitTextButtonComponent,\n KitRoundButtonComponent,\n KitFloatingActionButtonComponent,\n KitButtonGroupComponent,\n KitButtonGroupItemComponent,\n KitButtonGroupItemActiveDirective,\n KitButtonGroupItemIdleDirective\n ]\n})\nexport class KitButtonModule { }","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface KitSimpleTableColumn {\n title: string;\n /**\n * Field name to lookup on each row. Supports nested paths using dot notation\n * (for example: `verification.assetItemId`). If the path doesn't exist the\n * table will render an empty string. A custom `formatter` may be provided to\n * transform the resolved value.\n */\n lookupField: string;\n formatter?: (value: any) => string;\n}\n\n// The table definition is represented as an array of columns\nexport type KitSimpleTableDefinition = KitSimpleTableColumn[];\n\n@Component({\n selector: 'kit-simple-table',\n imports: [],\n templateUrl: './simple-table.component.html',\n styleUrls: ['./simple-table.component.scss']\n})\nexport class SimpleTableComponent {\n\n @Input() definition: KitSimpleTableDefinition = [];\n @Input() dataset: any[] = [];\n\n @Output() cellSelect = new EventEmitter<any>();\n @Output() rowSelect = new EventEmitter<any>();\n\n // current active sort field (lookup path) and direction\n public currentSortField: string | null = null;\n public currentSortDirection: 'asc' | 'desc' | null = null;\n\n /**\n * Public getter that returns the dataset sorted according to the current\n * sort state. Does not mutate the original `dataset` input.\n */\n get displayDataset(): any[] {\n if (!this.currentSortField || !this.currentSortDirection) return this.dataset || [];\n\n const dir = this.currentSortDirection === 'asc' ? 1 : -1;\n const field = this.currentSortField;\n\n // shallow copy to avoid mutating the input\n return [...(this.dataset || [])].sort((a, b) => {\n const va = this.resolvePath(a, field);\n const vb = this.resolvePath(b, field);\n\n // normalize undefined/null\n if (va == null && vb == null) return 0;\n if (va == null) return -1 * dir;\n if (vb == null) return 1 * dir;\n\n // numbers\n if (typeof va === 'number' && typeof vb === 'number') return (va - vb) * dir;\n\n // dates\n if (va instanceof Date && vb instanceof Date) return (va.getTime() - vb.getTime()) * dir;\n\n // fallback to string comparison\n const sa = String(va);\n const sb = String(vb);\n return sa.localeCompare(sb) * dir;\n });\n }\n\n getCellValue(row: any, column: KitSimpleTableColumn): any {\n\n // reuse shared resolver for nested lookup paths\n const rawValue = this.resolvePath(row, column.lookupField);\n\n // If a formatter is provided, use it to transform the value. Keep a try/catch\n // so a bad formatter doesn't break the table rendering.\n if (column.formatter) {\n try {\n return column.formatter(rawValue);\n } catch (e) {\n // Log the error and fall back to the raw value\n // eslint-disable-next-line no-console\n console.error('KitSimpleTable: formatter threw an error for field', column.lookupField, e);\n return rawValue !== undefined ? rawValue : '';\n }\n }\n\n return rawValue !== undefined ? rawValue : '';\n }\n\n onCellSelected(row: any, column: KitSimpleTableColumn): void {\n this.cellSelect.emit({ row, column });\n }\n\n onRowSelected(row: any): void {\n this.rowSelect.emit(row);\n }\n\n /**\n * Toggle sort state for a column: none -> asc -> desc -> none\n */\n toggleSort(column: KitSimpleTableColumn): void {\n const field = column.lookupField;\n if (this.currentSortField !== field) {\n this.currentSortField = field;\n this.currentSortDirection = 'asc';\n return;\n }\n\n if (this.currentSortDirection === 'asc') {\n this.currentSortDirection = 'desc';\n return;\n }\n\n // currently 'desc' -> clear\n this.currentSortField = null;\n this.currentSortDirection = null;\n }\n\n /**\n * Resolve nested lookup paths like `verification.assetItemId`.\n */\n private resolvePath(obj: any, path: string | undefined): any {\n if (!obj || !path) return undefined;\n // quick return for direct property (common case)\n if (Object.prototype.hasOwnProperty.call(obj, path)) return obj[path];\n\n const parts = path.split('.');\n let current: any = obj;\n for (const part of parts) {\n if (current == null) return undefined; // covers null and undefined\n // if current is an object/array, access the key/index\n if (Object.prototype.hasOwnProperty.call(current, part) || (Array.isArray(current) && !isNaN(Number(part)))) {\n current = current[part as any];\n } else {\n // last-ditch attempt: try direct property access (handles prototype accessors)\n current = (current as any)[part];\n }\n }\n return current;\n }\n}\n","<div class=\"kit-table-container\">\n <table class=\"kit-table\">\n <thead>\n <tr>\n @for(column of definition; track column.lookupField){\n <th (click)=\"toggleSort(column)\"\n style=\"cursor: pointer; user-select: none;\">\n {{ column.title }}\n <!-- simple visual indicator for sort state -->\n @if(currentSortField === column.lookupField){\n <span>\n @if(currentSortDirection === 'asc'){\n <span>▲</span>\n }\n @if(currentSortDirection === 'desc'){\n <span>▼</span>\n }\n </span>\n }\n </th>\n }\n\n </tr>\n </thead>\n\n <tbody>\n @for(row of displayDataset; track row){\n <tr (click)=\"onRowSelected(row)\">\n @for(column of definition; track column.lookupField){\n <td (click)=\"onCellSelected(row, column)\">\n {{ getCellValue(row, column) }}\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kit-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrl: './progress-bar.component.scss',\n standalone: true,\n})\nexport class KitProgressBarComponent {\n @Input()\n set value(value: number) {\n this.progress = Math.max(0, Math.min(100, value));\n }\n\n @HostBinding('style.--progress')\n progress = 0;\n}\n","<div class=\"kit-progress-bar-container\">\n <div class=\"kit-progress-bar-value\"></div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kit-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n standalone: true,\n})\nexport class KitCarouselComponent {}\n","<div class=\"kit-carousel\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SimpleTableComponent } from './simple-table/simple-table.component';\nimport { KitProgressBarComponent } from './progress-bar/progress-bar.component';\nimport { KitCarouselComponent } from './carousel/carousel.component';\n\n@NgModule({\n imports: [\n SimpleTableComponent,\n KitProgressBarComponent,\n KitCarouselComponent\n ],\n exports: [\n SimpleTableComponent,\n KitProgressBarComponent,\n KitCarouselComponent\n ]\n})\nexport class KitDataModule { }","import { Directive, Input, Output, EventEmitter, OnInit, AfterViewInit, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n/**\n * Base component class that implements ControlValueAccessor to work with Angular forms.\n * This class provides common functionality for all input components in the kit.\n */\n@Directive()\nexport abstract class KitBaseInputComponent<T = string> implements OnInit, AfterViewInit, ControlValueAccessor {\n /**\n * Common input properties that all input components will have\n */\n\n // Used for form control binding\n @Input() id: string = '';\n\n // Used for form control binding\n @Input() name: string = '';\n\n // Used for disabling the input\n @Input() disabled = false;\n\n // Used to set the text in the input before the user types anything\n @Input() placeholder = '';\n\n //Text that appears above the input field\n @Input() title: string = '';\n\n // Text that appears below the input field, typically for additional information\n @Input() helperText: string = '';\n\n // Text that appears below the input field, typically for error messages and in danger color\n @Input() errorMessage: string | null = null;\n\n // Whether the input is in an error state - Adds error class to the input\n @Input() error: boolean = false;\n\n /**\n * Computed property that returns true if the input should show error state\n * This includes both manual error state and form validation errors\n */\n get hasError(): boolean {\n // Manual error state\n if (this.error) return true;\n\n // Form validation errors (only show if control is touched)\n if (this.ngControl && this.ngControl.control) {\n return !!(this.ngControl.control.invalid && (this.ngControl.control.touched || this.ngControl.control.dirty));\n }\n\n return false;\n }\n\n /**\n * Get the first error message from form validation or use the provided errorMessage\n */\n get effectiveErrorMessage(): string | null {\n // If there's a manual error message, use it\n if (this.errorMessage) return this.errorMessage;\n\n // Try to get error message from form validation\n if (this.ngControl && this.ngControl.control && this.ngControl.control.errors && this.hasError) {\n const errors = this.ngControl.control.errors;\n\n // Return specific error messages for common validators\n if (errors['required']) return 'This field is required';\n if (errors['email']) return 'Please enter a valid email address';\n if (errors['minlength']) return `Minimum length is ${errors['minlength'].requiredLength} characters`;\n if (errors['maxlength']) return `Maximum length is ${errors['maxlength'].requiredLength} characters`;\n if (errors['pattern']) return 'Please enter a valid format';\n\n // Return the first error key if no specific message is available\n return `Invalid ${Object.keys(errors)[0]}`;\n }\n\n return null;\n }\n\n /**\n * Support for direct two-way binding with [(value)]\n */\n @Input() value: T;\n @Output() valueChange = new EventEmitter<T>();\n\n @Input() autoFocus: boolean = false;\n\n /**\n * Two-way binding for focus state\n */\n private _isFocused: boolean = false;\n private _programmaticChange: boolean = false;\n\n @Input()\n get isFocused(): boolean {\n return this._isFocused;\n }\n\n set isFocused(value: boolean) {\n if (this._programmaticChange) {\n return;\n }\n const previousValue = this._isFocused;\n this._isFocused = value;\n if (value !== previousValue) {\n this.handleFocusChange(value);\n }\n }\n\n /**\n * Output for two-way binding with isFocused\n */\n @Output() isFocusedChange = new EventEmitter<boolean>();\n\n /**\n * Internal state\n */\n protected touched = false;\n\n constructor(@Optional() @Self() public ngControl: NgControl | null = null) {\n this.value = this.getDefaultValue();\n\n // Set the value accessor to this component instance\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (!this.id) {\n this.id = this.generateId();\n }\n }\n\n ngAfterViewInit(): void {\n const inputElement = document.getElementById(this.id) as HTMLInputElement | null;\n if (inputElement && this.autoFocus) {\n setTimeout(() => {\n inputElement.focus();\n }, 150);\n }\n }\n\n /**\n * Handle focus event on the input element\n */\n protected onFocus(event: FocusEvent): void {\n this._programmaticChange = true;\n this._isFocused = true;\n this._programmaticChange = false;\n this.isFocusedChange.emit(true);\n }\n\n /**\n * Handle blur event on the input element\n */\n protected onBlur(event: FocusEvent): void {\n this.markAsTouched();\n this._programmaticChange = true;\n this._isFocused = false;\n this._programmaticChange = false;\n this.isFocusedChange.emit(false);\n }\n\n /**\n * Programmatically focus or blur the input when isFocused changes\n */\n protected handleFocusChange(shouldFocus: boolean): void {\n const inputElement = document.getElementById(this.id) as HTMLInputElement | null;\n if (inputElement) {\n setTimeout(() => {\n if (shouldFocus) {\n inputElement.focus();\n } else {\n inputElement.blur();\n }\n }, 0);\n }\n }\n /**\n * Generate a unique ID for the input element if none is provided\n */\n protected generateId(): string {\n const prefix = this.getComponentPrefix();\n return `kit-${prefix}-${Math.random().toString(36).substring(2, 9)}`;\n }\n\n /**\n * Get component prefix for ID generation - should be overridden by subclasses\n */\n protected abstract getComponentPrefix(): string;\n\n /**\n * Get default value for the input - can be overridden by subclasses\n */\n protected getDefaultValue(): T {\n return '' as unknown as T;\n }\n\n /**\n * Process value changes from the input element\n */\n protected onValueChange(newValue: T): void {\n this.value = newValue;\n this.valueChange.emit(newValue);\n this.onChange(newValue);\n }\n\n /**\n * Mark the control as touched\n */\n protected markAsTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n /**\n * ControlValueAccessor implementation\n */\n onChange: any = () => { };\n onTouched: any = () => { };\n\n writeValue(value: T): void {\n this.value = value !== undefined && value !== null ? value : this.getDefaultValue();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-caption',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-caption.component.html',\n styleUrls: ['./text-caption.component.scss']\n})\nexport class KitTextCaptionComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<small [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</small>","import { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n/**\n * Form label component for all form controls within the library.\n * This component is meant for internal use only.\n */\n@Component({\n selector: 'kit-input-field-title',\n standalone: true,\n imports: [NgClass],\n templateUrl: './input-field-title.component.html',\n styleUrls: ['./input-field-title.component.scss']\n})\nexport class KitInputFieldTitleComponent {\n /**\n * Optional ID for the label element\n */\n @Input() for: string = '';\n\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n /**\n * Whether the label is disabled (will be styled accordingly)\n */\n @Input() disabled: boolean = false;\n\n /**\n * Apply classes based on component state\n */\n get labelClasses(): string[] {\n const classes = ['kit-input-field-title'];\n\n if (this.disabled) {\n classes.push('kit-input-field-title--disabled');\n }\n\n if (this.required) {\n classes.push('kit-input-field-title--required');\n }\n\n return classes;\n }\n}","<label [attr.for]=\"for\"\n [ngClass]=\"labelClasses\">\n <ng-content></ng-content>\n @if(required){\n <span class=\"kit-input-field-title__required-indicator\">*</span>\n }\n\n</label>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-email',\n templateUrl: './input-email.component.html',\n styleUrls: ['./input-email.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputEmailComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n /**\n * Pattern for email validation\n * Default is a basic email validation pattern\n */\n @Input() pattern: string = '[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,}$';\n\n @Output() paste = new EventEmitter<string>();\n\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-email';\n }\n\n /**\n * Validate if the input is a valid email format\n * @returns boolean indicating if the email format is valid\n */\n isValidEmail(): boolean {\n if (!this.value) return !this.required;\n\n const emailRegex = new RegExp(this.pattern, 'i');\n return emailRegex.test(this.value);\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLInputElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n const pastedData = event.clipboardData?.getData('text') || '';\n this.paste.emit(pastedData);\n }\n}","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<input type=\"email\"\n class=\"kit-input-email\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [pattern]=\"pattern\"\n inputmode=\"email\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-number',\n templateUrl: './input-number.component.html',\n styleUrls: ['./input-number.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputNumberComponent extends KitBaseInputComponent<number | null> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n /**\n * Minimum allowed value\n */\n @Input() min?: number;\n\n /**\n * Maximum allowed value\n */\n @Input() max?: number;\n\n /**\n * Step value for the input\n */\n @Input() step: number = 1;\n\n @Output() paste = new EventEmitter<string>();\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-number';\n }\n\n /**\n * Override default value to return null instead of empty string\n */\n override getDefaultValue(): number | null {\n return null;\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n // Convert to number or null if empty\n const newValue = inputValue === '' ? null : parseFloat(inputValue);\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n const pastedData = event.clipboardData?.getData('text') || '';\n this.paste.emit(pastedData);\n }\n}","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<input type=\"number\"\n class=\"kit-input-number\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n inputmode=\"numeric\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Component, Input, Optional, Self } from '@angular/core';\nimport { KitBaseInputComponent } from '../base/base-input.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'kit-input-otp',\n templateUrl: './input-otp.component.html',\n styleUrls: ['./input-otp.component.scss'],\n standalone: true,\n imports: []\n})\nexport class KitInputOtpComponent extends KitBaseInputComponent<string> {\n\n /** The length of the OTP code */\n @Input() length: number = 5;\n\n // No programmatic focus handling — this component keeps inputs simple and\n // delegates focus/touch behaviour to the parent / the browser.\n\n /**\n * Array to store the individual OTP digits\n */\n otpDigits: string[] = [];\n\n constructor(@Optional() @Self() ngControl: NgControl | null = null) {\n super(ngControl);\n this.initializeOtpDigits();\n }\n\n /**\n * Initialize the OTP digits array\n */\n private initializeOtpDigits(): void {\n this.otpDigits = Array(this.length).fill('');\n }\n\n /**\n * Handle input event for each digit\n */\n handleInput(event: Event, index: number): void {\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n // Only allow single digit or empty string\n if (value.length > 1) {\n value = value.charAt(0);\n input.value = value;\n }\n\n this.otpDigits[index] = value;\n this.updateValue();\n\n }\n\n\n /**\n * Override writeValue so the component reflects programmatic form updates.\n * Splits the incoming string into individual digits and fills/trim to length.\n */\n override writeValue(value: string): void {\n // Use base implementation to keep this.value in sync\n super.writeValue(value as unknown as any);\n\n const str = value ?? '';\n const chars = str.split('');\n // Fill otpDigits up to `length` with the split chars or empty strings\n this.otpDigits = Array.from({ length: this.length }, (_, i) => chars[i] ?? '');\n }\n\n /**\n * Update the overall OTP value and emit it\n */\n private updateValue(): void {\n const newVal = this.otpDigits.join('');\n // Use base class helper so ControlValueAccessor and outputs are handled\n this.onValueChange(newVal as unknown as string);\n }\n\n protected getComponentPrefix(): string {\n return 'input-otp';\n }\n\n protected override getDefaultValue(): string {\n return '';\n }\n}","<div class=\"kit-input-otp-container\">\n @for(digit of otpDigits; track $index){\n <input #otpInput\n [id]=\"id + '-' + $index\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n [class.has-error]=\"hasError\"\n maxlength=\"1\"\n class=\"kit-input-otp-digit\"\n [disabled]=\"disabled\"\n (input)=\"handleInput($event, $index)\"\n [value]=\"otpDigits[$index]\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n }\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-password',\n templateUrl: './input-password.component.html',\n styleUrls: ['./input-password.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputPasswordComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n @Output() paste = new EventEmitter<string>();\n /**\n * Controls whether the password is shown or hidden\n */\n showPassword: boolean = false;\n\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-password';\n }\n\n /**\n * Toggles the password visibility\n */\n togglePasswordVisibility(): void {\n this.showPassword = !this.showPassword;\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLInputElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n const pastedData = event.clipboardData?.getData('text') || '';\n this.paste.emit(pastedData);\n }\n}","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<div class=\"kit-input-password-container\">\n <input [type]=\"showPassword ? 'text' : 'password'\"\n class=\"kit-input-password\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n <button type=\"button\"\n class=\"kit-password-toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"showPassword ? 'Hide password' : 'Show password'\"\n [disabled]=\"disabled\">\n <!-- Eye icon (visible when password is hidden) -->\n @if(!showPassword){\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path>\n <circle cx=\"12\"\n cy=\"12\"\n r=\"3\"></circle>\n </svg>\n }\n <!-- Eye-off icon (visible when password is shown) -->\n @if(showPassword){\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\">\n </path>\n <line x1=\"1\"\n y1=\"1\"\n x2=\"23\"\n y2=\"23\"></line>\n </svg>\n }\n </button>\n</div>\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kit-select-item]',\n standalone: true\n})\nexport class KitSelectItemDirective { }\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kit-select-item-active]',\n standalone: true\n})\nexport class KitSelectItemActiveDirective { }\n","import { Injectable, OnDestroy, signal, computed, Signal, WritableSignal } from '@angular/core';\nimport { fromEvent, Subscription, debounceTime } from 'rxjs';\n\nexport type ScreenSize = 'small' | 'medium' | 'large';\n\nexport interface ScreenBreakpoints {\n small: number; // Minimum width for small screens (0px)\n medium: number; // Minimum width for medium screens (e.g., 768px)\n large: number; // Minimum width for large screens (e.g., 1200px)\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KitScreenService implements OnDestroy {\n // Default breakpoints\n private breakpoints: ScreenBreakpoints = {\n small: 0, // Always true - smallest screen size\n medium: 768, // Medium: 768px and up\n large: 1200 // Large: 1200px and up\n };\n\n // Current screen size (signal-based)\n private currentSizeSignal: WritableSignal<ScreenSize> = signal<ScreenSize>(this.getCurrentSize());\n // Readonly computed signal for consumers who want a Signal\n public readonly currentSize: Signal<ScreenSize> = computed(() => this.currentSizeSignal());\n\n // Convenience signals for each screen size\n public readonly isSmall: Signal<boolean> = computed(() => this.currentSizeSignal() === 'small');\n public readonly isMedium: Signal<boolean> = computed(() => this.currentSizeSignal() === 'medium');\n public readonly isLarge: Signal<boolean> = computed(() => this.currentSizeSignal() === 'large');\n\n private resizeSubscription: Subscription;\n\n constructor() {\n // Initialize the current size signal with current value\n this.currentSizeSignal.set(this.getCurrentSize());\n\n // Listen for window resize events and update the signal (debounced)\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe(debounceTime(200))\n .subscribe(() => {\n const size = this.getCurrentSize();\n if (this.currentSizeSignal() !== size) {\n this.currentSizeSignal.set(size);\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n /**\n * Set custom breakpoints\n */\n setBreakpoints(breakpoints: Partial<ScreenBreakpoints>): void {\n this.breakpoints = { ...this.breakpoints, ...breakpoints };\n\n // Re-evaluate screen size with new breakpoints and update signal\n const currentSize = this.getCurrentSize();\n this.currentSizeSignal.set(currentSize);\n }\n\n /**\n * Check if the current screen matches the given size\n */\n isScreenSize(size: ScreenSize): boolean {\n const width = window.innerWidth;\n\n switch (size) {\n case 'large':\n return width >= this.breakpoints.large;\n case 'medium':\n return width >= this.breakpoints.medium && width < this.breakpoints.large;\n case 'small':\n default:\n return width < this.breakpoints.medium;\n }\n }\n\n /**\n * Get the current screen size\n */\n getCurrentSize(): ScreenSize {\n const width = window.innerWidth;\n\n if (width >= this.breakpoints.large) {\n return 'large';\n } else if (width >= this.breakpoints.medium) {\n return 'medium';\n } else {\n return 'small';\n }\n }\n\n /**\n * Check if the screen is at least the specified size\n */\n isScreenSizeAtLeast(size: ScreenSize): boolean {\n const width = window.innerWidth;\n\n switch (size) {\n case 'large':\n return width >= this.breakpoints.large;\n case 'medium':\n return width >= this.breakpoints.medium;\n case 'small':\n default:\n return true; // All screens are at least small\n }\n }\n\n}\n","import { Component, Input, Output, EventEmitter, effect } from '@angular/core';\nimport { KitScreenService } from '../../../services/screen/screen.service';\n\n@Component({\n selector: 'kit-dialog',\n standalone: true,\n imports: [],\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss']\n})\nexport class KitDialogComponent {\n /**\n * Controls whether the dialog is open or closed\n */\n @Input() isOpen: boolean = false;\n\n /**\n * Output event to notify parent component when dialog's open state changes\n */\n @Output() isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Controls whether the dialog should be displayed in fullscreen mode\n * If not provided, will use ScreenService to determine based on screen size\n */\n @Input() fullscreen?: boolean;\n\n /**\n * Controls whether clicking on the backdrop closes the dialog\n * Default is true if not provided\n */\n @Input() closeOnBackdropClick: boolean = true;\n\n /**\n * Controls the padding of the dialog content\n * Default is '16px' if not provided\n */\n @Input() padding: string = '16px';\n\n /**\n * Internal property to track whether the dialog should be displayed in fullscreen mode\n */\n isFullscreen: boolean = false;\n\n constructor(private screenService: KitScreenService) {\n\n effect(() => {\n if (this.fullscreen === undefined) {\n if (this.screenService.currentSize() === 'small') {\n this.isFullscreen = true;\n } else {\n this.isFullscreen = false;\n }\n } else {\n this.isFullscreen = this.fullscreen;\n }\n });\n }\n\n /**\n * Handles backdrop clicks\n * If closeOnBackdropClick is true, will close the dialog\n */\n onBackdropClick(): void {\n if (this.closeOnBackdropClick) {\n this.isOpenChange.emit(false);\n }\n }\n}\n","@if(isOpen){\n<div class=\"dialog-backdrop\"\n animate.enter=\"kit-animation-dialog-backdrop-enter\"\n animate.leave=\"kit-animation-dialog-backdrop-leave\"\n (click)=\"onBackdropClick()\">\n\n <div class=\"dialog-container\"\n [class.fullscreen]=\"isFullscreen\"\n (click)=\"$event.stopPropagation()\">\n\n <div class=\"dialog-content\"\n [style.padding]=\"padding\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n</div>\n}","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, AfterViewInit, Renderer2, OnDestroy } from '@angular/core';\n\n@Component({\n selector: 'kit-bottom-sheet',\n standalone: true,\n imports: [],\n templateUrl: './bottom-sheet.component.html',\n styleUrls: ['./bottom-sheet.component.scss']\n})\n/**\n * Bottom Sheet Component\n * \n * A material-design style bottom sheet that slides up from the bottom of the screen.\n * The height can be controlled via predefined snap points (25%, 50%, 75%, 100%).\n * Users can drag the handle to resize between these snap points.\n */\nexport class KitBottomSheetComponent implements AfterViewInit, OnDestroy {\n /**\n * Controls whether the bottom sheet is open or closed\n */\n @Input() isOpen: boolean = false;\n\n /**\n * Output event to notify parent component when bottom sheet's open state changes\n */\n @Output() isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Controls whether clicking on the backdrop closes the bottom sheet\n * Default is true if not provided\n */\n @Input() closeOnBackdropClick: boolean = true;\n\n /**\n * Controls the padding of the bottom sheet content\n * Default is '16px' if not provided\n */\n @Input() padding: string = '8px';\n\n /**\n * Available snap points as percentages of viewport height (fixed values)\n */\n readonly snapPoints: number[] = [25, 50, 75, 100];\n\n /**\n * Controls the maximum height of the bottom sheet\n * Must be one of the predefined snap points: 25, 50, 75, or 100 (%)\n * Defaults to 50%\n */\n @Input() set maxHeight(value: 25 | 50 | 75 | 100 | string) {\n let snapPointIndex: number;\n\n if (typeof value === 'number' && this.snapPoints.includes(value)) {\n snapPointIndex = this.snapPoints.indexOf(value);\n } else if (typeof value === 'string') {\n // Handle string values like '25%', '50%', etc.\n const numericValue = parseInt(value, 10);\n if (this.snapPoints.includes(numericValue)) {\n snapPointIndex = this.snapPoints.indexOf(numericValue);\n } else {\n snapPointIndex = 1; // Default to 50%\n }\n } else {\n snapPointIndex = 1; // Default to 50%\n }\n\n this._maxHeightSnapIndex = snapPointIndex;\n }\n\n get maxHeight(): string {\n return `${this.snapPoints[this._maxHeightSnapIndex]}%`;\n }\n\n private _maxHeightSnapIndex: number = 1; // Default to the second snap point (50%)\n\n /**\n * Current snap point index\n */\n currentSnapIndex: number = 1; // Default to the second snap point (50%)\n\n /**\n * Get the current maximum height constraint based on the max height setting\n */\n get currentMaxHeightConstraint(): number {\n return Math.min(this.snapPoints[this._maxHeightSnapIndex], 100);\n }\n\n /**\n * Reference to the bottom sheet container element\n */\n @ViewChild('bottomSheetContainer') bottomSheetContainer!: ElementRef;\n\n // Drag state variables\n private isDragging = false;\n private startY = 0;\n private startHeight = 0;\n private currentHeight = 0;\n private windowHeight = 0;\n private animationFrameId: number | null = null;\n private dragStartTime = 0;\n private hasDraggedSignificantly = false;\n private isDragTransformActive = false;\n private dragTransformY = 0;\n private isUsingTransformMode = false;\n\n constructor(private renderer: Renderer2) { }\n\n ngAfterViewInit(): void {\n // Use visual viewport API for better mobile browser support, fallback to window.innerHeight\n this.windowHeight = window.visualViewport?.height || window.innerHeight;\n\n // Set the initial height based on the default snap point\n this.updateHeightToSnapPoint(this.currentSnapIndex);\n\n // Listen for window resize events to update windowHeight\n window.addEventListener('resize', this.onWindowResize);\n\n // Listen for visual viewport changes (mobile browser UI changes)\n if (window.visualViewport) {\n window.visualViewport.addEventListener('resize', this.onViewportResize);\n }\n }\n\n private onViewportResize = (): void => {\n this.windowHeight = window.visualViewport?.height || window.innerHeight;\n if (this.isOpen) {\n this.updateHeightToSnapPoint(this.currentSnapIndex);\n }\n }\n\n private onWindowResize = (): void => {\n this.windowHeight = window.visualViewport?.height || window.innerHeight;\n\n // Reapply the current snap point\n if (this.isOpen) {\n this.updateHeightToSnapPoint(this.currentSnapIndex);\n }\n }\n\n ngOnDestroy(): void {\n // Clean up any event listeners\n document.removeEventListener('mousemove', this.onDragMove);\n document.removeEventListener('mouseup', this.onDragEnd);\n document.removeEventListener('touchmove', this.onDragMove);\n document.removeEventListener('touchend', this.onDragEnd);\n window.removeEventListener('resize', this.onWindowResize);\n\n // Clean up visual viewport listener\n if (window.visualViewport) {\n window.visualViewport.removeEventListener('resize', this.onViewportResize);\n }\n\n // Cancel any pending animation frame\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n }\n }\n\n /**\n * Handles backdrop clicks\n * If closeOnBackdropClick is true, will close the bottom sheet\n */\n onBackdropClick(): void {\n if (this.closeOnBackdropClick) {\n this.isOpenChange.emit(false);\n }\n }\n\n /**\n * Handles drag start for the handle\n */\n onDragStart(event: MouseEvent | TouchEvent): void {\n // Prevent default behavior\n event.preventDefault();\n\n this.isDragging = true;\n this.dragStartTime = Date.now();\n this.hasDraggedSignificantly = false;\n this.isDragTransformActive = true;\n\n // **IMMEDIATE TRANSFORM MODE**: Start with transform mode for instant response on low-end devices\n this.isUsingTransformMode = true;\n\n // Record the starting position\n if (event instanceof MouseEvent) {\n this.startY = event.clientY;\n } else {\n this.startY = event.touches[0].clientY;\n }\n\n // Record the current height of the bottom sheet\n if (this.bottomSheetContainer?.nativeElement) {\n const rect = this.bottomSheetContainer.nativeElement.getBoundingClientRect();\n this.startHeight = rect.height;\n this.currentHeight = rect.height;\n\n // **IMMEDIATE SETUP**: Disable transitions and setup transform mode right away\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transition',\n 'none'\n );\n\n // Set container to full height for transform mode\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'height',\n `${this.windowHeight}px`\n );\n\n // Set initial transform position\n const translateY = this.windowHeight - this.currentHeight;\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n `translate3d(0, ${translateY}px, 0)`\n );\n\n // Add dragging class for CSS optimizations\n this.renderer.addClass(this.bottomSheetContainer.nativeElement, 'dragging');\n\n // Add grabbing class immediately for instant visual feedback\n this.renderer.addClass(this.bottomSheetContainer.nativeElement.querySelector('.bottom-sheet-handle'), 'grabbing');\n\n // Reset drag transform\n this.dragTransformY = 0;\n }\n\n // Add event listeners for drag and end events\n if (event instanceof MouseEvent) {\n document.addEventListener('mousemove', this.onDragMove, { passive: false });\n document.addEventListener('mouseup', this.onDragEnd);\n } else {\n document.addEventListener('touchmove', this.onDragMove, { passive: false });\n document.addEventListener('touchend', this.onDragEnd);\n }\n }\n\n /**\n * Handles drag move events\n */\n private onDragMove = (event: MouseEvent | TouchEvent): void => {\n if (!this.isDragging) return;\n\n // **IMMEDIATE RESPONSE**: Cancel any pending animation frame for instant updates\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n }\n\n // **LOW-END OPTIMIZATION**: Update immediately on first few movements, then throttle\n const timeSinceStart = Date.now() - this.dragStartTime;\n\n if (timeSinceStart < 100) {\n // First 100ms: Update immediately for responsive feel\n this.updateDragPosition(event);\n } else {\n // After 100ms: Use requestAnimationFrame for smooth performance\n this.animationFrameId = requestAnimationFrame(() => {\n this.updateDragPosition(event);\n });\n }\n }\n\n private updateDragPosition(event: MouseEvent | TouchEvent): void {\n let currentY: number;\n if (event instanceof MouseEvent) {\n currentY = event.clientY;\n event.preventDefault(); // Prevent text selection during drag\n } else {\n currentY = event.touches[0].clientY;\n }\n\n // Calculate the drag delta\n const deltaY = this.startY - currentY;\n\n // **IMMEDIATE RESPONSE**: Start transform mode right away for low-end device optimization\n if (!this.isUsingTransformMode) {\n this.switchToTransformMode();\n }\n\n // Mark as significantly dragged on any movement for click prevention\n if (Math.abs(deltaY) > 1) {\n this.hasDraggedSignificantly = true;\n }\n\n // Calculate new height based on drag movement (moving up increases height)\n const newHeight = this.startHeight + deltaY;\n\n // Restrict the minimum height to 20% and maximum to window height\n const minHeight = this.windowHeight * 0.2;\n const maxHeight = this.windowHeight;\n\n this.currentHeight = Math.max(minHeight, Math.min(newHeight, maxHeight));\n\n if (this.bottomSheetContainer?.nativeElement) {\n // **IMMEDIATE GPU ACCELERATION**: Always use transform for instant response\n const visibleHeight = this.currentHeight;\n const translateY = this.windowHeight - visibleHeight;\n\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n `translate3d(0, ${translateY}px, 0)`\n );\n }\n }\n\n private switchToTransformMode(): void {\n if (!this.bottomSheetContainer?.nativeElement || this.isUsingTransformMode) return;\n\n this.isUsingTransformMode = true;\n\n // Set container to full height\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'height',\n `${this.windowHeight}px`\n );\n\n // Calculate initial transform position\n const visibleHeight = this.currentHeight;\n const translateY = this.windowHeight - visibleHeight;\n\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n `translate3d(0, ${translateY}px, 0)`\n );\n }\n\n /**\n * Find the index of the closest snap point to the given percentage\n */\n private findClosestSnapPointIndex(percent: number): number {\n let closestIndex = 0;\n let minDistance = Math.abs(percent - this.snapPoints[0]);\n\n for (let i = 1; i < this.snapPoints.length; i++) {\n const distance = Math.abs(percent - this.snapPoints[i]);\n if (distance < minDistance) {\n minDistance = distance;\n closestIndex = i;\n }\n }\n\n return closestIndex;\n }\n\n /**\n * Handles drag end events\n */\n private onDragEnd = (): void => {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n this.isDragTransformActive = false;\n\n // Cancel any pending animation frame\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n\n // Remove event listeners\n document.removeEventListener('mousemove', this.onDragMove);\n document.removeEventListener('mouseup', this.onDragEnd);\n document.removeEventListener('touchmove', this.onDragMove);\n document.removeEventListener('touchend', this.onDragEnd);\n\n // Remove grabbing class\n if (this.bottomSheetContainer?.nativeElement) {\n this.renderer.removeClass(\n this.bottomSheetContainer.nativeElement.querySelector('.bottom-sheet-handle'),\n 'grabbing'\n );\n\n // Remove dragging class to restore normal CSS behavior\n this.renderer.removeClass(this.bottomSheetContainer.nativeElement, 'dragging');\n\n // If we were using transform mode, continue with transform-based snapping\n if (this.isUsingTransformMode) {\n // Don't reset transform here - we'll snap using transforms\n this.snapToClosestPointWithTransform();\n } else {\n // Use height-based snapping for small movements\n this.snapToClosestPoint();\n }\n }\n }\n\n /**\n * Snaps the bottom sheet to the closest snap point\n */\n private snapToClosestPoint(): void {\n // Calculate the current height as a percentage of window height\n const currentHeightPercent = (this.currentHeight / this.windowHeight) * 100;\n\n // Find the closest snap point\n this.currentSnapIndex = this.findClosestSnapPointIndex(currentHeightPercent);\n\n // Update the height to the snap point with animation\n this.updateHeightToSnapPoint(this.currentSnapIndex);\n\n // Close the bottom sheet if dragged to a very small height\n if (currentHeightPercent < 15) {\n this.isOpenChange.emit(false);\n }\n }\n\n /**\n * Snaps the bottom sheet to the closest snap point using transform\n */\n private snapToClosestPointWithTransform(): void {\n // Calculate the current visible height as a percentage based on current height\n const currentHeightPercent = (this.currentHeight / this.windowHeight) * 100;\n\n // Find the closest snap point\n this.currentSnapIndex = this.findClosestSnapPointIndex(currentHeightPercent);\n\n // Animate to the snap point using transform\n this.updateTransformToSnapPoint(this.currentSnapIndex);\n\n // Close the bottom sheet if dragged to a very small height\n if (currentHeightPercent < 15) {\n this.isOpenChange.emit(false);\n }\n }\n\n /**\n * Updates the transform position based on the selected snap point index\n */\n private updateTransformToSnapPoint(snapIndex: number): void {\n if (!this.bottomSheetContainer?.nativeElement) {\n return;\n }\n\n // Ensure the snap index is valid\n if (snapIndex >= 0 && snapIndex < this.snapPoints.length) {\n const snapPoint = this.snapPoints[snapIndex];\n\n // Calculate target height and transform position\n const targetHeight = (this.windowHeight * snapPoint) / 100;\n const targetTransformY = this.windowHeight - targetHeight;\n\n // Enable smooth transform transition\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transition',\n 'transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)'\n );\n\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n `translate3d(0, ${targetTransformY}px, 0)`\n );\n\n // After animation completes, switch back to height mode for consistency\n setTimeout(() => {\n if (this.bottomSheetContainer?.nativeElement) {\n // Remove transition\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transition',\n 'none'\n );\n\n // Reset transform and switch to height mode\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n 'translate3d(0, 0, 0)'\n );\n\n // Set the final height\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'height',\n `${snapPoint}%`\n );\n\n // Mark that we're no longer using transform mode\n this.isUsingTransformMode = false;\n }\n }, 300);\n }\n }\n\n /**\n * Updates the height based on the selected snap point index\n */\n private updateHeightToSnapPoint(snapIndex: number): void {\n if (!this.bottomSheetContainer?.nativeElement) {\n return;\n }\n\n // Ensure the snap index is valid\n if (snapIndex >= 0 && snapIndex < this.snapPoints.length) {\n const snapPoint = this.snapPoints[snapIndex];\n\n // Use transform-based approach for smooth animation like the initial animation\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'height',\n `${this.windowHeight}px`\n );\n\n // Calculate target transform position\n const targetHeight = (this.windowHeight * snapPoint) / 100;\n const targetTransformY = this.windowHeight - targetHeight;\n\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transition',\n 'transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)'\n );\n\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transform',\n `translate3d(0, ${targetTransformY}px, 0)`\n );\n\n // Clean up after animation completes (but keep transform mode)\n setTimeout(() => {\n if (this.bottomSheetContainer?.nativeElement) {\n this.renderer.setStyle(\n this.bottomSheetContainer.nativeElement,\n 'transition',\n 'none'\n );\n }\n }, 300);\n }\n }\n\n /**\n * Handles handle click to move to next snap point\n */\n onHandleClick(): void {\n // Disable click functionality - bottom sheet should only respond to dragging\n // Do nothing on click/tap\n }\n}\n","@if(isOpen){\n<div class=\"bottom-sheet-backdrop\"\n animate.enter=\"kit-animation-bottom-sheet-backdrop-enter\"\n animate.leave=\"kit-animation-bottom-sheet-backdrop-leave\"\n (click)=\"onBackdropClick()\">\n\n <div #bottomSheetContainer\n class=\"bottom-sheet-container\"\n animate.enter=\"kit-animation-bottom-sheet-enter\"\n animate.leave=\"kit-animation-bottom-sheet-leave\"\n style=\"width: 100%;\"\n (click)=\"$event.stopPropagation()\">\n\n <div class=\"bottom-sheet-handle\"\n (click)=\"onHandleClick()\"\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\">\n\n <div class=\"handle-indicator\"></div>\n\n </div>\n\n <div class=\"bottom-sheet-content\"\n [style.padding]=\"padding\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n</div>\n}","import { NgModule } from '@angular/core';\nimport { KitDialogComponent } from './dialog/dialog.component';\nimport { KitBottomSheetComponent } from './bottom-sheet/bottom-sheet.component';\n\n\n@NgModule({\n imports: [\n KitBottomSheetComponent,\n KitDialogComponent,\n ],\n exports: [\n KitBottomSheetComponent,\n KitDialogComponent,\n ]\n})\nexport class KitOverlaysModule { }\n","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-label',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-label.component.html',\n styleUrls: ['./text-label.component.scss']\n})\nexport class KitTextLabelComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<h4 [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</h4>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-text',\n templateUrl: './input-text.component.html',\n styleUrls: ['./input-text.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputTextComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n @Output() paste = new EventEmitter<string>();\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-text';\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLInputElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n this.paste.emit(event.clipboardData?.getData('text') || '');\n }\n}","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<input type=\"text\"\n class=\"kit-input-text\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kit-select-empty]',\n standalone: true\n})\nexport class KitSelectEmptyDirective { }\n","import { Component, Input, OnDestroy, OnInit, OnChanges, SimpleChanges, ContentChild, TemplateRef, Optional, Self, effect } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KitScreenService } from '../../../services/screen/screen.service';\nimport { Subscription } from 'rxjs';\nimport { KitSelectItemActiveDirective } from './kit-select-item-active.directive';\nimport { KitSelectItemDirective } from './kit-select-item.directive';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitOverlaysModule } from '../../overlays/overlays.module';\nimport { KitTextLabelComponent } from '../../text/text-label/text-label.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\nimport { KitInputTextComponent } from '../input-text/input-text.component';\nimport { KitSelectEmptyDirective } from './kit-select-empty.directive';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'kit-input-select',\n templateUrl: './input-select.component.html',\n styleUrls: ['./input-select.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet, KitInputFieldTitleComponent, KitTextCaptionComponent, KitOverlaysModule, KitTextLabelComponent, KitInputTextComponent]\n})\nexport class KitInputSelectComponent<T = any> extends KitBaseInputComponent<T> implements OnInit, OnDestroy, OnChanges {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n /**\n * Options dataset for the select component\n * Can be an array of objects or simple values\n */\n @Input() options: T[] = [];\n\n /**\n * The field name to use for matching items (default: 'id' or '_id')\n */\n @Input() matchField: string = 'id';\n\n /**\n * The field name to use as display text for each option (default: 'name')\n */\n @Input() displayField: string = 'name';\n\n /**\n * Custom title text for the dialog/bottom sheet (default: 'Select an option')\n */\n @Input() dialogTitle: string = 'Select an option';\n\n /**\n * Whether to show a search box at the top of the options list\n */\n @Input() showSearchBox: boolean = false;\n @Input() searchField: string | null = null;\n @Input() searchBoxPlaceholder: string = 'Search options...';\n\n /**\n * Template references for custom rendering of options\n */\n @ContentChild(KitSelectItemActiveDirective, { read: TemplateRef }) activeTemplate!: TemplateRef<any>;\n @ContentChild(KitSelectItemDirective, { read: TemplateRef }) inactiveTemplate!: TemplateRef<any>;\n @ContentChild(KitSelectEmptyDirective, { read: TemplateRef }) emptyTemplate!: TemplateRef<any>;\n\n /**\n * Control states for dialogs and bottom sheets\n */\n isBottomSheetOpen: boolean = false;\n isDialogOpen: boolean = false;\n\n /**\n * Track if the UI is on a small screen\n */\n isSmallScreen: boolean = false;\n\n /**\n * Search functionality\n */\n searchTerm: string = '';\n filteredOptions: T[] = [];\n\n /**\n * Keep track of our subscriptions\n */\n private screenSubscription: Subscription | null = null;\n\n constructor(private screenService: KitScreenService, @Optional() @Self() ngControl: NgControl | null = null) {\n super(ngControl);\n // Subscribe to screen size changes\n effect(() => {\n const isSmall = this.screenService.isSmall();\n this.isSmallScreen = isSmall;\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n\n // Initialize filtered options\n this.filteredOptions = [...this.options];\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['options'] && this.options) {\n this.filteredOptions = [...this.options];\n // Reapply search filter if there's an active search\n if (this.searchTerm) {\n this.filterOptions();\n }\n }\n }\n\n ngOnDestroy() {\n // Clean up subscription\n if (this.screenSubscription) {\n this.screenSubscription.unsubscribe();\n this.screenSubscription = null;\n }\n }\n\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-select';\n }\n\n /**\n * Opens the appropriate selection UI based on screen size\n */\n openSelect(): void {\n // Reset search when opening\n this.searchTerm = '';\n this.filteredOptions = [...this.options];\n\n if (this.isSmallScreen) {\n this.isBottomSheetOpen = true;\n this.isDialogOpen = false;\n } else {\n this.isDialogOpen = true;\n this.isBottomSheetOpen = false;\n }\n }\n\n /**\n * Handle keyboard events for accessibility\n */\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.openSelect();\n }\n }\n\n /**\n * Closes all selection UIs\n */\n closeSelect(): void {\n setTimeout(() => {\n this.isBottomSheetOpen = false;\n this.isDialogOpen = false;\n // Reset search when closing\n this.searchTerm = '';\n this.filteredOptions = [...this.options];\n }, 250);\n }\n\n /**\n * Handle search input changes\n */\n onSearchChange(searchTerm: string): void {\n this.searchTerm = searchTerm;\n this.filterOptions();\n }\n\n /**\n * Filter options based on search term\n */\n private filterOptions(): void {\n if (!this.searchTerm.trim()) {\n this.filteredOptions = [...this.options];\n return;\n }\n\n const searchLower = this.searchTerm.toLowerCase().trim();\n this.filteredOptions = this.options.filter(option => {\n const searchValue = this.getSearchValue(option).toLowerCase();\n return searchValue.includes(searchLower);\n });\n }\n\n /**\n * Get the search value for the option\n * Uses searchField if defined, otherwise falls back to displayField\n */\n getSearchValue(option: T): string {\n if (this.isPrimitive(option)) {\n return String(option);\n }\n\n const objWithKey = option as Record<string, any>;\n const fieldToSearch = this.searchField || this.displayField;\n return String(objWithKey[fieldToSearch] || 'Unknown Option');\n }\n\n /**\n * Handle option selection\n * This will be used inside the dialog/bottom sheet\n */\n onOptionSelect(option: T): void {\n // Update the value using the base class method for proper form integration\n this.onValueChange(option);\n\n // Close the selection UI\n this.closeSelect();\n }\n\n /**\n * Get the display value for the option\n */\n getDisplayValue(option: T): string {\n if (this.isPrimitive(option)) {\n return String(option);\n }\n\n const objWithKey = option as Record<string, any>;\n return String(objWithKey[this.displayField] || 'Unknown Option');\n }\n\n /**\n * Get the ID/value for the option\n */\n getOptionValue(option: T): string {\n if (this.isPrimitive(option)) {\n return String(option);\n }\n\n const objWithKey = option as Record<string, any>;\n // Try matchField, or fallback to _id if matchField is not found\n const idField = objWithKey[this.matchField] !== undefined ? this.matchField : '_id';\n return String(objWithKey[idField] || '');\n }\n\n /**\n * Check if the current value matches the option\n */\n isSelected(option: T): boolean {\n if (!this.value) return false;\n\n if (this.isPrimitive(option)) {\n return String(option) === String(this.value);\n }\n\n const valueObj = this.value as Record<string, any>;\n const optionObj = option as Record<string, any>;\n\n // Try matchField, or fallback to _id if matchField is not found\n const idField = optionObj[this.matchField] !== undefined ? this.matchField : '_id';\n\n return valueObj && optionObj &&\n valueObj[idField] !== undefined &&\n optionObj[idField] !== undefined &&\n String(valueObj[idField]) === String(optionObj[idField]);\n }\n\n /**\n * Check if a value is a primitive type\n */\n private isPrimitive(value: any): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n );\n }\n\n protected override getDefaultValue(): T {\n return null as unknown as T;\n }\n\n hasCustomActiveTemplate(): boolean {\n return !!this.activeTemplate;\n }\n\n hasCustomInactiveTemplate(): boolean {\n return !!this.inactiveTemplate;\n }\n\n hasCustomEmptyTemplate(): boolean {\n return !!this.emptyTemplate;\n }\n\n /**\n * Get the context for template rendering\n */\n getOptionContext(option: T): { option: T, isSelected: boolean } {\n return {\n option,\n isSelected: this.isSelected(option)\n };\n }\n}\n","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<!-- Custom select that opens the appropriate UI based on screen size -->\n<div class=\"kit-input-select-container\"\n [id]=\"id\"\n [attr.aria-label]=\"title\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"hasError || null\"\n [class.disabled]=\"disabled\"\n [class.error]=\"hasError\"\n tabindex=\"0\"\n (click)=\"!disabled && openSelect()\"\n (keydown)=\"!disabled && onKeyDown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n\n <div class=\"kit-input-select\"\n [class.has-error]=\"hasError\"\n [class.disabled]=\"disabled\">\n {{ value ? getDisplayValue(value) : (placeholder || 'Select...') }}\n </div>\n\n</div>\n\n@if(helperText && !hasError){\n<kit-text-caption class=\"helper-text\">\n {{ helperText }}\n</kit-text-caption>\n}\n\n\n@if(hasError && effectiveErrorMessage){\n<kit-text-caption class=\"error-message\">\n {{ effectiveErrorMessage }}\n</kit-text-caption>\n}\n\n\n<!-- Dialog for larger screens -->\n<kit-dialog [(isOpen)]=\"isDialogOpen\">\n <div>\n <div>\n <kit-text-label margin=\"5px\">{{ dialogTitle || title }}</kit-text-label>\n </div>\n\n <!-- Search input -->\n @if(showSearchBox){\n <div class=\"kit-select-search-container\">\n <kit-input-text [(value)]=\"searchTerm\"\n (valueChange)=\"onSearchChange($event)\"\n [placeholder]=\"searchBoxPlaceholder\"></kit-input-text>\n </div>\n }\n\n <div class=\"kit-select-options\">\n @for(option of filteredOptions; track option){\n <!-- Custom template for selected option -->\n @if(isSelected(option) && hasCustomActiveTemplate()){\n <div class=\"kit-select-item-custom\"\n (click)=\"onOptionSelect(option)\">\n <ng-container *ngTemplateOutlet=\"activeTemplate; context: getOptionContext(option)\"></ng-container>\n </div>\n }\n\n <!-- Custom template for unselected option -->\n @if(!isSelected(option) && hasCustomInactiveTemplate()){\n <div class=\"kit-select-item-custom\"\n (click)=\"onOptionSelect(option)\">\n <ng-container *ngTemplateOutlet=\"inactiveTemplate; context: getOptionContext(option)\"></ng-container>\n </div>\n }\n\n\n <!-- Default template if no custom template for this state -->\n @if((!isSelected(option) && !hasCustomInactiveTemplate()) || (isSelected(option) &&\n !hasCustomActiveTemplate())){\n <div class=\"kit-select-item\"\n [class.selected]=\"isSelected(option)\"\n (click)=\"onOptionSelect(option)\">\n <span class=\"kit-select-item-text\">{{ getDisplayValue(option) }}</span>\n @if(isSelected(option)){\n <svg class=\"kit-select-item-check\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path d=\"M20 6L9 17L4 12\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </div>\n }\n }\n\n @if(filteredOptions.length === 0){\n <div class=\"kit-select-options\">\n @if(hasCustomEmptyTemplate()){\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n }\n @else{\n <ng-template #defaultEmptyDialog>\n <kit-text-caption>No options found</kit-text-caption>\n </ng-template>\n }\n </div>\n }\n\n </div>\n </div>\n</kit-dialog>\n\n<!-- Bottom sheet for small screens -->\n<kit-bottom-sheet [(isOpen)]=\"isBottomSheetOpen\">\n <div>\n <div>\n <kit-text-label margin=\"5px\">{{ dialogTitle || title }}</kit-text-label>\n </div>\n\n <!-- Search input -->\n @if(showSearchBox){\n <div class=\"kit-select-search-container\">\n <kit-input-text [(value)]=\"searchTerm\"\n (valueChange)=\"onSearchChange($event)\"\n [placeholder]=\"searchBoxPlaceholder\"></kit-input-text>\n </div>\n }\n\n <div class=\"kit-select-options\">\n @for(option of filteredOptions; track option){\n <!-- Custom template for selected option -->\n @if(isSelected(option) && hasCustomActiveTemplate()){\n <div class=\"kit-select-item-custom\"\n (click)=\"onOptionSelect(option)\">\n <ng-container *ngTemplateOutlet=\"activeTemplate; context: getOptionContext(option)\"></ng-container>\n </div>\n }\n\n\n <!-- Custom template for unselected option -->\n @if(!isSelected(option) && hasCustomInactiveTemplate()){\n <div class=\"kit-select-item-custom\"\n (click)=\"onOptionSelect(option)\">\n <ng-container *ngTemplateOutlet=\"inactiveTemplate; context: getOptionContext(option)\"></ng-container>\n </div>\n }\n\n <!-- Default template if no custom template for this state -->\n @if((!isSelected(option) && !hasCustomInactiveTemplate()) || (isSelected(option) &&\n !hasCustomActiveTemplate())){\n <div class=\"kit-select-item\"\n [class.selected]=\"isSelected(option)\"\n (click)=\"onOptionSelect(option)\">\n <span class=\"kit-select-item-text\">{{ getDisplayValue(option) }}</span>\n @if(isSelected(option)){\n <svg class=\"kit-select-item-check\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path d=\"M20 6L9 17L4 12\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n\n </div>\n }\n }\n\n @if(filteredOptions.length === 0){\n <div class=\"kit-select-options\">\n @if(hasCustomEmptyTemplate()){\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n }\n @else{\n <ng-template #defaultEmptyBottomSheet>\n <kit-text-caption>No options found</kit-text-caption>\n </ng-template>\n }\n </div>\n\n }\n\n </div>\n </div>\n</kit-bottom-sheet>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { KitSelectItemDirective } from '../input-select/kit-select-item.directive';\nimport { KitSelectItemActiveDirective } from '../input-select/kit-select-item-active.directive';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputSelectComponent } from '../input-select/input-select.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\nexport interface CountryCode {\n id: string;\n name: string;\n code: string;\n flag: string;\n}\n\nexport interface PhoneValue {\n countryCode: CountryCode | null;\n number: string;\n}\n\n@Component({\n selector: 'kit-input-phone',\n templateUrl: './input-phone.component.html',\n styleUrls: ['./input-phone.component.scss'],\n standalone: true,\n imports: [\n KitInputFieldTitleComponent,\n KitTextCaptionComponent,\n KitInputSelectComponent,\n KitSelectItemDirective,\n KitSelectItemActiveDirective\n ]\n})\nexport class KitInputPhoneComponent extends KitBaseInputComponent<PhoneValue> implements OnInit {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n /**\n * Custom country codes list. If not provided, uses default list\n */\n @Input() countryCodes: CountryCode[] = [];\n\n /**\n * Custom title text for the country selection dialog/bottom sheet\n */\n @Input() dialogTitle: string = 'Select country';\n\n @Output() paste = new EventEmitter<string>();\n\n /**\n * Default country codes\n */\n private defaultCountryCodes: CountryCode[] = [\n { id: 'us', name: 'United States', code: '+1', flag: '🇺🇸' },\n { id: 'uk', name: 'United Kingdom', code: '+44', flag: '🇬🇧' },\n { id: 'ca', name: 'Canada', code: '+1', flag: '🇨🇦' },\n { id: 'au', name: 'Australia', code: '+61', flag: '🇦🇺' },\n { id: 'de', name: 'Germany', code: '+49', flag: '🇩🇪' },\n { id: 'fr', name: 'France', code: '+33', flag: '🇫🇷' },\n { id: 'es', name: 'Spain', code: '+34', flag: '🇪🇸' },\n { id: 'it', name: 'Italy', code: '+39', flag: '🇮🇹' },\n { id: 'nl', name: 'Netherlands', code: '+31', flag: '🇳🇱' },\n { id: 'jp', name: 'Japan', code: '+81', flag: '🇯🇵' },\n { id: 'kr', name: 'South Korea', code: '+82', flag: '🇰🇷' },\n { id: 'cn', name: 'China', code: '+86', flag: '🇨🇳' },\n { id: 'in', name: 'India', code: '+91', flag: '🇮🇳' },\n { id: 'br', name: 'Brazil', code: '+55', flag: '🇧🇷' },\n { id: 'mx', name: 'Mexico', code: '+52', flag: '🇲🇽' }\n ];\n\n /**\n * Get available country codes\n */\n get availableCountryCodes(): CountryCode[] {\n return this.countryCodes.length > 0 ? this.countryCodes : this.defaultCountryCodes;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // Set default country code if none is set\n if (!this.value.countryCode && this.availableCountryCodes.length > 0) {\n this.value = {\n ...this.value,\n countryCode: this.availableCountryCodes[0]\n };\n }\n }\n\n /**\n * Return the component prefix for ID generation\n */\n protected override getComponentPrefix(): string {\n return 'input-phone';\n }\n\n /**\n * Get default value for phone input\n */\n protected override getDefaultValue(): PhoneValue {\n return {\n countryCode: null,\n number: ''\n };\n }\n\n /**\n * Handle country code selection change\n */\n onCountryCodeChange(countryCode: CountryCode | undefined | null): void {\n if (countryCode) {\n const newValue: PhoneValue = {\n ...this.value,\n countryCode: countryCode\n };\n this.onValueChange(newValue);\n }\n }\n\n /**\n * Handle phone number input change\n */\n onNumberChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n let newNumber = input.value;\n\n // Remove any non-numeric characters except spaces, dashes, and parentheses for formatting\n newNumber = newNumber.replace(/[^\\d\\s\\-\\(\\)]/g, '');\n\n // Update the input's displayed value to show the sanitized version immediately\n input.value = newNumber;\n\n const newValue: PhoneValue = {\n ...this.value,\n number: newNumber\n };\n this.onValueChange(newValue);\n }\n\n /**\n * Validate if the phone number is valid\n */\n isValidPhone(): boolean {\n if (!this.value) return !this.required;\n\n if (this.required && (!this.value.countryCode || !this.value.number.trim())) {\n return false;\n }\n\n // Check if the number contains only digits and the allowed formatting characters\n const validChars = /^[\\d\\s\\-\\(\\)]*$/;\n if (!validChars.test(this.value.number)) {\n return false;\n }\n\n // Basic validation: at least 7 digits for phone numbers\n const digitsOnly = this.value.number.replace(/\\D/g, '');\n return digitsOnly.length >= 7;\n }\n\n /**\n * Get formatted phone display value\n */\n getFormattedPhone(): string {\n if (!this.value.countryCode || !this.value.number) {\n return '';\n }\n return `${this.value.countryCode.code} ${this.value.number}`;\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n this.paste.emit(event.clipboardData?.getData('text') || '');\n }\n}\n","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<div class=\"kit-input-phone-container\">\n <!-- Country Code Select -->\n <div class=\"kit-input-phone-country\">\n <kit-input-select [value]=\"value.countryCode\"\n [options]=\"availableCountryCodes\"\n [disabled]=\"disabled\"\n [dialogTitle]=\"dialogTitle\"\n [error]=\"hasError\"\n placeholder=\"Country\"\n matchField=\"id\"\n displayField=\"code\"\n (valueChange)=\"onCountryCodeChange($event)\">\n\n <ng-template kit-select-item-active\n let-option=\"option\">\n <div class=\"country-option\">\n <span class=\"country-flag\">{{ option.flag }}</span>\n <span class=\"country-code\">{{ option.code }}</span>\n <svg class=\"kit-select-item-check\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path d=\"M20 6L9 17L4 12\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </ng-template>\n\n <ng-template kit-select-item\n let-option=\"option\">\n <div class=\"country-option\">\n <span class=\"country-flag\">{{ option.flag }}</span>\n <span class=\"country-name\">{{ option.name }}</span>\n <span class=\"country-code\">{{ option.code }}</span>\n </div>\n </ng-template>\n </kit-input-select>\n </div>\n\n <!-- Phone Number Input -->\n <div class=\"kit-input-phone-number\">\n <input type=\"tel\"\n class=\"kit-input-phone\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value.number\"\n [placeholder]=\"placeholder || 'Phone number'\"\n [disabled]=\"disabled\"\n inputmode=\"tel\"\n pattern=\"[0-9\\s\\-\\(\\)]*\"\n (input)=\"onNumberChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n </div>\n</div>\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-textarea',\n templateUrl: './input-textarea.component.html',\n styleUrls: ['./input-textarea.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputTextareaComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n @Output() paste = new EventEmitter<string>();\n\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-textarea';\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n this.paste.emit(event.clipboardData?.getData('text') || '');\n }\n}\n","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<textarea class=\"kit-input-textarea\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\"></textarea>\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-time',\n templateUrl: './input-time.component.html',\n styleUrls: ['./input-time.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputTimeComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n @Output() paste = new EventEmitter<string>();\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-time';\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLInputElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n const pastedData = event.clipboardData?.getData('text') || '';\n this.paste.emit(pastedData);\n }\n}\n","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<input type=\"time\"\n class=\"kit-input-time\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KitTextCaptionComponent } from '../../text/text-caption/text-caption.component';\nimport { KitInputFieldTitleComponent } from '../input-field-title/input-field-title.component';\nimport { KitBaseInputComponent } from '../base/base-input.component';\n\n@Component({\n selector: 'kit-input-date',\n templateUrl: './input-date.component.html',\n styleUrls: ['./input-date.component.scss'],\n standalone: true,\n imports: [KitInputFieldTitleComponent, KitTextCaptionComponent]\n})\nexport class KitInputDateComponent extends KitBaseInputComponent<string> {\n /**\n * Whether the field is required\n */\n @Input() required: boolean = false;\n\n @Output() paste = new EventEmitter<string>();\n\n /**\n * Return the component prefix for ID generation\n */\n protected getComponentPrefix(): string {\n return 'input-date';\n }\n\n /**\n * Handle input change event from the DOM\n */\n onInputChange(event: Event): void {\n const newValue = (event.target as HTMLInputElement).value;\n this.onValueChange(newValue);\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n const pastedData = event.clipboardData?.getData('text') || '';\n this.paste.emit(pastedData);\n }\n}","@if(title){\n<kit-input-field-title [for]=\"id\"\n [required]=\"required\"\n [disabled]=\"disabled\">\n {{ title }}\n</kit-input-field-title>\n}\n\n<input type=\"date\"\n class=\"kit-input-date\"\n [class.has-error]=\"hasError\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (paste)=\"handlePasteEvent($event)\">\n\n@if(helperText && !hasError){\n<div class=\"input-label\">\n <kit-text-caption>{{ helperText }}</kit-text-caption>\n</div>\n}\n\n@if(hasError && effectiveErrorMessage){\n<div class=\"input-label\">\n <kit-text-caption color=\"danger\">{{ effectiveErrorMessage }}</kit-text-caption>\n</div>\n}","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KitInputTextComponent } from './input-text/input-text.component';\nimport { KitInputNumberComponent } from './input-number/input-number.component';\nimport { KitInputEmailComponent } from './input-email/input-email.component';\nimport { KitInputPasswordComponent } from './input-password/input-password.component';\nimport { KitInputOtpComponent } from './input-otp/input-otp.component';\nimport { KitInputSelectComponent } from './input-select/input-select.component';\nimport { KitInputPhoneComponent } from './input-phone/input-phone.component';\nimport { KitSelectItemDirective } from './input-select/kit-select-item.directive';\nimport { KitSelectItemActiveDirective } from './input-select/kit-select-item-active.directive';\nimport { KitInputTextareaComponent } from './input-textarea/input-textarea.component';\nimport { KitInputTimeComponent } from './input-time/input-time.component';\nimport { KitInputDateComponent } from './input-date/input-date.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n\n //Components\n KitInputTextComponent,\n KitInputTextareaComponent,\n KitInputNumberComponent,\n KitInputEmailComponent,\n KitInputPasswordComponent,\n KitInputOtpComponent,\n KitInputPhoneComponent,\n KitInputSelectComponent,\n KitSelectItemDirective,\n KitSelectItemActiveDirective,\n KitInputTimeComponent,\n KitInputDateComponent\n ],\n exports: [\n KitInputTextComponent,\n KitInputTextareaComponent,\n KitInputNumberComponent,\n KitInputEmailComponent,\n KitInputPasswordComponent,\n KitInputOtpComponent,\n KitInputPhoneComponent,\n KitInputSelectComponent,\n KitSelectItemDirective,\n KitSelectItemActiveDirective,\n KitInputTimeComponent,\n KitInputDateComponent\n ]\n})\nexport class KitInputModule { }","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'kit-gesture-detector',\n templateUrl: './gesture-detector.component.html',\n styleUrls: ['./gesture-detector.component.scss']\n})\nexport class KitGestureDetectorComponent {\n @Output() onTap = new EventEmitter<void>();\n @Output() onDoubleTap = new EventEmitter<void>();\n @Output() onSwipeLeft = new EventEmitter<void>();\n @Output() onSwipeRight = new EventEmitter<void>();\n @Output() onSwipeUp = new EventEmitter<void>();\n @Output() onSwipeDown = new EventEmitter<void>();\n @Output() onLongPress = new EventEmitter<void>();\n @Output() onPinch = new EventEmitter<number>();\n\n private touchStartTime = 0;\n private touchStartX = 0;\n private touchStartY = 0;\n private touchEndTime = 0;\n private touchEndX = 0;\n private touchEndY = 0;\n\n private lastTapTime = 0;\n private longPressTimeout: any;\n\n private initialPinchDistance = 0;\n\n onTouchStart(event: TouchEvent) {\n this.touchStartTime = new Date().getTime();\n this.touchStartX = event.touches[0].clientX;\n this.touchStartY = event.touches[0].clientY;\n\n if (event.touches.length === 2) {\n this.initialPinchDistance = this.getPinchDistance(event);\n }\n\n this.longPressTimeout = setTimeout(() => {\n this.onLongPress.emit();\n }, 500);\n }\n\n onTouchEnd(event: TouchEvent) {\n clearTimeout(this.longPressTimeout);\n\n this.touchEndTime = new Date().getTime();\n this.touchEndX = event.changedTouches[0].clientX;\n this.touchEndY = event.changedTouches[0].clientY;\n\n const tapDuration = this.touchEndTime - this.touchStartTime;\n if (tapDuration < 200) {\n const now = new Date().getTime();\n if (now - this.lastTapTime < 300) {\n this.onDoubleTap.emit();\n } else {\n this.onTap.emit();\n }\n this.lastTapTime = now;\n }\n\n this.handleSwipe();\n }\n\n onTouchMove(event: TouchEvent) {\n if (event.touches.length === 2) {\n const currentPinchDistance = this.getPinchDistance(event);\n const pinchScale = currentPinchDistance / this.initialPinchDistance;\n this.onPinch.emit(pinchScale);\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.touchStartTime = new Date().getTime();\n this.touchStartX = event.clientX;\n this.touchStartY = event.clientY;\n\n this.longPressTimeout = setTimeout(() => {\n this.onLongPress.emit();\n }, 500);\n }\n\n onMouseUp(event: MouseEvent) {\n clearTimeout(this.longPressTimeout);\n\n this.touchEndTime = new Date().getTime();\n this.touchEndX = event.clientX;\n this.touchEndY = event.clientY;\n\n const tapDuration = this.touchEndTime - this.touchStartTime;\n if (tapDuration < 200) {\n const now = new Date().getTime();\n if (now - this.lastTapTime < 300) {\n this.onDoubleTap.emit();\n } else {\n this.onTap.emit();\n }\n this.lastTapTime = now;\n }\n\n this.handleSwipe();\n }\n\n onMouseMove(event: MouseEvent) {\n // This is needed to track mouse movement for swipe\n }\n\n onWheel(event: WheelEvent) {\n if (event.ctrlKey) {\n event.preventDefault();\n const scale = event.deltaY > 0 ? 0.9 : 1.1;\n this.onPinch.emit(scale);\n }\n }\n\n private handleSwipe() {\n const deltaX = this.touchEndX - this.touchStartX;\n const deltaY = this.touchEndY - this.touchStartY;\n\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\n if (deltaX > 50) {\n this.onSwipeRight.emit();\n } else if (deltaX < -50) {\n this.onSwipeLeft.emit();\n }\n } else {\n if (deltaY > 50) {\n this.onSwipeDown.emit();\n } else if (deltaY < -50) {\n this.onSwipeUp.emit();\n }\n }\n }\n\n private getPinchDistance(event: TouchEvent): number {\n const touch1 = event.touches[0];\n const touch2 = event.touches[1];\n return Math.sqrt(\n Math.pow(touch2.clientX - touch1.clientX, 2) +\n Math.pow(touch2.clientY - touch1.clientY, 2)\n );\n }\n}","<div (touchstart)=\"onTouchStart($event)\"\n (touchend)=\"onTouchEnd($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (wheel)=\"onWheel($event)\">\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { KitGestureDetectorComponent } from './gesture-detector/gesture-detector.component';\n\n@NgModule({\n imports: [\n KitGestureDetectorComponent\n ],\n exports: [\n KitGestureDetectorComponent\n ]\n})\nexport class KitInteractorsModule { }","import { Component, HostListener } from '@angular/core';\n\n@Component({\n selector: 'kit-app-root',\n standalone: true,\n imports: [],\n templateUrl: './app-root.component.html',\n styleUrls: ['./app-root.component.scss']\n})\nexport class KitAppRootComponent {\n\n constructor() { }\n\n private recentlyFocused = false;\n private lastTouchMove = 0;\n\n @HostListener('window:focusin', ['$event'])\n onFocusIn(event: FocusEvent) {\n const target = event.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {\n this.recentlyFocused = true;\n setTimeout(() => this.recentlyFocused = false, 500);\n }\n }\n\n @HostListener('window:touchmove', [])\n onTouchMove() {\n const now = Date.now();\n\n // throttle to run at most once every 1000ms\n if (now - this.lastTouchMove < 1000) {\n return;\n }\n\n this.lastTouchMove = now;\n\n if (this.recentlyFocused) {\n return;\n }\n\n const activeElement = document.activeElement as HTMLElement;\n if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA')) {\n activeElement.blur();\n }\n }\n\n}\n","<div class=\"kit-app-root-container\">\n\n <ng-content select=\"kit-side-menu\"></ng-content>\n\n <div class=\"kit-main-content\">\n\n <ng-content select=\"kit-top-bar\"></ng-content>\n\n <div class=\"kit-content-container\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n</div>","import { Component, Host, HostBinding, Input } from '@angular/core';\n\n/**\n * A component that centers its child content both horizontally and vertically.\n * Similar to Flutter's Center widget, it provides an easy way to position \n * elements centrally without having to write custom CSS every time.\n */\n@Component({\n selector: 'kit-center',\n standalone: true,\n imports: [],\n templateUrl: './center.component.html',\n styleUrls: ['./center.component.scss']\n})\nexport class KitCenterComponent {\n /**\n * Controls whether the component should take up the full width of its parent.\n * Default is true.\n */\n @Input() widthFill: boolean = true;\n\n /**\n * Controls whether the component should take up the full height of its parent.\n * Default is true.\n */\n @Input() heightFill: boolean = true;\n\n @HostBinding('style.display')\n readonly display = 'flex';\n\n @HostBinding('style.justify-content')\n get justifyContent(): string {\n return this.widthFill ? 'center' : 'flex-start';\n }\n\n @HostBinding('style.align-items')\n get alignItems(): string {\n return this.heightFill ? 'center' : 'flex-start';\n }\n\n}","<ng-content></ng-content>","import { Component, HostBinding, Input } from '@angular/core';\nimport { MainAxisAlignment, CrossAxisAlignment } from '../layout-options';\nimport { SpacingValue } from '../layout-options';\n\n@Component({\n selector: 'kit-column',\n standalone: true,\n imports: [],\n templateUrl: './column.component.html',\n styleUrls: ['./column.component.scss']\n})\nexport class KitColumnComponent {\n // --- BASE STYLES ---\n @HostBinding('style.display')\n readonly display = 'flex';\n\n @HostBinding('style.flex-direction')\n readonly flexDirection = 'column'; // The key change for a column\n\n // --- INPUT-BASED STYLES ---\n /** Controls alignment along the main axis (vertical for column) */\n @Input() mainAxisAlignment: MainAxisAlignment = 'start';\n\n /** Controls alignment along the cross axis (horizontal for column) */\n @Input() crossAxisAlignment: CrossAxisAlignment = 'start';\n\n /** Controls the spacing between children */\n @Input() gap?: SpacingValue;\n\n /** Controls whether the column should wrap its children */\n @Input() wrap: boolean = false;\n\n /** Controls whether the column should take up the full width of its parent */\n @Input() fullWidth: boolean = false;\n\n /** Controls whether the column should take up the full height of its parent */\n @Input() fullHeight: boolean = false;\n\n @HostBinding('style.justify-content')\n get justifyContent(): string {\n const mapping: { [key in MainAxisAlignment]: string } = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly'\n };\n return mapping[this.mainAxisAlignment];\n }\n\n @HostBinding('style.align-items')\n get alignItems(): string {\n const mapping: { [key in CrossAxisAlignment]: string } = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch'\n };\n return mapping[this.crossAxisAlignment];\n }\n\n @HostBinding('style.flex-wrap')\n get flexWrap(): string {\n return this.wrap ? 'wrap' : 'nowrap';\n }\n\n @HostBinding('style.gap')\n get gapStyle(): string | null {\n return this.gap !== undefined ? `${this.gap}px` : null;\n }\n\n @HostBinding('style.width')\n get widthStyle(): string | null {\n return this.fullWidth ? '100%' : null;\n }\n\n @HostBinding('style.height')\n get heightStyle(): string | null {\n return this.fullHeight ? '100%' : null;\n }\n\n @HostBinding('style.flex')\n get flexStyle(): string | null {\n return this.fullHeight ? '1 1 0px' : null;\n }\n}","<ng-content></ng-content>","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kit-constrained-box',\n imports: [],\n templateUrl: './constrained-box.component.html',\n styleUrl: './constrained-box.component.scss'\n})\nexport class KitConstrainedBoxComponent {\n @Input() minWidth?: string;\n @Input() maxWidth?: string;\n @Input() minHeight?: string;\n @Input() maxHeight?: string;\n\n @HostBinding('style.minWidth')\n get minWidthStyle(): string | undefined {\n return this.minWidth;\n }\n\n @HostBinding('style.maxWidth')\n get maxWidthStyle(): string | undefined {\n return this.maxWidth;\n }\n\n @HostBinding('style.minHeight')\n get minHeightStyle(): string | undefined {\n return this.minHeight;\n }\n\n @HostBinding('style.maxHeight')\n get maxHeightStyle(): string | undefined {\n return this.maxHeight;\n }\n}\n","<ng-content></ng-content>","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n * A component that expands to fill available space in flex containers.\n * Similar to Flutter's Expanded widget, it allows a child to expand to fill\n * available space along the main axis of its parent flex container.\n */\n@Component({\n selector: 'kit-expanded',\n standalone: true,\n templateUrl: './expanded.component.html',\n styleUrls: ['./expanded.component.scss']\n})\nexport class KitExpandedComponent {\n /**\n * The flex factor that determines how much space this expanded element \n * takes relative to other expanded elements, similar to Flutter's flex property.\n * Default value is 1, meaning all expanded components will share space equally.\n * Higher values take proportionally more space.\n */\n @Input() flex: number = 1;\n\n /**\n * Apply the flex value as a style binding.\n * Uses the flex shorthand property for better control.\n */\n @HostBinding('style.flex')\n get flexValue(): string {\n // This combines:\n // - flex-grow: ${this.flex} (takes up available space proportionally)\n // - flex-shrink: 1 (allows shrinking if needed) \n // - flex-basis: 0px (start from zero size before growing)\n return `${this.flex} 1 0px`;\n }\n}","<div class=\"kit-expanded\">\n <ng-content></ng-content>\n</div>","import { Component, Input, OnInit, HostBinding } from '@angular/core';\nimport { SpacingValue } from '../layout-options';\n\n@Component({\n selector: 'kit-padding',\n standalone: true,\n imports: [],\n templateUrl: './padding.component.html',\n styleUrls: ['./padding.component.scss']\n})\nexport class KitPaddingComponent implements OnInit {\n @Input() top: SpacingValue = 4;\n @Input() bottom: SpacingValue = 4;\n @Input() left: SpacingValue = 4;\n @Input() right: SpacingValue = 4;\n @Input() x?: SpacingValue; // shorthand for left + right\n @Input() y?: SpacingValue; // shorthand for top + bottom\n @Input() all?: SpacingValue; // shorthand for all sides\n\n // Will hold the generated CSS classes\n spacingClasses: string[] = [];\n\n @HostBinding('class')\n get hostClasses() {\n return this.spacingClasses.join(' ');\n }\n\n ngOnInit(): void {\n this.updateSpacingClasses();\n }\n\n private updateSpacingClasses(): void {\n this.spacingClasses = [];\n\n // Handle individual sides\n if (this.top !== undefined) {\n this.spacingClasses.push(`pt-${this.top}`);\n }\n if (this.bottom !== undefined) {\n this.spacingClasses.push(`pb-${this.bottom}`);\n }\n if (this.left !== undefined) {\n this.spacingClasses.push(`pl-${this.left}`);\n }\n if (this.right !== undefined) {\n this.spacingClasses.push(`pr-${this.right}`);\n }\n\n // Handle shorthands (these take precedence)\n if (this.y !== undefined) {\n this.spacingClasses = this.spacingClasses.filter(c => !c.startsWith('pt-') && !c.startsWith('pb-'));\n this.spacingClasses.push(`py-${this.y}`);\n }\n\n if (this.x !== undefined) {\n this.spacingClasses = this.spacingClasses.filter(c => !c.startsWith('pl-') && !c.startsWith('pr-'));\n this.spacingClasses.push(`px-${this.x}`);\n }\n\n if (this.all !== undefined) {\n this.spacingClasses.push(`p-${this.all}`);\n }\n }\n}","<ng-content></ng-content>","import { Component, OnDestroy, Input, AfterViewInit, ElementRef, Renderer2, ContentChild, AfterContentInit, Output, EventEmitter, effect } from '@angular/core';\nimport { KitScreenService, ScreenSize } from '../../../services/screen/screen.service';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n selector: 'kit-page',\n standalone: true,\n imports: [],\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss']\n})\nexport class KitPageComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n\n @Input() pullDownThreshold: number = 0;\n\n /**\n * When true, prevents scrolling and makes the page fill the viewport height.\n * Useful for full-screen layouts like login pages where content should not scroll.\n */\n @Input() noScroll: boolean = false;\n\n /**\n * Content projection for custom pull-to-refresh template\n */\n @ContentChild('[slot=pull-to-refresh]', { read: ElementRef }) pullToRefreshTemplate?: ElementRef;\n\n /**\n * Whether a custom pull-to-refresh template is provided\n */\n public hasCustomPullToRefreshTemplate: boolean = false;\n\n /**\n * Emitted when pull-to-refresh percentage changes (0-100)\n */\n @Output() pullPercentageChange = new EventEmitter<number>();\n\n /**\n * Emitted when pull-to-refresh is triggered (when threshold is reached)\n */\n @Output() refreshTriggered = new EventEmitter<void>();\n\n pageContent!: HTMLElement;\n startY = 0;\n currentY = 0;\n\n /**\n * Flag to track if we're in pull-to-refresh mode\n */\n private isPullingToRefresh = false;\n\n /**\n * Pull to refresh percentage (0-100)\n */\n public pullPercentage: number = 0;\n\n /**\n * Whether the pull to refresh area is visible\n */\n public isPullToRefreshVisible: boolean = false;\n\n /**\n * Height of the pull to refresh area as a percentage of pull progress\n */\n public pullToRefreshHeightPercent: number = 0;\n\n /**\n * Current class for styling based on screen size\n */\n public pageClass: string = 'kit-page-small';\n\n private subscription: Subscription = new Subscription();\n\n constructor(private screenService: KitScreenService, private el: ElementRef, private renderer: Renderer2) {\n effect(() => {\n const size = this.screenService.currentSize(); // read the signal\n this.updatePageClass(size);\n });\n }\n\n ngAfterContentInit(): void {\n // Check if custom pull-to-refresh template is provided\n this.hasCustomPullToRefreshTemplate = !!this.pullToRefreshTemplate;\n }\n\n ngAfterViewInit(): void {\n this.pageContent = this.el.nativeElement.querySelector('.page-content');\n\n // Only add pull-to-refresh event listeners if threshold is greater than 0\n if (this.pullDownThreshold > 0) {\n this.renderer.listen(this.pageContent, 'touchstart', (event: TouchEvent) => this.onTouchStart(event));\n this.renderer.listen(this.pageContent, 'touchmove', (event: TouchEvent) => this.onTouchMove(event));\n this.renderer.listen(this.pageContent, 'touchend', () => this.onTouchEnd());\n this.renderer.listen(this.pageContent, 'scroll', () => this.onScroll());\n }\n }\n\n onTouchStart(event: TouchEvent) {\n // Always capture the starting position\n this.startY = event.touches[0].clientY;\n\n // Only enable pull-to-refresh if we're at the top of the page\n this.isPullingToRefresh = this.pageContent.scrollTop === 0;\n }\n\n onTouchMove(event: TouchEvent) {\n this.currentY = event.touches[0].clientY;\n\n // Only proceed if we're in pull-to-refresh mode, at the top, and pulling down\n if (this.isPullingToRefresh &&\n this.pageContent.scrollTop === 0 &&\n this.currentY - this.startY > 0) {\n\n event.preventDefault(); // prevent scroll while pulling\n\n // Calculate pull distance and cap at threshold\n const pullDistance = Math.min(this.currentY - this.startY, this.pullDownThreshold);\n\n // Calculate percentage (0-100) based on pull distance\n this.pullPercentage = Math.round((pullDistance / this.pullDownThreshold) * 100);\n\n // Emit percentage change\n this.pullPercentageChange.emit(this.pullPercentage);\n\n // Show pull to refresh area when pulling starts\n this.isPullToRefreshVisible = pullDistance > 0;\n\n // Calculate height percentage smoothly from 0 to 100 based on pull percentage\n // This creates a smooth transition without jumps\n this.pullToRefreshHeightPercent = this.pullPercentage;\n\n // Apply smooth drag effect - the content moves down with the pull\n this.pageContent.style.transform = `translateY(${pullDistance / 2}px)`;\n\n } else if (this.isPullingToRefresh && this.pageContent.scrollTop > 0) {\n // If we started pull-to-refresh but user scrolled down, exit pull-to-refresh mode\n this.isPullingToRefresh = false;\n this.resetPullToRefreshState();\n }\n }\n\n onTouchEnd() {\n // Only process touch end if we were in pull-to-refresh mode\n if (this.isPullingToRefresh) {\n const pullDistance = this.currentY - this.startY;\n\n // Trigger refresh only if pulled beyond threshold\n if (pullDistance > this.pullDownThreshold) {\n this.refreshTriggered.emit();\n // Call your refresh function here\n }\n\n // Animate content back to original position\n this.pageContent.style.transition = 'transform 0.3s ease';\n this.pageContent.style.transform = 'translateY(0)';\n setTimeout(() => {\n this.pageContent.style.transition = '';\n }, 300);\n }\n\n // Always reset state on touch end\n this.resetPullToRefreshState();\n }\n\n /**\n * Handle scroll events to exit pull-to-refresh mode if user scrolls\n */\n onScroll(): void {\n // If we're in pull-to-refresh mode but user has scrolled down, exit the mode\n if (this.isPullingToRefresh && this.pageContent.scrollTop > 0) {\n this.resetPullToRefreshState();\n }\n }\n\n /**\n * Resets all pull-to-refresh related state\n */\n private resetPullToRefreshState(): void {\n this.pullPercentage = 0;\n this.pullPercentageChange.emit(0);\n this.isPullToRefreshVisible = false;\n this.pullToRefreshHeightPercent = 0;\n this.isPullingToRefresh = false;\n this.startY = 0;\n this.currentY = 0;\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Updates the CSS class based on screen size\n */\n private updatePageClass(size: ScreenSize): void {\n switch (size) {\n case 'small':\n this.pageClass = 'kit-page-small';\n break;\n case 'medium':\n this.pageClass = 'kit-page-medium';\n break;\n case 'large':\n this.pageClass = 'kit-page-large';\n break;\n default:\n this.pageClass = 'kit-page-small';\n }\n }\n}\n","<div class=\"page-outer\">\n\n <div class=\"page-header\">\n <ng-content select=\"kit-top-bar\"></ng-content>\n </div>\n\n <div [class]=\"pageClass\">\n <!-- Pull to refresh indicator -->\n @if(pullDownThreshold > 0){\n <div class=\"pull-to-refresh\"\n [class.visible]=\"isPullToRefreshVisible\"\n [style.--pull-height-percent]=\"pullToRefreshHeightPercent\">\n\n <!-- Custom pull-to-refresh template -->\n <ng-content select=\"[slot=pull-to-refresh]\"></ng-content>\n\n <!-- Default pull-to-refresh template if no custom template provided -->\n @if(!hasCustomPullToRefreshTemplate){\n <div class=\"default-pull-to-refresh\">\n <div class=\"pull-icon\">\n <!-- Simple down arrow -->\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12 5v14m0 0l-6-6m6 6l6-6\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </div>\n }\n </div>\n }\n\n <div class=\"page-content\"\n [class.no-scroll]=\"noScroll\">\n <div class=\"page-content-wrapper\">\n <div class=\"page-inner\"\n [class.no-scroll]=\"noScroll\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n\n <div class=\"page-footer\">\n <ng-content select=\"kit-bottom-bar\"></ng-content>\n </div>\n\n </div>","import { Component, HostBinding, Input } from '@angular/core';\nimport { MainAxisAlignment, CrossAxisAlignment } from '../layout-options';\nimport { SpacingValue } from '../layout-options';\n\n@Component({\n selector: 'kit-row',\n standalone: true,\n imports: [],\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss']\n})\nexport class KitRowComponent {\n // --- BASE STYLES ---\n @HostBinding('style.display')\n readonly display = 'flex';\n\n @HostBinding('style.flex-direction')\n readonly flexDirection = 'row';\n\n // --- INPUT-BASED STYLES ---\n @Input() mainAxisAlignment: MainAxisAlignment = 'start';\n @Input() crossAxisAlignment: CrossAxisAlignment = 'center';\n @Input() gap?: SpacingValue;\n @Input() wrap: boolean = false;\n @Input() fullWidth: boolean = false;\n @Input() fullHeight: boolean = false;\n\n @HostBinding('style.justify-content')\n get justifyContent(): string {\n const mapping: { [key in MainAxisAlignment]: string } = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly'\n };\n return mapping[this.mainAxisAlignment];\n }\n\n @HostBinding('style.align-items')\n get alignItems(): string {\n const mapping: { [key in CrossAxisAlignment]: string } = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch'\n };\n return mapping[this.crossAxisAlignment];\n }\n\n @HostBinding('style.flex-wrap')\n get flexWrap(): string {\n return this.wrap ? 'wrap' : 'nowrap';\n }\n\n @HostBinding('style.gap')\n get gapStyle(): string | null {\n return this.gap !== undefined ? `${this.gap}px` : null;\n }\n\n @HostBinding('style.width')\n get widthStyle(): string | null {\n return this.fullWidth ? '100%' : null;\n }\n\n @HostBinding('style.height')\n get heightStyle(): string | null {\n return this.fullHeight ? '100%' : null;\n }\n}","<ng-content></ng-content>","import { NgStyle } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * A component that creates a box with a specified width and height.\n * Similar to Flutter's SizedBox widget, it provides a simple way to \n * create space or size constraints in layouts.\n */\n@Component({\n selector: 'kit-sized-box',\n standalone: true,\n imports: [NgStyle],\n templateUrl: './sized-box.component.html',\n styleUrls: ['./sized-box.component.scss']\n})\nexport class KitSizedBoxComponent implements OnChanges {\n /**\n * The width of the box in pixels.\n */\n @Input() width?: number;\n\n /**\n * The height of the box in pixels.\n */\n @Input() height?: number;\n\n /**\n * Generated style object based on inputs\n */\n boxStyles: { [key: string]: string } = {};\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateStyles();\n }\n\n private updateStyles(): void {\n this.boxStyles = {};\n\n if (this.width !== undefined) {\n this.boxStyles['width'] = `${this.width}px`;\n }\n\n if (this.height !== undefined) {\n this.boxStyles['height'] = `${this.height}px`;\n }\n }\n}","<div class=\"kit-sized-box\" [ngStyle]=\"boxStyles\">\n <ng-content></ng-content>\n</div>","import { Component, Input, HostBinding } from '@angular/core';\nimport { SpacingValue } from '../layout-options';\n\n/**\n * A component that creates empty space, similar to Flutter's Spacer widget.\n * Used within flex containers to push elements apart or create fixed spacing.\n */\n@Component({\n selector: 'kit-spacer',\n standalone: true,\n templateUrl: './spacer.component.html',\n styleUrls: ['./spacer.component.scss']\n})\nexport class KitSpacerComponent {\n /**\n * The flex value for distributing space in flex containers.\n * Default is 1, similar to Flutter's default.\n */\n @Input() flex: number = 1;\n\n /**\n * Fixed size value that determines the size of this spacer.\n * Uses the same spacing scale as margin and padding components.\n */\n @Input() size?: SpacingValue = 16;\n\n /**\n * Apply the flex value as a style binding when no fixed size is provided.\n * When size is provided, it takes precedence over flex.\n */\n @HostBinding('style')\n get spacerStyle(): { [key: string]: string } {\n if (this.size !== undefined) {\n return {\n width: `${this.size}px`,\n height: `${this.size}px`,\n flex: 'none'\n };\n }\n\n return {\n flex: `${this.flex}`\n };\n }\n}","<!-- Spacer component - intentionally empty -->","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kit-sticky-container',\n imports: [],\n templateUrl: './sticky-container.component.html',\n styleUrl: './sticky-container.component.scss'\n})\nexport class KitStickyContainerComponent {\n\n}\n","<div class=\"kit-sticky-container\">\n <ng-content></ng-content>\n</div>","\nimport { Component, Input, HostBinding } from '@angular/core';\nimport { ButtonColor } from '../../button/button-options';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'kit-divider',\n standalone: true,\n imports: [],\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss']\n})\nexport class KitDividerComponent {\n @Input() orientation: DividerOrientation = 'horizontal';\n @Input() color: ButtonColor | string = 'var(--kit-divider-default-color, #c8c8c8)';\n @Input() thickness: string = 'var(--kit-divider-default-thickness, 1px)';\n\n @HostBinding('style.width')\n get width(): string {\n return this.orientation === 'horizontal' ? '100%' : this.thickness;\n }\n\n @HostBinding('style.height')\n get height(): string {\n return this.orientation === 'vertical' ? '100%' : this.thickness;\n }\n\n @HostBinding('style.background-color')\n get backgroundColor(): string {\n return this.color;\n }\n\n // Add spacing directly on the host\n @HostBinding('style.margin')\n get margin(): string {\n return this.orientation === 'horizontal' ? 'var(--kit-divider-horizontal-margin, 0 16px)' : 'var(--kit-divider-vertical-margin, 16px 0)';\n }\n}\n","","import { Component, Input } from '@angular/core';\nimport { Alignment } from '../layout-options';\n\n@Component({\n selector: 'kit-stack',\n templateUrl: './stack.component.html',\n styleUrls: ['./stack.component.scss']\n})\nexport class StackComponent {\n @Input() alignment: Alignment = 'top-start';\n @Input() fit: 'loose' | 'expand' = 'loose';\n @Input() clip: boolean = true;\n}\n","<div [class]=\"'fit-' + fit\" [class]=\"'alignment-' + alignment\" [class.clip]=\"clip\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kit-container',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss']\n})\nexport class KitContainerComponent {\n\n // Sizing\n @Input() width?: string;\n @Input() height?: string;\n @Input() minWidth?: string;\n @Input() minHeight?: string;\n @Input() maxWidth?: string;\n @Input() maxHeight?: string;\n\n // Mirror sizing inputs to the host element so percentage values behave as expected\n @HostBinding('style.width') get hostWidth(): string | undefined {\n return this.width;\n }\n\n @HostBinding('style.height') get hostHeight(): string | undefined {\n return this.height;\n }\n\n @HostBinding('style.min-width') get hostMinWidth(): string | undefined {\n return this.minWidth;\n }\n\n @HostBinding('style.min-height') get hostMinHeight(): string | undefined {\n return this.minHeight;\n }\n\n @HostBinding('style.max-width') get hostMaxWidth(): string | undefined {\n return this.maxWidth;\n }\n\n @HostBinding('style.max-height') get hostMaxHeight(): string | undefined {\n return this.maxHeight;\n }\n\n // Spacing\n @Input() padding?: string;\n @Input() margin?: string;\n\n // Text color\n @Input() color?: string;\n\n // Box styles\n @Input() borderRadius?: string;\n @Input() boxShadow?: string;\n @Input() border?: string;\n\n // Background\n @Input() backgroundColor?: string;\n @Input() backgroundImage?: string;\n}","<div [style.width]=\"width\"\n [style.height]=\"height\"\n [style.min-width]=\"minWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-width]=\"maxWidth\"\n [style.max-height]=\"maxHeight\"\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.color]=\"color\"\n [style.border-radius]=\"borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.background-color]=\"backgroundColor\"\n [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : null\">\n <ng-content></ng-content>\n</div>","import {\n Component,\n OnDestroy,\n Output,\n EventEmitter,\n Inject,\n PLATFORM_ID,\n AfterViewInit,\n Input\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\n\n/**\n * ScrollEvent interface defines the shape of the emitted scroll data.\n */\nexport interface ScrollEvent {\n /**\n * Current vertical scroll position in pixels.\n */\n scrollY: number;\n /**\n * Direction of the scroll: 'up', 'down', or 'none'.\n */\n scrollDirection: 'up' | 'down' | 'none';\n /**\n * Change in scroll position since the last event.\n */\n scrollDelta: number;\n /**\n * Indicates if the user is currently scrolling.\n */\n isScrolling: boolean;\n /**\n * Percentage of the total scrollable area that has been scrolled.\n */\n scrollPercentage: number;\n}\n\n@Component({\n selector: 'kit-top-bar',\n standalone: true,\n imports: [],\n templateUrl: './top-bar.component.html',\n styleUrls: ['./top-bar.component.scss']\n})\nexport class KitTopBarComponent implements AfterViewInit, OnDestroy {\n\n /**\n * Optional input to control debounce time between scroll stop events.\n */\n @Input() debounceTime: number = 50;\n\n /**\n * Emits detailed scroll information to consumers of this component.\n */\n @Output() scrollChange = new EventEmitter<ScrollEvent>();\n\n private scrollTargetEl?: HTMLElement; // The element we're tracking for scroll events\n private lastScrollY = 0; // Tracks previous scroll position for delta/direction\n private scrollTimeout: any; // Timer to detect scroll end\n private isScrolling = false; // Flag to indicate scroll activity\n\n private routerSub?: Subscription;\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object, private router: Router) { }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.routerSub = this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n // Defer scroll target lookup slightly to ensure the page content is rendered\n setTimeout(() => {\n this.findAndAttachScrollListener();\n }, 100);\n }\n });\n }\n\n /**\n * Attempts to find <kit-page> and its .page-content container to attach the scroll listener.\n * Retries a few times in case the DOM isn't fully rendered yet.\n */\n private findAndAttachScrollListener(retryCount = 0): void {\n const maxRetries = 10;\n\n const kitPage = document.querySelector<HTMLElement>('kit-page');\n if (!kitPage) {\n if (retryCount < maxRetries) {\n // Retry after a short delay\n setTimeout(() => {\n this.findAndAttachScrollListener(retryCount + 1);\n }, 200);\n return;\n }\n console.warn('kit-top-bar: Cannot find <kit-page> element after multiple attempts.');\n return;\n }\n\n const pageContent = kitPage.querySelector<HTMLElement>('.page-content');\n if (!pageContent) {\n if (retryCount < maxRetries) {\n setTimeout(() => {\n this.findAndAttachScrollListener(retryCount + 1);\n }, 200);\n return;\n }\n console.warn('kit-top-bar: Cannot find .page-content within <kit-page> after multiple attempts.');\n return;\n }\n\n if (this.scrollTargetEl) {\n this.scrollTargetEl.removeEventListener('scroll', this.onScroll.bind(this));\n this.scrollTargetEl = undefined;\n }\n\n this.scrollTargetEl = pageContent;\n // Attach scroll listener with passive mode for performance\n this.scrollTargetEl.addEventListener('scroll', this.onScroll.bind(this), { passive: true });\n\n // Emit the initial scroll state right away\n this.emitScrollEvent();\n }\n\n /**\n * Called whenever the scroll container emits a scroll event.\n * Debounces to detect when scrolling stops.\n */\n private onScroll(): void {\n if (!this.scrollTargetEl) return;\n\n this.isScrolling = true;\n this.emitScrollEvent();\n\n // Clear previous debounce timer\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n\n // Set a timer to mark the end of scrolling\n this.scrollTimeout = setTimeout(() => {\n this.isScrolling = false;\n this.emitScrollEvent();\n }, this.debounceTime);\n }\n\n /**\n * Calculates scroll data and emits the scrollChange event.\n */\n private emitScrollEvent(): void {\n if (!isPlatformBrowser(this.platformId) || !this.scrollTargetEl) return;\n\n const currentScrollY = this.scrollTargetEl.scrollTop;\n const scrollDelta = currentScrollY - this.lastScrollY;\n const maxScrollY = this.scrollTargetEl.scrollHeight - this.scrollTargetEl.clientHeight;\n\n const scrollPercentage = maxScrollY > 0\n ? (currentScrollY / maxScrollY) * 100\n : 0;\n\n let scrollDirection: 'up' | 'down' | 'none' = 'none';\n if (scrollDelta > 0) {\n scrollDirection = 'down';\n } else if (scrollDelta < 0) {\n scrollDirection = 'up';\n }\n\n const scrollEvent: ScrollEvent = {\n scrollY: currentScrollY,\n scrollDirection,\n scrollDelta,\n isScrolling: this.isScrolling,\n scrollPercentage: Math.min(100, Math.max(0, scrollPercentage))\n };\n\n this.scrollChange.emit(scrollEvent);\n this.lastScrollY = currentScrollY;\n }\n\n ngOnDestroy(): void {\n // Clean up scroll detection timeout\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n\n // Detach scroll listener\n if (this.scrollTargetEl) {\n this.scrollTargetEl.removeEventListener('scroll', this.onScroll.bind(this));\n }\n\n if (this.routerSub) {\n this.routerSub.unsubscribe();\n }\n }\n}\n","<div class=\"kit-top-bar\">\n <ng-content></ng-content>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kit-bottom-bar',\n imports: [],\n templateUrl: './bottom-bar.component.html',\n styleUrl: './bottom-bar.component.scss'\n})\nexport class KitBottomBarComponent {\n\n}\n","<div class=\"kit-bottom-bar\">\n <ng-content></ng-content>\n</div>","import { Injectable, signal, WritableSignal, Signal } from '@angular/core';\n\ntype SideMenuMode = 'overlay' | 'side';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KitSideMenuService {\n // Internal writable signals\n private _isOpen: WritableSignal<boolean> = signal<boolean>(false);\n private _mode: WritableSignal<SideMenuMode> = signal<SideMenuMode>('side');\n private _width: WritableSignal<string> = signal<string>('280px');\n\n // Exposed readonly signals for consumers to read current state.\n public readonly isOpen = this._isOpen.asReadonly();\n public readonly mode = this._mode.asReadonly();\n public readonly width = this._width.asReadonly();\n\n constructor() { }\n\n /**\n * Toggle the menu open/close state\n */\n toggle(): void {\n this._isOpen.update(v => !v);\n }\n\n /**\n * Force open the menu\n */\n open(): void {\n this._isOpen.set(true);\n }\n\n /**\n * Force close the menu\n */\n close(): void {\n this._isOpen.set(false);\n }\n\n /**\n * Set the menu display mode\n */\n setMode(mode: SideMenuMode): void {\n this._mode.set(mode);\n }\n\n /**\n * Set the menu width\n */\n setWidth(width: string): void {\n this._width.set(width);\n }\n\n}","import { Component, Input, OnInit, OnChanges, SimpleChanges, effect } from '@angular/core';\nimport { KitSideMenuService } from './side-menu.service';\n\ntype SideMenuMode = 'overlay' | 'side';\n\n@Component({\n selector: 'kit-side-menu',\n standalone: true,\n imports: [],\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.scss']\n})\nexport class KitSideMenuComponent implements OnInit, OnChanges {\n\n isOpen = false;\n mode: SideMenuMode = 'overlay';\n width = '280px';\n\n @Input() initialIsOpen?: boolean;\n @Input() initialMode?: SideMenuMode;\n @Input() initialWidth?: string;\n\n constructor(private sideMenuService: KitSideMenuService) {\n // Keep local state in sync with service signals using an effect (no RxJS subscriptions)\n effect(() => {\n this.isOpen = this.sideMenuService.isOpen();\n this.mode = this.sideMenuService.mode();\n this.width = this.sideMenuService.width();\n });\n }\n\n ngOnInit(): void {\n\n // If the initial inputs are provided, set the service signals directly.\n if (this.initialIsOpen !== undefined) {\n if (this.initialIsOpen) {\n this.sideMenuService.open();\n } else {\n this.sideMenuService.close();\n }\n } else {\n // default: open the menu\n this.sideMenuService.open();\n this.initialIsOpen = true;\n }\n\n if (this.initialMode !== undefined) {\n this.sideMenuService.setMode(this.initialMode);\n }\n\n if (this.initialWidth !== undefined) {\n this.sideMenuService.setWidth(this.initialWidth);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['initialIsOpen'] && this.initialIsOpen !== undefined) {\n if (changes['initialIsOpen'].currentValue) {\n this.sideMenuService.open();\n this.initialIsOpen = true;\n } else {\n this.sideMenuService.close();\n this.initialIsOpen = false;\n }\n }\n if (changes['initialMode'] && this.initialMode !== undefined) {\n this.sideMenuService.setMode(this.initialMode);\n }\n if (changes['initialWidth'] && this.initialWidth !== undefined) {\n this.sideMenuService.setWidth(this.initialWidth);\n }\n }\n\n close(): void {\n this.sideMenuService.close();\n }\n}","@if(isOpen && mode === 'overlay'){\n<div class=\"overlay\"\n (click)=\"close()\"></div>\n}\n\n<aside class=\"side-menu\"\n [class.open]=\"isOpen\"\n [class.side-mode]=\"mode === 'side'\"\n [style.width]=\"width\">\n\n <div class=\"side-menu-content\">\n\n <ng-content></ng-content>\n\n </div>\n\n</aside>","import { NgModule } from '@angular/core';\nimport { KitPaddingComponent } from './padding/padding.component';\nimport { KitSpacerComponent } from './spacer/spacer.component';\nimport { KitRowComponent } from './row/row.component';\nimport { KitColumnComponent } from './column/column.component';\nimport { KitExpandedComponent } from './expanded/expanded.component';\nimport { KitCenterComponent } from './center/center.component';\nimport { KitSizedBoxComponent } from './sized-box/sized-box.component';\nimport { KitPageComponent } from './page/page.component';\nimport { KitAppRootComponent } from './app-root/app-root.component';\nimport { KitStickyContainerComponent } from './sticky-container/sticky-container.component';\nimport { KitConstrainedBoxComponent } from './constrained-box/constrained-box.component';\nimport { KitDividerComponent } from './divider/divider.component';\nimport { StackComponent } from './stack/stack.component';\nimport { KitContainerComponent } from './container/container.component';\nimport { KitBottomBarComponent } from './bottom-bar/bottom-bar.component';\nimport { KitTopBarComponent } from './top-bar/top-bar.component';\nimport { KitSideMenuComponent } from './side-menu/side-menu.component';\n@NgModule({\n imports: [\n KitPaddingComponent,\n KitSpacerComponent,\n KitRowComponent,\n KitColumnComponent,\n KitExpandedComponent,\n KitCenterComponent,\n KitSizedBoxComponent,\n KitConstrainedBoxComponent,\n KitPageComponent,\n KitAppRootComponent,\n KitStickyContainerComponent,\n KitDividerComponent,\n StackComponent,\n KitContainerComponent,\n KitBottomBarComponent,\n KitTopBarComponent,\n KitSideMenuComponent\n ],\n exports: [\n KitPaddingComponent,\n KitSpacerComponent,\n KitRowComponent,\n KitColumnComponent,\n KitExpandedComponent,\n KitConstrainedBoxComponent,\n KitCenterComponent,\n KitSizedBoxComponent,\n KitPageComponent,\n KitAppRootComponent,\n KitStickyContainerComponent,\n KitDividerComponent,\n StackComponent,\n KitContainerComponent,\n KitBottomBarComponent,\n KitTopBarComponent,\n KitSideMenuComponent\n ]\n})\nexport class KitLayoutModule { }","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kitImageLoading]'\n})\nexport class KitImageLoadingDirective { }\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kitImageError]'\n})\nexport class KitImageErrorDirective { }\n","import { NgOptimizedImage, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { KitImageLoadingDirective } from './image-loading.directive';\nimport { KitImageErrorDirective } from './image-error.directive';\n\n@Component({\n selector: 'kit-image',\n imports: [NgOptimizedImage, NgTemplateOutlet],\n templateUrl: './image.component.html',\n styleUrl: './image.component.scss'\n})\nexport class KitImageComponent {\n\n // Allow missing/empty src. If src is empty we won't render the <img>\n // which avoids passing undefined/empty values to NgOptimizedImage.\n private _src: string = '';\n\n @Input()\n set src(value: string | undefined) {\n this._src = value ?? '';\n this.updateStateForSrc();\n }\n\n get src(): string {\n return this._src;\n }\n @Input() alt: string = '';\n @Input() width: string | number = 'auto';\n @Input() height: string | number = 'auto';\n @Input() borderRadius: string | number = 0;\n @Input() fit: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down' = 'cover';\n @Input() priority: boolean = false; // loads eagerly if true\n\n @Output() loaded = new EventEmitter<void>();\n @Output() error = new EventEmitter<void>();\n\n @ContentChild(KitImageLoadingDirective, { read: TemplateRef }) activeTemplate!: TemplateRef<any>;\n @ContentChild(KitImageErrorDirective, { read: TemplateRef }) inactiveTemplate!: TemplateRef<any>;\n\n isLoading = true;\n hasError = false;\n\n onLoad() {\n this.isLoading = false;\n this.hasError = false;\n this.loaded.emit();\n }\n\n onError() {\n this.isLoading = false;\n this.hasError = true;\n this.error.emit();\n }\n\n private updateStateForSrc() {\n // If there is no src we shouldn't show loading or error states.\n if (!this._src) {\n this.isLoading = false;\n this.hasError = false;\n } else {\n // New source -> show loading until load or error events fire\n this.isLoading = true;\n this.hasError = false;\n }\n }\n\n get hasCustomLoading() {\n return this.activeTemplate !== undefined;\n }\n\n get hasCustomError() {\n return this.inactiveTemplate !== undefined;\n }\n\n get containerWidth() {\n if (typeof this.width === 'number') {\n return `${this.width}px`;\n }\n if (typeof this.width === 'string' && !isNaN(Number(this.width))) {\n return `${this.width}px`;\n }\n return this.width;\n }\n\n get containerHeight() {\n if (typeof this.height === 'number') {\n return `${this.height}px`;\n }\n if (typeof this.height === 'string' && !isNaN(Number(this.height))) {\n return `${this.height}px`;\n }\n return this.height;\n }\n\n get containerBorderRadius() {\n if (typeof this.borderRadius === 'number') {\n return `${this.borderRadius}px`;\n }\n if (typeof this.borderRadius === 'string' && !isNaN(Number(this.borderRadius))) {\n return `${this.borderRadius}px`;\n }\n return this.borderRadius;\n }\n}\n","<div class=\"image-container\"\n [style.width]=\"containerWidth\"\n [style.height]=\"containerHeight\"\n [style.border-radius]=\"containerBorderRadius\">\n\n @if(isLoading){\n\n @if(hasCustomLoading){\n <ng-container *ngTemplateOutlet=\"activeTemplate\"></ng-container>\n }\n @else{\n <div class=\"loading\"></div>\n }\n }\n\n @if(hasError){\n\n @if(hasCustomError){\n <ng-container *ngTemplateOutlet=\"inactiveTemplate\"></ng-container>\n }\n @else{\n <div class=\"error\"></div>\n }\n }\n\n @if(!hasError){\n @if(src){\n <img [ngSrc]=\"src\"\n [alt]=\"alt\"\n fill\n [priority]=\"priority\"\n [style.object-fit]=\"fit\"\n (load)=\"onLoad()\"\n (error)=\"onError()\" />\n }\n }\n\n</div>","import { Component, Input } from '@angular/core';\nimport { KitImageComponent } from '../image/image.component';\n\n@Component({\n selector: 'kit-avatar',\n imports: [KitImageComponent],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss']\n})\nexport class KitAvatarComponent {\n @Input() src: string = '';\n @Input() alt: string = '';\n @Input() size: number = 40;\n @Input() borderRadius: string | number | undefined;\n\n get containerBorderRadius() {\n if (this.borderRadius) {\n if (typeof this.borderRadius === 'number') {\n return `${this.borderRadius}px`;\n }\n if (typeof this.borderRadius === 'string' && !isNaN(Number(this.borderRadius))) {\n return `${this.borderRadius}px`;\n }\n return this.borderRadius;\n }\n return 'var(--kit-avatar-border-radius)';\n }\n}","<kit-image [src]=\"src\"\n [alt]=\"alt\"\n [width]=\"size\"\n [height]=\"size\"\n [borderRadius]=\"containerBorderRadius\"></kit-image>","import { NgModule } from '@angular/core';\nimport { KitImageComponent } from './image/image.component';\nimport { KitImageLoadingDirective } from './image/image-loading.directive';\nimport { KitImageErrorDirective } from './image/image-error.directive';\nimport { KitAvatarComponent } from './avatar/avatar.component';\n\n@NgModule({\n imports: [\n KitImageComponent,\n KitImageLoadingDirective,\n KitImageErrorDirective,\n KitAvatarComponent\n ],\n exports: [\n KitImageComponent,\n KitImageLoadingDirective,\n KitImageErrorDirective,\n KitAvatarComponent\n ]\n})\nexport class KitMediaModule { }\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\n\n@Injectable({ providedIn: 'root' })\nexport class KitNavigationService {\n\n /** Internal writable signal that mirrors the browser's route history */\n private _navigationHistory: WritableSignal<string[]> = signal<string[]>([]);\n /** Public read-only signal for consumers */\n navigationHistory = this._navigationHistory.asReadonly();\n\n /** Internal full history array and current index to mirror browser back/forward behavior */\n private fullHistory: string[] = [];\n private currentIndex = -1;\n\n /** Internal writable view stack (UI-level screens). Does not affect browser history or persist reloads and navigations */\n private _viewStack: WritableSignal<string[]> = signal<string[]>([]);\n /** Public read-only view stack for consumers */\n viewStack = this._viewStack.asReadonly();\n\n constructor(private router: Router) {\n // We'll listen to NavigationStart to detect the trigger (popstate vs imperative)\n // and NavigationEnd to update our mirrored history accordingly.\n let lastTrigger: NavigationStart['navigationTrigger'] | null = null;\n\n // Initialize with the current router URL so the history starts with the landing page\n const initialUrl = this.router.url || window.location.pathname + window.location.search + window.location.hash;\n this.fullHistory = [initialUrl];\n this.currentIndex = 0;\n this._navigationHistory.set(this.fullHistory.slice(0, this.currentIndex + 1));\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n lastTrigger = event.navigationTrigger;\n return;\n }\n\n if (event instanceof NavigationEnd) {\n const url = event.urlAfterRedirects;\n\n if (lastTrigger === 'popstate') {\n // The browser back/forward button was used. Move the index to match the URL.\n const idx = this.fullHistory.indexOf(url);\n if (idx !== -1) {\n this.currentIndex = idx;\n } else {\n // Unknown URL (maybe external), reset history to this URL\n this.fullHistory = [url];\n this.currentIndex = 0;\n }\n } else {\n // Imperative navigation: push a new entry and drop any forward entries\n if (this.currentIndex < this.fullHistory.length - 1) {\n this.fullHistory = this.fullHistory.slice(0, this.currentIndex + 1);\n }\n\n const last = this.fullHistory[this.fullHistory.length - 1];\n if (last !== url) {\n this.fullHistory.push(url);\n this.currentIndex = this.fullHistory.length - 1;\n }\n }\n\n // Mirror the visible history up to the current index\n this._navigationHistory.set(this.fullHistory.slice(0, this.currentIndex + 1));\n\n // Reset view stack whenever a real route change occurs\n this.clearViewStack();\n\n lastTrigger = null;\n }\n });\n }\n\n /**\n * Navigate to a new route.\n * Adds a new entry to the navigation history and clears the view stack.\n * @param url The route path to navigate to.\n */\n navigateTo(url: string) {\n this.router.navigateByUrl(url);\n }\n\n /**\n * Navigate forward in browser history.\n * Clears the view stack.\n */\n navigateForward() {\n window.history.forward();\n this.clearViewStack();\n }\n\n /**\n * Navigate backward in browser history.\n * Clears the view stack.\n */\n navigateBack() {\n window.history.back();\n this.clearViewStack();\n }\n\n /**\n * Push a new view onto the view stack.\n * This does not change the browser URL or history.\n * Uses skipLocationChange to navigate internally without affecting the address bar.\n * @param url The view path to push onto the stack.\n */\n pushView(url: string) {\n this._viewStack.update(stack => [...stack, url]);\n this.router.navigateByUrl(url, { skipLocationChange: true });\n }\n\n /**\n * Pop the top view from the view stack.\n * Navigates back to the previous view in the stack, if any.\n * This does not affect browser history or URL.\n */\n popView() {\n const stack = this._viewStack();\n if (stack.length <= 1) return;\n\n const newStack = stack.slice(0, -1);\n this._viewStack.set(newStack);\n\n const previousView = newStack[newStack.length - 1];\n this.router.navigateByUrl(previousView, { skipLocationChange: true });\n }\n\n /**\n * Clears the view stack completely.\n */\n clearViewStack() {\n this._viewStack.set([]);\n }\n\n}\n","import { Component } from '@angular/core';\nimport { KitNavigationService } from '../../../services/navigation/navigation.service';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'kit-router-outlet',\n imports: [RouterOutlet],\n templateUrl: './router-outlet.component.html',\n styleUrl: './router-outlet.component.scss',\n})\nexport class KitRouterOutletComponent {\n\n constructor(private kitNavigationService: KitNavigationService) { }\n}\n","<router-outlet></router-outlet>","import { Component, Input } from '@angular/core';\n\n/**\n * TabContentComponent represents the content of a single tab.\n * Uses the CSS hidden display mode for better performance.\n */\n@Component({\n selector: 'kit-tab-content',\n templateUrl: './tab-content.component.html',\n styleUrls: ['./tab-content.component.scss'],\n standalone: true,\n imports: []\n})\nexport class KitTabContentComponent {\n /** Title to display in the tab header */\n @Input() title: string = '';\n\n /** Whether this tab is currently active */\n @Input() active = false;\n}\n","<div [hidden]=\"!active\"\n class=\"tab-content-inner\">\n\n <ng-content></ng-content>\n\n</div>","import { Component, ContentChildren, Input, QueryList, AfterContentInit, OnDestroy, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KitTabContentComponent } from '../tab-content/tab-content.component';\n\n\ninterface TabItem {\n index: number;\n title: string;\n active?: boolean;\n}\n\n@Component({\n selector: 'kit-tab-view',\n templateUrl: './tab-view.component.html',\n styleUrls: ['./tab-view.component.scss'],\n standalone: true,\n imports: []\n})\nexport class KitTabViewComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n\n @ContentChildren(KitTabContentComponent) tabContents!: QueryList<KitTabContentComponent>;\n @ViewChild('tabHeader') tabHeaderElement!: ElementRef;\n\n @Input() tabs: TabItem[] = [];\n\n activeTabIndex: number = 0;\n generatedTabs: TabItem[] = [];\n\n private tabsChangesSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n // Generate tabs from child tab-content components\n this.generateTabsFromContent();\n\n // Listen for changes in the tab-content children\n this.tabsChangesSubscription = this.tabContents.changes.subscribe(() => {\n this.generateTabsFromContent();\n });\n\n // If tabs were provided as input, use them instead\n if (this.tabs && this.tabs.length > 0) {\n this.useProvidedTabs();\n }\n }\n\n ngAfterViewInit() {\n // Once the view is initialized, make sure the active tab is scrolled into view\n setTimeout(() => {\n this.scrollActiveTabIntoView();\n });\n }\n\n ngOnDestroy() {\n if (this.tabsChangesSubscription) {\n this.tabsChangesSubscription.unsubscribe();\n }\n }\n\n selectTab(tabIndex: number) {\n // Update active state in tabs array\n const tabsToUse = this.tabs.length > 0 ? this.tabs : this.generatedTabs;\n\n tabsToUse.forEach(tab => {\n tab.active = tab.index === tabIndex;\n });\n\n this.activeTabIndex = tabIndex;\n this.updateTabContentState();\n\n // Scroll the selected tab into view\n this.scrollActiveTabIntoView();\n }\n\n // Scroll active tab into view (important for mobile)\n private scrollActiveTabIntoView() {\n setTimeout(() => {\n const headerElement = document.querySelector('.kit-tab-header');\n if (!headerElement) return;\n\n const activeTabElement = headerElement.querySelector('.kit-tab-item--active') as HTMLElement;\n if (!activeTabElement) return;\n\n // Calculate position to center the tab in view\n const scrollLeft = activeTabElement.offsetLeft - (headerElement.clientWidth / 2) + (activeTabElement.offsetWidth / 2);\n headerElement.scrollTo({ left: Math.max(0, scrollLeft), behavior: 'smooth' });\n });\n }\n\n private generateTabsFromContent() {\n if (this.tabContents && this.tabContents.length > 0) {\n this.generatedTabs = this.tabContents.map((tabContent, index) => {\n const title = tabContent.title || `Tab ${index + 1}`;\n return {\n index: index,\n title: title,\n active: index === 0 && this.activeTabIndex === 0\n };\n });\n\n // Set first tab as active if none is active yet\n if (this.generatedTabs.length > 0) {\n this.activeTabIndex = 0;\n this.generatedTabs[0].active = true;\n }\n\n this.updateTabContentState();\n }\n }\n\n private useProvidedTabs() {\n // Set the first tab as active if none is active\n if (this.tabs.length && !this.tabs.some(tab => tab.active)) {\n this.tabs[0].active = true;\n this.activeTabIndex = this.tabs[0].index;\n } else {\n const activeTab = this.tabs.find(tab => tab.active);\n if (activeTab) {\n this.activeTabIndex = activeTab.index;\n }\n }\n\n this.updateTabContentState();\n }\n\n private updateTabContentState() {\n if (this.tabContents) {\n this.tabContents.forEach((tabContent, index) => {\n tabContent.active = index === this.activeTabIndex;\n });\n }\n }\n}\n","<div class=\"kit-tab-view-container\">\n\n <div class=\"kit-tab-header\"\n #tabHeader>\n\n @for (tab of (tabs.length > 0 ? tabs : generatedTabs); track tab) {\n <div\n class=\"kit-tab-item\"\n [class.kit-tab-item--active]=\"tab.active\"\n (click)=\"selectTab(tab.index)\"\n role=\"tab\"\n [attr.aria-selected]=\"tab.active\">\n {{ tab.title }}\n </div>\n }\n\n </div>\n\n <div class=\"kit-tab-content\"\n role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n\n</div>","import { NgModule } from '@angular/core';\nimport { KitRouterOutletComponent } from './router-outlet/router-outlet.component';\nimport { KitTabViewComponent } from './tab-view/tab-view/tab-view.component';\nimport { KitTabContentComponent } from './tab-view/tab-content/tab-content.component';\n\n@NgModule({\n imports: [\n KitRouterOutletComponent,\n KitTabViewComponent,\n KitTabContentComponent\n ],\n exports: [\n KitRouterOutletComponent,\n KitTabViewComponent,\n KitTabContentComponent\n ]\n})\nexport class KitNavigationModule { }","import { NgClass } from '@angular/common';\nimport { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\n\n/**\n * Available card elevations that determine the shadow depth\n */\nexport type CardElevation = 'none' | 'low' | 'medium' | 'high';\n\n/**\n * A card component that displays content in an elevated, contained surface.\n * Cards can be clickable and support different elevation levels.\n */\n@Component({\n selector: 'kit-card',\n standalone: true,\n imports: [NgClass],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class KitCardComponent {\n /**\n * The elevation level of the card (affects shadow depth)\n */\n @Input() elevation: CardElevation = 'low';\n\n /**\n * Whether the card is clickable\n */\n @Input() clickable: boolean = false;\n\n /**\n * Whether the card is disabled (only applies to clickable cards)\n */\n @Input() disabled: boolean = false;\n\n /**\n * Whether the card should take up the full width of its container\n */\n @Input() fullWidth: boolean = false;\n\n /**\n * Whether the card should take up the full height of its container\n */\n @Input() fullHeight: boolean = false;\n\n /**\n * Emitted when the card is clicked (only for clickable cards)\n */\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n /**\n * Apply the clickable class to the host element when clickable is true\n */\n @HostBinding('class.clickable')\n get isClickable(): boolean {\n return this.clickable && !this.disabled;\n }\n\n /**\n * Apply the full-width class to the host element when fullWidth is true\n */\n @HostBinding('class.full-width')\n get isFullWidth(): boolean {\n return this.fullWidth;\n }\n\n /**\n * Apply the full-height class to the host element when fullHeight is true\n */\n @HostBinding('class.full-height')\n get isFullHeight(): boolean {\n return this.fullHeight;\n }\n\n /**\n * Classes to apply to the card element\n */\n get cardClasses(): string[] {\n const classes = ['kit-card'];\n\n // Add elevation class\n classes.push(`kit-card--${this.elevation}`);\n\n // Add clickable class if needed\n if (this.clickable) {\n classes.push('kit-card--clickable');\n }\n\n // Add disabled class if needed\n if (this.disabled && this.clickable) {\n classes.push('kit-card--disabled');\n }\n\n // Add full width class if needed\n if (this.fullWidth) {\n classes.push('kit-card--full-width');\n }\n\n return classes;\n }\n\n /**\n * Handle card click\n */\n handleClick(event: MouseEvent): void {\n if (this.clickable && !this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n}\n","<div [ngClass]=\"cardClasses\"\n [attr.role]=\"clickable ? 'button' : null\"\n [attr.tabindex]=\"clickable && !disabled ? '0' : null\"\n [attr.aria-disabled]=\"clickable && disabled ? 'true' : null\"\n (click)=\"handleClick($event)\">\n\n <div class=\"kit-card__content\">\n <ng-content></ng-content>\n </div>\n</div>","\nimport { Component, Input, HostBinding } from '@angular/core';\nimport { ButtonColor } from '../../button/button-options';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'kit-badge',\n standalone: true,\n imports: [NgClass],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss']\n})\nexport class KitBadgeComponent {\n @Input() color: ButtonColor = 'primary';\n @Input() active: boolean = true;\n @Input() fullWidth: boolean = false;\n\n @HostBinding('class.full-width')\n get isFullWidth(): boolean {\n return this.fullWidth;\n }\n\n get badgeClasses(): string[] {\n const classes = ['kit-badge'];\n classes.push(`kit-badge--${this.color}`);\n if (!this.active) {\n classes.push('kit-badge--inactive');\n }\n if (this.fullWidth) {\n classes.push('kit-badge--full-width');\n }\n return classes;\n }\n}\n","\n<div [ngClass]=\"badgeClasses\">\n <ng-content></ng-content>\n</div>\n","\nimport { NgModule } from '@angular/core';\nimport { KitCardComponent } from './card/card.component';\nimport { KitBadgeComponent } from './badge/badge.component';\n\n@NgModule({\n declarations: [],\n imports: [\n KitCardComponent,\n KitBadgeComponent\n ],\n exports: [\n KitBadgeComponent,\n KitCardComponent\n ]\n})\nexport class KitPanelModule { }\n","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-body',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-body.component.html',\n styleUrls: ['./text-body.component.scss']\n})\nexport class KitTextBodyComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}","<p [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</p>","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-display',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-display.component.html',\n styleUrls: ['./text-display.component.scss']\n})\nexport class KitTextDisplayComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<h3 [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</h3>","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-heading',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-heading.component.html',\n styleUrls: ['./text-heading.component.scss']\n})\nexport class KitTextHeadingComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<h1 [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</h1>","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-link',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-link.component.html',\n styleUrls: ['./text-link.component.scss']\n})\nexport class KitTextLinkComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() href: string = '#';\n @Input() target: string = '_self';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<a [ngClass]=\"colorClass\" [href]=\"href\" [target]=\"target\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</a>","import { Component, Input } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'kit-text-subheading',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './text-subheading.component.html',\n styleUrls: ['./text-subheading.component.scss']\n})\nexport class KitTextSubheadingComponent {\n @Input() color: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'muted' | '' = '';\n @Input() align?: 'left' | 'center' | 'right' | 'justify';\n @Input() weight?: 'light' | 'normal' | 'medium' | 'bold' | number;\n @Input() decoration?: 'none' | 'underline' | 'line-through' | 'overline';\n @Input() margin?: string;\n @Input() wrap: boolean = true;\n @Input() ellipses: boolean = false;\n @Input() lines: number = 0;\n @Input() italic: boolean = false;\n\n get colorClass(): string {\n return this.color ? `kit-text-${this.color}` : '';\n }\n\n get textStyles() {\n const baseStyles: { [key: string]: any } = {\n 'margin': this.margin,\n 'text-align': this.align,\n 'font-weight': this.weight,\n 'text-decoration': this.decoration,\n 'font-style': this.italic ? 'italic' : 'normal'\n };\n\n if (this.ellipses) {\n if (this.wrap && this.lines > 0) {\n // Multi-line ellipsis\n baseStyles['display'] = '-webkit-box';\n baseStyles['-webkit-line-clamp'] = this.lines;\n baseStyles['-webkit-box-orient'] = 'vertical';\n baseStyles['overflow'] = 'hidden';\n } else {\n // Single-line ellipsis\n baseStyles['white-space'] = 'nowrap';\n baseStyles['overflow'] = 'hidden';\n baseStyles['text-overflow'] = 'ellipsis';\n }\n } else {\n // Wrapping control\n baseStyles['white-space'] = this.wrap ? 'normal' : 'nowrap';\n }\n\n return baseStyles;\n }\n}\n","<h2 [ngClass]=\"colorClass\" [ngStyle]=\"textStyles\">\n <ng-content></ng-content>\n</h2>","import { NgModule } from '@angular/core';\n\nimport { KitTextHeadingComponent } from './text-heading/text-heading.component';\nimport { KitTextSubheadingComponent } from './text-subheading/text-subheading.component';\nimport { KitTextDisplayComponent } from './text-display/text-display.component';\nimport { KitTextLabelComponent } from './text-label/text-label.component';\nimport { KitTextBodyComponent } from './text-body/text-body.component';\nimport { KitTextCaptionComponent } from './text-caption/text-caption.component';\nimport { KitTextLinkComponent } from './text-link/text-link.component';\n\n@NgModule({\n declarations: [],\n imports: [\n KitTextHeadingComponent,\n KitTextSubheadingComponent,\n KitTextDisplayComponent,\n KitTextLabelComponent,\n KitTextBodyComponent,\n KitTextCaptionComponent,\n KitTextLinkComponent,\n ],\n exports: [\n KitTextHeadingComponent,\n KitTextSubheadingComponent,\n KitTextDisplayComponent,\n KitTextLabelComponent,\n KitTextBodyComponent,\n KitTextCaptionComponent,\n KitTextLinkComponent,\n ]\n})\nexport class KitTextModule { }","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class KitThemeService {\n private readonly THEME_KEY = 'kit-theme';\n // Signal that holds the current theme class (e.g. 'kit-theme-light')\n private _currentTheme: WritableSignal<string> = signal('kit-theme-light');\n readonly currentTheme = this._currentTheme.asReadonly();\n\n constructor() {\n this.initializeTheme();\n }\n\n /**\n * Initialize theme from localStorage if available\n */\n private initializeTheme(): void {\n const savedTheme = localStorage.getItem(this.THEME_KEY);\n if (savedTheme) {\n this.setTheme(savedTheme);\n }\n }\n\n /**\n * Set theme explicitly\n * @param themeClass Theme class to apply to <html> (e.g. 'kit-theme-light', 'kit-theme-dark', etc.)\n */\n setTheme(themeClass: string): void {\n const html = document.documentElement;\n // Remove all theme classes (those starting with 'kit-theme-')\n Array.from(html.classList)\n .filter(cls => cls.startsWith('kit-theme-'))\n .forEach(cls => html.classList.remove(cls));\n // Add the new theme class\n html.classList.add(themeClass);\n localStorage.setItem(this.THEME_KEY, themeClass);\n // Update signal\n this._currentTheme.set(themeClass);\n }\n\n /**\n * Get current theme class applied to <html>\n */\n getTheme(): string {\n const html = document.documentElement;\n const themeClass = Array.from(html.classList).find(cls => cls.startsWith('kit-theme-'));\n return themeClass || this._currentTheme();\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'kitFileSize'\n})\nexport class KitFileSizePipe implements PipeTransform {\n\n transform(bytes: number, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'kitTimeAgo'\n})\nexport class KitTimeAgoPipe implements PipeTransform {\n\n transform(value: any): string {\n if (value) {\n const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);\n if (seconds < 29) // less than 30 seconds ago will show as 'Just now'\n return 'Just now';\n const intervals: { [key: string]: number } = {\n 'year': 31536000,\n 'month': 2592000,\n 'week': 604800,\n 'day': 86400,\n 'hour': 3600,\n 'minute': 60,\n 'second': 1\n };\n let counter;\n for (const i in intervals) {\n counter = Math.floor(seconds / intervals[i]);\n if (counter > 0)\n if (counter === 1) {\n return counter + ' ' + i + ' ago'; // singular (1 day ago)\n } else {\n return counter + ' ' + i + 's ago'; // plural (2 days ago)\n }\n }\n }\n return value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'kitKmb'\n})\nexport class KitKMBPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n if (isNaN(value)) return null; // will only work with numbers\n if (value === null) return null;\n if (value === 0) return null;\n let abs = Math.abs(value);\n const rounder = Math.pow(10, 1);\n const isNegative = value < 0; // will also work with negative numbers\n let key = '';\n\n const powers = [\n { key: 'Q', value: Math.pow(10, 15) },\n { key: 'T', value: Math.pow(10, 12) },\n { key: 'B', value: Math.pow(10, 9) },\n { key: 'M', value: Math.pow(10, 6) },\n { key: 'K', value: 1000 }\n ];\n\n for (let i = 0; i < powers.length; i++) {\n let reduced = abs / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n abs = reduced;\n key = powers[i].key;\n break;\n }\n }\n return (isNegative ? '-' : '') + abs + key;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { KitFileSizePipe } from './file-size/file-size.pipe';\nimport { KitTimeAgoPipe } from './time-ago/time-ago.pipe';\nimport { KitKMBPipe } from './kmb/kmb.pipe';\n\n@NgModule({\n imports: [\n KitFileSizePipe,\n KitTimeAgoPipe,\n KitKMBPipe\n ],\n exports: [\n KitFileSizePipe,\n KitTimeAgoPipe,\n KitKMBPipe\n ]\n})\nexport class KitPipesModule { }\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, timer } from 'rxjs';\nimport { takeUntil, switchMap, filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[kitPressAndHold]'\n})\nexport class KitPressAndHoldDirective implements OnInit, OnDestroy {\n\n // holdTime is in milliseconds\n @Input() holdTime = 500;\n @Output('holdTimeout') holdRelease = new EventEmitter<void>();\n\n private destroy$ = new Subject<void>();\n private mouseDown$ = new Subject<void>();\n private mouseUp$ = new Subject<void>();\n\n // Use pointer events to cover mouse + touch + pen input\n @HostListener('pointerdown', ['$event'])\n onPointerDown(_: PointerEvent) {\n this.mouseDown$.next();\n }\n\n @HostListener('pointerup')\n onPointerUp() {\n this.mouseUp$.next();\n }\n\n // If the pointer leaves the element or is cancelled, treat as a release/cancel\n @HostListener('pointerleave')\n onPointerLeave() {\n this.mouseUp$.next();\n }\n\n @HostListener('pointercancel')\n onPointerCancel() {\n this.mouseUp$.next();\n }\n\n // Also catch pointerup on the document in case the pointer is released outside the element\n @HostListener('document:pointerup')\n onDocumentPointerUp() {\n this.mouseUp$.next();\n }\n\n ngOnInit() {\n this.mouseDown$.pipe(\n takeUntil(this.destroy$),\n switchMap(() => timer(this.holdTime).pipe(takeUntil(this.mouseUp$))),\n filter(val => val === 0)\n ).subscribe(() => {\n this.holdRelease.emit();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Directive, Input, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[kitCopyToClipboard]'\n})\nexport class KitCopyToClipboardDirective {\n\n @Input('kitCopyToClipboard')\n public payload: string = '';\n\n @Output('copied')\n public copied: EventEmitter<string> = new EventEmitter<string>();\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.preventDefault();\n\n if (!this.payload) {\n return;\n }\n\n // Create a temporary textarea\n const textarea = document.createElement('textarea');\n textarea.value = this.payload;\n textarea.style.position = 'fixed'; // Prevent scrolling\n textarea.style.top = '0';\n textarea.style.left = '0';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length); // For mobile\n\n try {\n const successful = document.execCommand('copy');\n if (successful) {\n this.copied.emit(this.payload);\n } else {\n console.warn('Copy command was unsuccessful');\n }\n } catch (err) {\n console.error('Failed to copy: ', err);\n }\n\n // Remove the temporary textarea\n document.body.removeChild(textarea);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KitPressAndHoldDirective } from './press-and-hold/press-and-hold.directive';\nimport { KitCopyToClipboardDirective } from './copy-to-clipboard/copy-to-clipboard.directive';\n\n@NgModule({\n imports: [\n KitPressAndHoldDirective,\n KitCopyToClipboardDirective\n ],\n exports: [\n KitPressAndHoldDirective,\n KitCopyToClipboardDirective\n ]\n})\nexport class KitDirectivesModule { }\n","/*\n * Public API Surface of ngx-kit-ui\n*/\n\n/*----------------------------------------------------------------------------------------*/\n/* BUTTONS */\n/*----------------------------------------------------------------------------------------*/\n//models & types\nexport * from './lib/components/button/button-options';\n//components\nexport * from './lib/components/button/button/button.component';\nexport * from './lib/components/button/floating-action-button/floating-action-button.component';\nexport * from './lib/components/button/round-button/round-button.component';\nexport * from './lib/components/button/text-button/text-button.component';\nexport * from './lib/components/button/button-group/button-group.component';\nexport * from './lib/components/button/button-group/button-group-item/button-group-item.component';\n//services\n//directives\nexport * from './lib/components/button/button-group/button-group-item/kit-button-group-item-active.directive';\nexport * from './lib/components/button/button-group/button-group-item/kit-button-group-item-idle.directive';\n//modules\nexport * from './lib/components/button/button.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* DATA */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/data/simple-table/simple-table.component';\nexport * from './lib/components/data/progress-bar/progress-bar.component';\nexport * from './lib/components/data/carousel/carousel.component';\n//services\n//directives\n//modules\nexport * from './lib/components/data/data.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* INPUTS */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/inputs/base/base-input.component';\nexport * from './lib/components/inputs/input-email/input-email.component';\nexport * from './lib/components/inputs/input-field-title/input-field-title.component';\nexport * from './lib/components/inputs/input-number/input-number.component';\nexport * from './lib/components/inputs/input-otp/input-otp.component';\nexport * from './lib/components/inputs/input-password/input-password.component';\nexport * from './lib/components/inputs/input-phone/input-phone.component';\nexport * from './lib/components/inputs/input-select/input-select.component';\nexport * from './lib/components/inputs/input-text/input-text.component';\nexport * from './lib/components/inputs/input-textarea/input-textarea.component';\nexport * from './lib/components/inputs/input-time/input-time.component';\nexport * from './lib/components/inputs/input-date/input-date.component';\n//services\n//directives\nexport * from './lib/components/inputs/input-select/kit-select-item-active.directive';\nexport * from './lib/components/inputs/input-select/kit-select-item.directive';\n//modules\nexport * from './lib/components/inputs/input.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* INTERACTORS */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/interactors/gesture-detector/gesture-detector.component';\n//services\n//directives\n//modules\nexport * from './lib/components/interactors/interactors.module';\n\n\n/*----------------------------------------------------------------------------------------*/\n/* LAYOUT */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/layout/app-root/app-root.component';\nexport * from './lib/components/layout/center/center.component';\nexport * from './lib/components/layout/column/column.component';\nexport * from './lib/components/layout/constrained-box/constrained-box.component';\nexport * from './lib/components/layout/expanded/expanded.component';\nexport * from './lib/components/layout/padding/padding.component';\nexport * from './lib/components/layout/page/page.component';\nexport * from './lib/components/layout/row/row.component';\nexport * from './lib/components/layout/sized-box/sized-box.component';\nexport * from './lib/components/layout/spacer/spacer.component';\nexport * from './lib/components/layout/sticky-container/sticky-container.component';\nexport * from './lib/components/layout/divider/divider.component';\nexport * from './lib/components/layout/stack/stack.component';\nexport * from './lib/components/layout/container/container.component';\nexport * from './lib/components/layout/top-bar/top-bar.component';\nexport * from './lib/components/layout/bottom-bar/bottom-bar.component';\nexport * from './lib/components/layout/side-menu/side-menu.component';\n//services\nexport * from './lib/components/layout/side-menu/side-menu.service';\n//directives\n//modules\nexport * from './lib/components/layout/layout.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* MEDIA */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/media/image/image.component';\nexport * from './lib/components/media/avatar/avatar.component';\n//services\n//directives\nexport * from './lib/components/media/image/image-loading.directive';\nexport * from './lib/components/media/image/image-error.directive';\n//modules\nexport * from './lib/components/media/media.module';\n\n\n/*----------------------------------------------------------------------------------------*/\n/* NAVIGATION */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\n\nexport * from './lib/components/navigation/router-outlet/router-outlet.component';\n\nexport * from './lib/components/navigation/tab-view/tab-view/tab-view.component';\nexport * from './lib/components/navigation/tab-view/tab-content/tab-content.component';\n//services\n//directives\n//modules\nexport * from './lib/components/navigation/navigation.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* OVERLAYS */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/overlays/bottom-sheet/bottom-sheet.component';\nexport * from './lib/components/overlays/dialog/dialog.component';\n//services\n//directives\n//modules\nexport * from './lib/components/overlays/overlays.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* PANELS */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/panels/card/card.component';\nexport * from './lib/components/panels/badge/badge.component';\n//services\n//directives\n//modules\nexport * from './lib/components/panels/panel.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* TYPOGRAPHY & TEXT */\n/*----------------------------------------------------------------------------------------*/\n//models & types\n//components\nexport * from './lib/components/text/text-body/text-body.component';\nexport * from './lib/components/text/text-caption/text-caption.component';\nexport * from './lib/components/text/text-display/text-display.component';\nexport * from './lib/components/text/text-heading/text-heading.component';\nexport * from './lib/components/text/text-label/text-label.component';\nexport * from './lib/components/text/text-link/text-link.component';\nexport * from './lib/components/text/text-subheading/text-subheading.component';\n//services\n//directives\n//modules\nexport * from './lib/components/text/text.module';\n\n/*----------------------------------------------------------------------------------------*/\n/* SERVICES */\n/*----------------------------------------------------------------------------------------*/\nexport * from './lib/services/theme/theme.service';\nexport * from './lib/services/screen/screen.service';\nexport * from './lib/services/navigation/navigation.service';\n/*----------------------------------------------------------------------------------------*/\n/* PIPES */\n/*----------------------------------------------------------------------------------------*/\nexport * from './lib/pipes/pipes.module';\nexport * from './lib/pipes/file-size/file-size.pipe';\nexport * from './lib/pipes/time-ago/time-ago.pipe';\nexport * from './lib/pipes/kmb/kmb.pipe';\n\n\n/*----------------------------------------------------------------------------------------*/\n/* DIRECTIVES */\n/*----------------------------------------------------------------------------------------*/\nexport * from './lib/directives/directives.module';\nexport * from './lib/directives/press-and-hold/press-and-hold.directive';\nexport * from './lib/directives/copy-to-clipboard/copy-to-clipboard.directive';\n\n\n/*----------------------------------------------------------------------------------------*/\n/* MODELS & TYPES */\n/*----------------------------------------------------------------------------------------*/\nexport * from './lib/components/layout/layout-options';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.KitScreenService","i2","i3.KitBottomSheetComponent","i4.KitDialogComponent","i1","i1.KitSideMenuService","i1.KitNavigationService"],"mappings":"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"}
|