@frame-kit/ui-ng 0.0.1
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/COMPONENTS.md +683 -0
- package/DEVELOPMENT_GUIDE.md +1102 -0
- package/LICENSE +21 -0
- package/README.md +69 -0
- package/THEMING.md +130 -0
- package/core/headline/README.md +121 -0
- package/core/icon/README.md +173 -0
- package/core/image/README.md +210 -0
- package/core/link/README.md +297 -0
- package/core/separator/README.md +145 -0
- package/core/text/README.md +240 -0
- package/directives/infinite-scroll/README.md +102 -0
- package/directives/spotlight/README.md +154 -0
- package/directives/tooltip/README.md +147 -0
- package/docs/endpoint-link/README.md +142 -0
- package/docs/method-badge/README.md +154 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs +122 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs +189 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs +123 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs +369 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs +59 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs +204 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs +74 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs +425 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs +63 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs +43 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs +3632 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs +239 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs +132 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs +133 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs +60 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs +166 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs +214 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs +82 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs +68 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs +108 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs +70 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs +1288 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs +456 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs +125 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs +111 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs +103 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs +135 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs +79 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs +40 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs +91 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs +86 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs +443 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs +56 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs +105 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs +129 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs +42 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs +894 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs +179 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs +143 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs +191 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng.mjs.map +1 -0
- package/layouts/app-shell/README.md +357 -0
- package/layouts/content-split/README.md +180 -0
- package/package.json +253 -0
- package/services/overlay-orchestrator/README.md +184 -0
- package/services/spotlight/README.md +61 -0
- package/services/toast/README.md +118 -0
- package/types/frame-kit-ui-ng-core-headline.d.ts +38 -0
- package/types/frame-kit-ui-ng-core-icon.d.ts +74 -0
- package/types/frame-kit-ui-ng-core-image.d.ts +93 -0
- package/types/frame-kit-ui-ng-core-link.d.ts +251 -0
- package/types/frame-kit-ui-ng-core-separator.d.ts +28 -0
- package/types/frame-kit-ui-ng-core-text.d.ts +186 -0
- package/types/frame-kit-ui-ng-directives-infinite-scroll.d.ts +42 -0
- package/types/frame-kit-ui-ng-directives-spotlight.d.ts +51 -0
- package/types/frame-kit-ui-ng-directives-tooltip.d.ts +70 -0
- package/types/frame-kit-ui-ng-docs-endpoint-link.d.ts +43 -0
- package/types/frame-kit-ui-ng-docs-method-badge.d.ts +30 -0
- package/types/frame-kit-ui-ng-forms.d.ts +1674 -0
- package/types/frame-kit-ui-ng-layouts-app-shell.d.ts +75 -0
- package/types/frame-kit-ui-ng-layouts-content-split.d.ts +43 -0
- package/types/frame-kit-ui-ng-services-overlay-orchestrator.d.ts +96 -0
- package/types/frame-kit-ui-ng-services-spotlight.d.ts +32 -0
- package/types/frame-kit-ui-ng-services-toast.d.ts +100 -0
- package/types/frame-kit-ui-ng-ui-accordion.d.ts +86 -0
- package/types/frame-kit-ui-ng-ui-alert.d.ts +34 -0
- package/types/frame-kit-ui-ng-ui-avatar-stack.d.ts +38 -0
- package/types/frame-kit-ui-ng-ui-avatar.d.ts +36 -0
- package/types/frame-kit-ui-ng-ui-badge.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-breadcrumb.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-button.d.ts +48 -0
- package/types/frame-kit-ui-ng-ui-callout.d.ts +26 -0
- package/types/frame-kit-ui-ng-ui-card.d.ts +30 -0
- package/types/frame-kit-ui-ng-ui-copyable-field.d.ts +62 -0
- package/types/frame-kit-ui-ng-ui-data-table.d.ts +482 -0
- package/types/frame-kit-ui-ng-ui-dialog.d.ts +166 -0
- package/types/frame-kit-ui-ng-ui-drawer.d.ts +130 -0
- package/types/frame-kit-ui-ng-ui-dropdown-menu.d.ts +77 -0
- package/types/frame-kit-ui-ng-ui-editable-field.d.ts +65 -0
- package/types/frame-kit-ui-ng-ui-icon-badge.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-icon-list.d.ts +67 -0
- package/types/frame-kit-ui-ng-ui-inline-edit.d.ts +44 -0
- package/types/frame-kit-ui-ng-ui-list-editor.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-loader.d.ts +32 -0
- package/types/frame-kit-ui-ng-ui-menu-item.d.ts +27 -0
- package/types/frame-kit-ui-ng-ui-nav-brand.d.ts +25 -0
- package/types/frame-kit-ui-ng-ui-nav-group.d.ts +60 -0
- package/types/frame-kit-ui-ng-ui-nav-separator.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-node-tree-breadcrumb.d.ts +35 -0
- package/types/frame-kit-ui-ng-ui-node-tree.d.ts +135 -0
- package/types/frame-kit-ui-ng-ui-note.d.ts +22 -0
- package/types/frame-kit-ui-ng-ui-numbered-list.d.ts +52 -0
- package/types/frame-kit-ui-ng-ui-pagination.d.ts +49 -0
- package/types/frame-kit-ui-ng-ui-progress-bar.d.ts +50 -0
- package/types/frame-kit-ui-ng-ui-sidenav-link.d.ts +24 -0
- package/types/frame-kit-ui-ng-ui-tabs.d.ts +266 -0
- package/types/frame-kit-ui-ng-ui-timeline.d.ts +42 -0
- package/types/frame-kit-ui-ng-ui-toast.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-user-menu.d.ts +87 -0
- package/types/frame-kit-ui-ng-ui-wizard-dialog.d.ts +116 -0
- package/types/frame-kit-ui-ng.d.ts +53 -0
- package/ui/accordion/README.md +261 -0
- package/ui/alert/README.md +211 -0
- package/ui/avatar/README.md +167 -0
- package/ui/avatar-stack/README.md +164 -0
- package/ui/badge/README.md +162 -0
- package/ui/breadcrumb/README.md +240 -0
- package/ui/button/README.md +184 -0
- package/ui/callout/README.md +159 -0
- package/ui/card/README.md +174 -0
- package/ui/copyable-field/README.md +235 -0
- package/ui/data-table/README.md +408 -0
- package/ui/dialog/README.md +222 -0
- package/ui/drawer/README.md +274 -0
- package/ui/dropdown-menu/README.md +336 -0
- package/ui/editable-field/README.md +171 -0
- package/ui/icon-badge/README.md +131 -0
- package/ui/icon-list/README.md +205 -0
- package/ui/inline-edit/README.md +135 -0
- package/ui/list-editor/README.md +162 -0
- package/ui/loader/README.md +160 -0
- package/ui/menu-item/README.md +204 -0
- package/ui/nav-brand/README.md +111 -0
- package/ui/nav-group/README.md +145 -0
- package/ui/nav-separator/README.md +44 -0
- package/ui/node-tree/README.md +278 -0
- package/ui/node-tree-breadcrumb/README.md +164 -0
- package/ui/note/README.md +146 -0
- package/ui/numbered-list/README.md +187 -0
- package/ui/pagination/README.md +174 -0
- package/ui/progress-bar/README.md +223 -0
- package/ui/sidenav-link/README.md +214 -0
- package/ui/tabs/README.md +204 -0
- package/ui/timeline/README.md +285 -0
- package/ui/toast/README.md +243 -0
- package/ui/user-menu/README.md +260 -0
- package/ui/wizard-dialog/README.md +283 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-kit-ui-ng-forms.mjs","sources":["../../../../packages/ui-ng/forms/composition/error/error.component.ts","../../../../packages/ui-ng/forms/composition/error/error.component.html","../../../../packages/ui-ng/forms/composition/field-group/field-group.component.ts","../../../../packages/ui-ng/forms/composition/field-group/field-group.component.html","../../../../packages/ui-ng/forms/composition/form/form.component.ts","../../../../packages/ui-ng/forms/composition/form/form.component.html","../../../../packages/ui-ng/forms/composition/form-field/field-control.ts","../../../../packages/ui-ng/forms/engine/error-messages.ts","../../../../packages/ui-ng/forms/composition/hint/hint.component.ts","../../../../packages/ui-ng/forms/composition/hint/hint.component.html","../../../../packages/ui-ng/forms/composition/label/label.component.ts","../../../../packages/ui-ng/forms/composition/label/label.component.html","../../../../packages/ui-ng/forms/composition/form-field/prefix.directive.ts","../../../../packages/ui-ng/forms/composition/form-field/suffix.directive.ts","../../../../packages/ui-ng/forms/composition/form-field/form-field.component.ts","../../../../packages/ui-ng/forms/composition/form-field/form-field.component.html","../../../../packages/ui-ng/forms/engine/validation-registry.ts","../../../../packages/ui-ng/forms/engine/schema-parser.ts","../../../../packages/ui-ng/forms/fields/autocomplete/autocomplete.component.ts","../../../../packages/ui-ng/forms/fields/autocomplete/autocomplete.component.html","../../../../packages/ui-ng/forms/fields/checkbox/checkbox.component.ts","../../../../packages/ui-ng/forms/fields/checkbox/checkbox.component.html","../../../../packages/ui-ng/forms/fields/date-input/date-input.component.ts","../../../../packages/ui-ng/forms/fields/date-input/date-input.component.html","../../../../packages/ui-ng/forms/fields/datetime-input/datetime-input.component.ts","../../../../packages/ui-ng/forms/fields/datetime-input/datetime-input.component.html","../../../../packages/ui-ng/forms/fields/file-upload/file-upload.component.ts","../../../../packages/ui-ng/forms/fields/file-upload/file-upload.component.html","../../../../packages/ui-ng/forms/fields/input/input.component.ts","../../../../packages/ui-ng/forms/fields/input/input.component.html","../../../../packages/ui-ng/forms/fields/number-input/number-input.component.ts","../../../../packages/ui-ng/forms/fields/number-input/number-input.component.html","../../../../packages/ui-ng/forms/fields/password-input/password-input.component.ts","../../../../packages/ui-ng/forms/fields/password-input/password-input.component.html","../../../../packages/ui-ng/forms/fields/radio/radio.component.ts","../../../../packages/ui-ng/forms/fields/radio/radio.component.html","../../../../packages/ui-ng/forms/fields/select/select.component.ts","../../../../packages/ui-ng/forms/fields/select/select.component.html","../../../../packages/ui-ng/forms/fields/slider/slider.component.ts","../../../../packages/ui-ng/forms/fields/slider/slider.component.html","../../../../packages/ui-ng/forms/fields/switch/switch.component.ts","../../../../packages/ui-ng/forms/fields/switch/switch.component.html","../../../../packages/ui-ng/forms/fields/tag-input/tag-input.component.ts","../../../../packages/ui-ng/forms/fields/tag-input/tag-input.component.html","../../../../packages/ui-ng/forms/fields/textarea/textarea.component.ts","../../../../packages/ui-ng/forms/fields/textarea/textarea.component.html","../../../../packages/ui-ng/forms/fields/time-input/time-input.component.ts","../../../../packages/ui-ng/forms/fields/time-input/time-input.component.html","../../../../packages/ui-ng/forms/engine/field-registry.ts","../../../../packages/ui-ng/forms/composition/form-renderer/field-outlet.component.ts","../../../../packages/ui-ng/forms/composition/form-renderer/field-outlet.component.html","../../../../packages/ui-ng/forms/composition/form-renderer/field-array-outlet.component.ts","../../../../packages/ui-ng/forms/composition/form-renderer/field-array-outlet.component.html","../../../../packages/ui-ng/forms/composition/form-renderer/section-outlet.component.ts","../../../../packages/ui-ng/forms/composition/form-renderer/section-outlet.component.html","../../../../packages/ui-ng/forms/composition/form-renderer/form-renderer.component.ts","../../../../packages/ui-ng/forms/composition/form-renderer/form-renderer.component.html","../../../../packages/ui-ng/forms/composition/form-renderer/form-renderer.types.ts","../../../../packages/ui-ng/forms/composition/form-section/form-section.component.ts","../../../../packages/ui-ng/forms/composition/form-section/form-section.component.html","../../../../packages/ui-ng/forms/engine/field-state.ts","../../../../packages/ui-ng/forms/fields/file-dropzone/file-dropzone.component.ts","../../../../packages/ui-ng/forms/fields/file-dropzone/file-dropzone.component.html","../../../../packages/ui-ng/forms/fields/segmented-bar/segmented-bar.component.ts","../../../../packages/ui-ng/forms/fields/segmented-bar/segmented-bar.component.html","../../../../packages/ui-ng/forms/frame-kit-ui-ng-forms.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nlet nextErrorId = 0;\n\n@Component({\n selector: 'fk-error',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './error.component.html',\n styles: `\n :host {\n display: block;\n font-family: var(\n --fk-font-family-base,\n 'Inter',\n ui-sans-serif,\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n Helvetica,\n Arial,\n 'Apple Color Emoji',\n 'Segoe UI Emoji'\n );\n font-size: var(\n --fk-form-error-font-size,\n var(--fk-typography-small-font-size, 0.8125rem)\n );\n color: var(--fk-form-error-color, var(--fk-color-danger, #e02424));\n }\n `,\n})\nexport class ErrorComponent {\n readonly className = input<string>('');\n /** Stable element ID wired to the field's aria-describedby. */\n readonly id = input(`fk-error-${nextErrorId++}`);\n\n readonly classes = computed(() =>\n ['fk-error', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.id();\n }\n\n @HostBinding('attr.role')\n get hostRole() {\n return 'alert';\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nimport type { FieldGroupLayout } from './field-group.types';\n\n@Component({\n selector: 'fk-field-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './field-group.component.html',\n styleUrl: './field-group.component.scss',\n})\nexport class FieldGroupComponent {\n readonly className = input<string>('');\n\n /** Optional group label rendered as a fieldset legend. */\n readonly label = input<string | null>(null);\n\n /** Layout direction for child fields. */\n readonly layout = input<FieldGroupLayout>('stack');\n\n readonly classes = computed(() =>\n [\n 'fk-field-group',\n this.layout() === 'inline' ? 'fk-field-group--inline' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n}\n","<fieldset class=\"fk-field-group__fieldset\">\n @if (label()) {\n <legend class=\"fk-field-group__legend\">{{ label() }}</legend>\n }\n <div class=\"fk-field-group__content\">\n <ng-content />\n </div>\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n InjectionToken,\n input,\n output,\n signal,\n} from '@angular/core';\n\nimport type { FormStatus } from './form.types';\n\n/**\n * Token that child fk-form-field components can inject to read\n * the form's submitted state.\n */\nexport const FORM = new InjectionToken<FormComponent>('FORM');\n\n@Component({\n selector: 'fk-form',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FORM, useExisting: FormComponent }],\n templateUrl: './form.component.html',\n styleUrl: './form.component.scss',\n})\nexport class FormComponent {\n readonly className = input<string>('');\n\n /** Whether the form has been submitted at least once. */\n readonly submitted = signal(false);\n\n /** Current submission status. */\n readonly status = signal<FormStatus>('idle');\n\n /** Derived convenience signals. */\n readonly isSubmitting = computed(() => this.status() === 'submitting');\n readonly isSuccess = computed(() => this.status() === 'success');\n readonly isError = computed(() => this.status() === 'error');\n readonly isIdle = computed(() => this.status() === 'idle');\n\n readonly classes = computed(() =>\n [\n 'fk-form',\n this.isSubmitting() ? 'fk-form--submitting' : '',\n this.isSuccess() ? 'fk-form--success' : '',\n this.isError() ? 'fk-form--error' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n /** Emits when the form is submitted. */\n readonly formSubmit = output<void>();\n\n onSubmit(): void {\n this.submitted.set(true);\n this.formSubmit.emit();\n }\n\n /**\n * Sets the form status to 'submitting'.\n * Call this before starting an async submission.\n */\n startSubmitting(): void {\n this.status.set('submitting');\n }\n\n /**\n * Sets the form status to 'success'.\n * Call this when the submission succeeds.\n */\n setSuccess(): void {\n this.status.set('success');\n }\n\n /**\n * Sets the form status to 'error'.\n * Call this when the submission fails.\n */\n setError(): void {\n this.status.set('error');\n }\n\n /** Resets the submitted state and status to idle. */\n reset(): void {\n this.submitted.set(false);\n this.status.set('idle');\n }\n}\n","<form class=\"fk-form__native\" (submit)=\"$event.preventDefault(); onSubmit()\">\n <ng-content />\n</form>\n","import { InjectionToken } from '@angular/core';\nimport type { NgControl } from '@angular/forms';\n\nexport interface FieldControl {\n /** Stable ID for the control element. */\n id: string;\n\n /** IDs currently set as aria-describedby on the control. */\n describedByIds: string[];\n\n /** Whether the control is currently focused. */\n focused: boolean;\n\n /** Whether the control has no value. */\n empty: boolean;\n\n /** Whether the control is disabled. */\n disabled: boolean;\n\n /** Whether the control is required. */\n required: boolean;\n\n /** Whether the control is readonly. */\n readonly?: boolean;\n\n /** Reference to the NgControl, if bound. */\n ngControl: NgControl | null;\n\n /** Called by fk-form-field to push composed described-by IDs down to the control. */\n setDescribedByIds(ids: string[]): void;\n\n /** Called when the wrapper container is clicked (forwards focus to custom controls). */\n onContainerClick?(event: MouseEvent): void;\n}\n\nexport const FIELD_CONTROL = new InjectionToken<FieldControl>('FIELD_CONTROL');\n","import { InjectionToken } from '@angular/core';\n\nimport type { ErrorMessages } from './validation.types';\n\n/**\n * Default error messages for common Angular validators.\n *\n * Keys match the error keys emitted by Angular's built-in Validators\n * (lowercase: 'required', 'minlength', 'maxlength', 'email', 'min', 'max', 'pattern').\n *\n * Templates use `{key}` syntax for interpolation with the validation\n * error object properties.\n */\nexport const DEFAULT_ERROR_MESSAGES: ErrorMessages = {\n required: 'This field is required',\n minlength: 'Must be at least {requiredLength} characters',\n maxlength: 'Must be no more than {requiredLength} characters',\n email: 'Please enter a valid email address',\n min: 'Must be at least {min}',\n max: 'Must be no more than {max}',\n pattern: 'Invalid format',\n};\n\n/**\n * Injection token for providing custom error messages.\n *\n * Provide at the root or module level to override default messages globally,\n * or at a component level for scoped overrides.\n *\n * @example\n * ```ts\n * providers: [\n * {\n * provide: ERROR_MESSAGES,\n * useValue: {\n * required: 'Required',\n * email: 'Invalid email',\n * },\n * },\n * ]\n * ```\n */\nexport const ERROR_MESSAGES = new InjectionToken<ErrorMessages>(\n 'ERROR_MESSAGES',\n {\n providedIn: 'root',\n factory: () => DEFAULT_ERROR_MESSAGES,\n },\n);\n\n/**\n * Interpolates a message template with values from a validation error object.\n *\n * Replaces `{key}` placeholders with corresponding values from the error details.\n *\n * @example\n * ```ts\n * interpolateMessage('Must be at least {requiredLength} characters', { requiredLength: 3 });\n * // => 'Must be at least 3 characters'\n * ```\n */\nexport function interpolateMessage(\n template: string,\n errorValue: Record<string, unknown>,\n): string {\n return template.replace(/{(\\w+)}/g, (_, key: string) => {\n const val = errorValue[key];\n\n return val !== undefined && val !== null ? String(val) : `{${key}}`;\n });\n}\n\n/**\n * Resolves the first error message for a control's current validation errors.\n *\n * Resolution order:\n * 1. Field-level overrides (`fieldMessages`)\n * 2. Global messages (injected via `ERROR_MESSAGES`)\n * 3. Falls back to the error key itself\n *\n * @param errors - The validation errors object from `AbstractControl.errors`\n * @param globalMessages - Global error message map\n * @param fieldMessages - Per-field error message overrides\n * @returns The resolved, interpolated error message, or `null` if no errors\n */\nexport function resolveErrorMessage(\n errors: Record<string, unknown> | null,\n globalMessages: ErrorMessages,\n fieldMessages?: ErrorMessages,\n): string | null {\n if (!errors) {\n return null;\n }\n\n const errorKey = Object.keys(errors)[0];\n\n if (!errorKey) {\n return null;\n }\n\n const errorValue = errors[errorKey];\n\n // Check field-level override first\n const template =\n fieldMessages?.[errorKey] ?? globalMessages[errorKey] ?? errorKey;\n\n // Interpolate if the error value is an object with properties\n if (errorValue && typeof errorValue === 'object') {\n return interpolateMessage(template, errorValue as Record<string, unknown>);\n }\n\n return template;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nlet nextHintId = 0;\n\n@Component({\n selector: 'fk-hint',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './hint.component.html',\n styles: `\n :host {\n display: block;\n font-family: var(\n --fk-font-family-base,\n 'Inter',\n ui-sans-serif,\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n Helvetica,\n Arial,\n 'Apple Color Emoji',\n 'Segoe UI Emoji'\n );\n font-size: var(\n --fk-form-hint-font-size,\n var(--fk-typography-small-font-size, 0.8125rem)\n );\n color: var(--fk-form-hint-color, var(--fk-color-muted, #8a98a8));\n }\n `,\n})\nexport class HintComponent {\n readonly className = input<string>('');\n /** Stable element ID wired to the field's aria-describedby. */\n readonly id = input(`fk-hint-${nextHintId++}`);\n\n readonly classes = computed(() =>\n ['fk-hint', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.id();\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nlet nextLabelId = 0;\n\n@Component({\n selector: 'fk-label',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './label.component.html',\n styles: `\n :host {\n display: block;\n font-family: var(\n --fk-font-family-base,\n 'Inter',\n ui-sans-serif,\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n Helvetica,\n Arial,\n 'Apple Color Emoji',\n 'Segoe UI Emoji'\n );\n font-size: var(\n --fk-form-label-font-size,\n var(--fk-typography-label-font-size, 0.8125rem)\n );\n font-weight: var(\n --fk-form-label-font-weight,\n var(--fk-typography-label-font-weight, 600)\n );\n line-height: var(\n --fk-form-label-line-height,\n var(--fk-typography-label-line-height, 1.25)\n );\n color: var(--fk-form-label-color, var(--fk-color-text-strong, #0b1420));\n }\n `,\n})\nexport class LabelComponent {\n readonly className = input<string>('');\n /** Stable element ID used to reference this label from other elements. */\n readonly id = input(`fk-label-${nextLabelId++}`);\n /** ID of the form control this label describes; renders as the `for` attribute. */\n readonly for = input<string | null>(null);\n\n readonly classes = computed(() =>\n ['fk-label', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.id();\n }\n\n @HostBinding('attr.for')\n get hostFor() {\n return this.for();\n }\n}\n","<ng-content />\n","import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_PREFIX = new InjectionToken<FkPrefixDirective>('FK_PREFIX');\n\n@Directive({\n selector: '[fkPrefix]',\n standalone: true,\n providers: [{ provide: FK_PREFIX, useExisting: FkPrefixDirective }],\n})\nexport class FkPrefixDirective {}\n","import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_SUFFIX = new InjectionToken<FkSuffixDirective>('FK_SUFFIX');\n\n@Directive({\n selector: '[fkSuffix]',\n standalone: true,\n providers: [{ provide: FK_SUFFIX, useExisting: FkSuffixDirective }],\n})\nexport class FkSuffixDirective {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n effect,\n HostBinding,\n inject,\n input,\n} from '@angular/core';\nimport { type AbstractControl, Validators } from '@angular/forms';\n\nimport {\n ERROR_MESSAGES,\n resolveErrorMessage,\n} from '../../engine/error-messages';\nimport type { ErrorMessages } from '../../engine/validation.types';\nimport { ErrorComponent } from '../error/error.component';\nimport { HintComponent } from '../hint/hint.component';\nimport { LabelComponent } from '../label/label.component';\nimport { FIELD_CONTROL, type FieldControl } from './field-control';\nimport type { ShowErrorsOn } from './form-field.types';\nimport { FK_PREFIX, type FkPrefixDirective } from './prefix.directive';\nimport { FK_SUFFIX, type FkSuffixDirective } from './suffix.directive';\n\nlet nextFieldId = 0;\n\n@Component({\n selector: 'fk-form-field',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n})\nexport class FormFieldComponent {\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Text label rendered above the field; forwarded to the projected fk-label when present. */\n readonly label = input<string | null>(null);\n /** Condition under which validation errors are displayed. */\n readonly showErrorsOn = input<ShowErrorsOn>('touched');\n /** Whether the parent form has been submitted; used when showErrorsOn is \"submit\". */\n readonly submitted = input(false);\n /** Additional aria-describedby ID to append to the field's accessibility wiring. */\n readonly externalDescribedBy = input<string | null>(null);\n\n /**\n * Fallback AbstractControl for dynamically created fields\n * where NgControl is not available.\n */\n readonly fallbackControl = input<AbstractControl | null>(null);\n\n /**\n * Per-field error message overrides.\n * Keys are validation error keys (e.g. 'required', 'minlength').\n * Values are message templates supporting `{key}` interpolation.\n *\n * When provided, these take priority over global error messages.\n * When neither field-level nor global messages are provided for\n * an error key, the key itself is used as the message.\n */\n readonly errorMessages = input<ErrorMessages | null>(null);\n\n // ===== PROJECTED CONTENT =====\n readonly control = contentChild<FieldControl>(FIELD_CONTROL);\n readonly hintRef = contentChild(HintComponent);\n readonly errorRef = contentChild(ErrorComponent);\n readonly labelRef = contentChild(LabelComponent);\n readonly prefixRef = contentChild<FkPrefixDirective>(FK_PREFIX);\n readonly suffixRef = contentChild<FkSuffixDirective>(FK_SUFFIX);\n\n // ===== INJECTED SERVICES =====\n private readonly globalErrorMessages = inject(ERROR_MESSAGES);\n private readonly cdr = inject(ChangeDetectorRef);\n\n // ===== HOST CLASS =====\n @HostBinding('class')\n get hostClass(): string {\n return [\n 'fk-form-field',\n this.isFocused() ? 'fk-form-field--focused' : '',\n this.isInvalid() ? 'fk-form-field--invalid' : '',\n this.isRequired() ? 'fk-form-field--required' : '',\n this.isDisabled() ? 'fk-form-field--disabled' : '',\n this.isReadonly() ? 'fk-form-field--readonly' : '',\n !this.isEmpty() ? 'fk-form-field--filled' : '',\n this.prefixRef() ? 'fk-form-field--has-prefix' : '',\n this.suffixRef() ? 'fk-form-field--has-suffix' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n // ===== INTERNAL STATE =====\n readonly fieldId = `fk-field-${nextFieldId++}`;\n readonly labelId = `${this.fieldId}-label`;\n readonly autoErrorId = `${this.fieldId}-error`;\n\n /**\n * Whether this field uses auto error messages (no projected fk-error).\n */\n get hasAutoError(): boolean {\n return !this.errorRef();\n }\n\n // ===== DERIVED STATE =====\n // These are methods (not computed signals) because they read non-signal\n // values from NgControl (touched, dirty, invalid). The host bindings\n // evaluate them during each change detection cycle.\n\n /**\n * Resolves the AbstractControl to use for validation checks.\n * Prefers NgControl from the projected FieldControl, falls back\n * to the explicitly provided AbstractControl (for dynamic fields).\n */\n private resolveControl(): AbstractControl | null {\n return this.control()?.ngControl?.control ?? this.fallbackControl();\n }\n\n /** Returns true when the field's validation error should be displayed. */\n showError(): boolean {\n const ctrl = this.resolveControl();\n\n if (!ctrl || !ctrl.invalid) {\n return false;\n }\n\n switch (this.showErrorsOn()) {\n case 'touched':\n return !!ctrl.touched;\n case 'dirty':\n return !!ctrl.dirty;\n case 'submit':\n return this.submitted();\n default:\n return !!ctrl.touched;\n }\n }\n\n /**\n * Resolves the auto error message from the control's validation errors.\n * Uses field-level overrides first, then global messages, then the error key.\n */\n autoErrorMessage(): string | null {\n const ctrl = this.resolveControl();\n\n if (!ctrl || !ctrl.errors) {\n return null;\n }\n\n return resolveErrorMessage(\n ctrl.errors,\n this.globalErrorMessages,\n this.errorMessages() ?? undefined,\n );\n }\n\n /** Returns true when the projected field control currently has focus. */\n isFocused(): boolean {\n return this.control()?.focused ?? false;\n }\n\n /** Returns true when the projected field control has no value. */\n isEmpty(): boolean {\n return this.control()?.empty ?? true;\n }\n\n /** Returns true when the projected field control is disabled. */\n isDisabled(): boolean {\n return this.control()?.disabled ?? false;\n }\n\n /** Returns true when the field is marked required by the control or validator. */\n isRequired(): boolean {\n const control = this.control();\n\n if (control?.required) {\n return true;\n }\n\n const ctrl = this.resolveControl();\n\n return ctrl ? ctrl.hasValidator(Validators.required) : false;\n }\n\n /** Returns true when the projected field control is read-only. */\n isReadonly(): boolean {\n return this.control()?.readonly ?? false;\n }\n\n /** Returns true when the field is in an invalid state that should be shown. */\n isInvalid(): boolean {\n return this.showError();\n }\n\n constructor() {\n effect(() => {\n this.syncDescribedByIds();\n });\n\n effect(() => {\n const ctrl = this.resolveControl();\n\n if (ctrl) {\n const sub = ctrl.events?.subscribe(() => {\n this.cdr.markForCheck();\n });\n\n return () => sub?.unsubscribe();\n }\n\n return;\n });\n }\n\n // ===== DESCRIBED-BY WIRING =====\n private syncDescribedByIds() {\n const control = this.control();\n\n if (!control) {\n return;\n }\n\n const ids: string[] = [];\n const hint = this.hintRef();\n const error = this.errorRef();\n const external = this.externalDescribedBy();\n const showingError = this.showError();\n\n if (hint && !showingError) {\n ids.push(hint.id());\n }\n\n if (showingError) {\n if (error) {\n ids.push(error.id());\n } else {\n // Auto error message — use the generated ID\n ids.push(this.autoErrorId);\n }\n }\n\n if (external) {\n ids.push(external);\n }\n\n control.setDescribedByIds(ids);\n }\n}\n","<div class=\"fk-form-field__wrapper\">\n @if (label() || labelRef()) {\n <label\n class=\"fk-form-field__label\"\n [attr.id]=\"labelId\"\n [attr.for]=\"control()?.id ?? null\"\n >\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content select=\"fk-label\" />\n }\n @if (isRequired()) {\n <span class=\"fk-form-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"fk-form-field__control\"\n (click)=\"control()?.onContainerClick?.($event)\"\n >\n @if (prefixRef()) {\n <div class=\"fk-form-field__prefix\">\n <ng-content select=\"[fkPrefix]\" />\n </div>\n }\n <ng-content />\n @if (suffixRef()) {\n <div class=\"fk-form-field__suffix\">\n <ng-content select=\"[fkSuffix]\" />\n </div>\n }\n </div>\n\n <div class=\"fk-form-field__subscript\">\n @if (showError()) {\n @if (hasAutoError) {\n <span class=\"fk-error\" role=\"alert\" [attr.id]=\"autoErrorId\">\n {{ autoErrorMessage() }}\n </span>\n } @else {\n <ng-content select=\"fk-error\" />\n }\n } @else {\n <ng-content select=\"fk-hint\" />\n }\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n type AsyncValidatorFn,\n type ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nimport type {\n AsyncValidatorConfig,\n AsyncValidatorFactory,\n ValidatorConfig,\n ValidatorFactory,\n} from './validation.types';\n\n/**\n * Registry that maps validator type names to factory functions.\n *\n * Built-in validators (required, minLength, maxLength, email, min, max, pattern)\n * are registered by default. Custom validators can be registered at any time.\n *\n * Used by the schema engine (Phase 3) to create ValidatorFn arrays from\n * schema configurations, and available for programmatic use.\n *\n * @example\n * ```ts\n * // Register a custom validator\n * registry.register('phone', () =>\n * Validators.pattern(/^\\+?[\\d\\s-]{10,}$/)\n * );\n *\n * // Resolve validators from config\n * const validators = registry.resolve([\n * { type: 'required' },\n * { type: 'minLength', value: 3 },\n * { type: 'phone' },\n * ]);\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ValidationRegistry {\n private readonly validators = new Map<string, ValidatorFactory>();\n private readonly asyncValidators = new Map<string, AsyncValidatorFactory>();\n\n constructor() {\n this.registerDefaults();\n }\n\n /**\n * Registers a synchronous validator factory.\n *\n * @param type - The validator type key\n * @param factory - Factory function that creates a ValidatorFn\n */\n register(type: string, factory: ValidatorFactory): void {\n this.validators.set(type, factory);\n }\n\n /**\n * Registers an asynchronous validator factory.\n *\n * @param type - The async validator type key\n * @param factory - Factory function that creates an AsyncValidatorFn\n */\n registerAsync(type: string, factory: AsyncValidatorFactory): void {\n this.asyncValidators.set(type, factory);\n }\n\n /**\n * Checks if a synchronous validator type is registered.\n */\n has(type: string): boolean {\n return this.validators.has(type);\n }\n\n /**\n * Checks if an asynchronous validator type is registered.\n */\n hasAsync(type: string): boolean {\n return this.asyncValidators.has(type);\n }\n\n /**\n * Resolves an array of validator configs into ValidatorFn instances.\n *\n * @throws Error if a validator type is not registered\n */\n resolve(configs: ValidatorConfig[]): ValidatorFn[] {\n return configs.map((config) => {\n const factory = this.validators.get(config.type);\n\n if (!factory) {\n throw new Error(\n `ValidationRegistry: unknown validator type \"${config.type}\". ` +\n `Register it with registry.register(\"${config.type}\", factory).`,\n );\n }\n\n return factory(config.value);\n });\n }\n\n /**\n * Resolves an array of async validator configs into AsyncValidatorFn instances.\n *\n * @throws Error if an async validator type is not registered\n */\n resolveAsync(configs: AsyncValidatorConfig[]): AsyncValidatorFn[] {\n return configs.map((config) => {\n const factory = this.asyncValidators.get(config.type);\n\n if (!factory) {\n throw new Error(\n `ValidationRegistry: unknown async validator type \"${config.type}\". ` +\n `Register it with registry.registerAsync(\"${config.type}\", factory).`,\n );\n }\n\n return factory(config.value);\n });\n }\n\n private registerDefaults(): void {\n this.register('required', () => Validators.required);\n this.register('requiredTrue', () => Validators.requiredTrue);\n this.register('email', () => Validators.email);\n\n this.register('minLength', (value) =>\n Validators.minLength(value as number),\n );\n\n this.register('maxLength', (value) =>\n Validators.maxLength(value as number),\n );\n\n this.register('min', (value) => Validators.min(value as number));\n this.register('max', (value) => Validators.max(value as number));\n\n this.register('pattern', (value) =>\n Validators.pattern(value as string | RegExp),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport {\n type AsyncValidatorFn,\n FormArray,\n FormControl,\n FormGroup,\n type ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nimport type { FieldSchema, FormSchema } from './schema.types';\nimport { ValidationRegistry } from './validation-registry';\n\n/**\n * Parses a FormSchema into an Angular FormGroup.\n *\n * Resolves validators from the validation registry and applies\n * default values, disabled state, and required constraints.\n *\n * @example\n * ```ts\n * const schema: FormSchema = {\n * fields: [\n * { key: 'email', type: 'input', required: true, validators: [{ type: 'email' }] },\n * { key: 'name', type: 'input', defaultValue: 'John' },\n * ],\n * };\n *\n * const form = parser.buildFormGroup(schema);\n * // form.get('email') => FormControl with required + email validators\n * // form.get('name') => FormControl with value 'John'\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class SchemaParser {\n private readonly validationRegistry = inject(ValidationRegistry);\n\n /**\n * Builds a FormGroup from a form schema.\n *\n * Supports flat fields, nested groups (via `children`),\n * field arrays (via `arrayFields`), and layout sections.\n */\n buildFormGroup(schema: FormSchema): FormGroup {\n const allFields = this.collectFields(schema);\n\n return this.buildGroupFromFields(allFields);\n }\n\n /**\n * Builds a single FormControl from a field schema.\n */\n buildControl(field: FieldSchema): FormControl {\n const validators = this.resolveValidators(field);\n const asyncValidators = this.resolveAsyncValidators(field);\n\n return new FormControl(\n { value: field.defaultValue ?? null, disabled: field.disabled ?? false },\n { validators, asyncValidators },\n );\n }\n\n /**\n * Builds a nested FormGroup from a field with `children`.\n */\n buildNestedGroup(field: FieldSchema): FormGroup {\n if (!field.children?.length) {\n return new FormGroup({});\n }\n\n return this.buildGroupFromFields(field.children);\n }\n\n /**\n * Builds a FormArray from a field with `arrayFields`.\n *\n * Creates one initial row from the array field definitions.\n * Additional rows can be added programmatically.\n */\n buildFieldArray(field: FieldSchema): FormArray {\n const initialRows = (field.defaultValue as unknown[] | undefined) ?? [null];\n\n const controls = initialRows.map((rowValue) => {\n if (field.arrayFields?.length) {\n const group = this.buildGroupFromFields(field.arrayFields);\n\n if (rowValue && typeof rowValue === 'object') {\n group.patchValue(rowValue as Record<string, unknown>);\n }\n\n return group;\n }\n\n return new FormControl(rowValue ?? null);\n });\n\n return new FormArray(controls);\n }\n\n /**\n * Creates a new row FormGroup for a field array.\n */\n buildArrayRow(field: FieldSchema): FormGroup {\n if (!field.arrayFields?.length) {\n return new FormGroup({});\n }\n\n return this.buildGroupFromFields(field.arrayFields);\n }\n\n private buildGroupFromFields(fields: FieldSchema[]): FormGroup {\n const controls: Record<string, FormControl | FormGroup | FormArray> = {};\n\n for (const field of fields) {\n if (field.children) {\n controls[field.key] = this.buildNestedGroup(field);\n } else if (field.arrayFields) {\n controls[field.key] = this.buildFieldArray(field);\n } else {\n controls[field.key] = this.buildControl(field);\n }\n }\n\n return new FormGroup(controls);\n }\n\n /**\n * Collects all fields from a schema, including fields\n * within layout sections.\n */\n private collectFields(schema: FormSchema): FieldSchema[] {\n if (!schema.sections?.length) {\n return schema.fields;\n }\n\n const fields = [...schema.fields];\n\n for (const section of schema.sections) {\n fields.push(...section.fields);\n }\n\n return fields;\n }\n\n private resolveValidators(field: FieldSchema): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.required) {\n validators.push(Validators.required);\n }\n\n if (field.validators?.length) {\n validators.push(...this.validationRegistry.resolve(field.validators));\n }\n\n return validators;\n }\n\n private resolveAsyncValidators(field: FieldSchema): AsyncValidatorFn[] {\n if (!field.asyncValidators?.length) {\n return [];\n }\n\n return this.validationRegistry.resolveAsync(field.asyncValidators);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n InjectionToken,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\nimport type {\n AutocompleteFilterMode,\n AutocompleteOption,\n} from './autocomplete.types';\n\nexport const FK_AUTOCOMPLETE_OPTION_TPL =\n new InjectionToken<FkAutocompleteOptionTplDirective>(\n 'FK_AUTOCOMPLETE_OPTION_TPL',\n );\n\n/**\n * Directive for projecting a custom option template into fk-autocomplete.\n *\n * @example\n * ```html\n * <fk-autocomplete [options]=\"users\" filterMode=\"manual\">\n * <ng-template fkAutocompleteOption let-option>\n * <div class=\"user-row\">{{ option.label }}</div>\n * </ng-template>\n * </fk-autocomplete>\n * ```\n */\n// Inline directive — no separate file needed\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fkAutocompleteOption]',\n standalone: true,\n providers: [\n {\n provide: FK_AUTOCOMPLETE_OPTION_TPL,\n useExisting: FkAutocompleteOptionTplDirective,\n },\n ],\n})\nexport class FkAutocompleteOptionTplDirective {\n readonly templateRef = inject(TemplateRef);\n}\n\nlet nextAutocompleteId = 0;\n\n@Component({\n selector: 'fk-autocomplete',\n standalone: true,\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => AutocompleteComponent),\n },\n ],\n templateUrl: './autocomplete.component.html',\n styleUrl: './autocomplete.component.scss',\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, FieldControl\n{\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown in the text input when no value is selected. */\n readonly placeholder = input('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n /** List of selectable options rendered in the dropdown. */\n readonly options = input<AutocompleteOption[]>([]);\n\n /**\n * 'local' (default): filters options client-side.\n * 'manual': skips internal filtering — renders options as-is.\n * Use with searchChange output for server-side search.\n */\n readonly filterMode = input<AutocompleteFilterMode>('local');\n\n /** Whether async options are currently loading. */\n readonly loading = input(false);\n\n // ===== OUTPUTS =====\n\n /**\n * Emits the current input value on each keystroke.\n * Use in manual filterMode for server-side search.\n */\n readonly searchChange = output<string>();\n\n // ===== CONTENT CHILDREN =====\n\n /** Custom template for rendering each option in the dropdown. */\n readonly optionTpl = contentChild(FK_AUTOCOMPLETE_OPTION_TPL);\n\n // ===== FieldControl =====\n readonly id = `fk-autocomplete-${nextAutocompleteId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n // ===== DROPDOWN STATE =====\n readonly showDropdown = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-autocomplete',\n this.isFocused() ? 'fk-autocomplete--focused' : '',\n this.isDisabledSignal() ? 'fk-autocomplete--disabled' : '',\n this.showDropdown() ? 'fk-autocomplete--open' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n readonly filteredOptions = signal<AutocompleteOption[]>([]);\n readonly activeIndex = signal(-1);\n\n /** The options to render in the dropdown — filtered or raw depending on mode. */\n readonly visibleOptions = computed(() => {\n if (this.filterMode() === 'manual') {\n return this.options();\n }\n\n return this.filteredOptions();\n });\n\n private displayValue = '';\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.selectedValue;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n // In manual mode, show/hide dropdown when options change\n effect(() => {\n if (this.filterMode() !== 'manual') {\n return;\n }\n\n const opts = this.options();\n\n if (opts.length > 0 && this.isFocused()) {\n this.showDropdown.set(true);\n this.activeIndex.set(-1);\n } else if (opts.length === 0 && !this.loading()) {\n this.showDropdown.set(this.displayValue.length > 0 && this.isFocused());\n }\n });\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private selectedValue: string | number | null = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string | number | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string | number | null): void {\n this.selectedValue = value;\n\n const match = this.options().find((o) => o.value === value);\n\n this.displayValue = match?.label ?? (value !== null ? String(value) : '');\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.displayValue;\n }\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n\n if (isDisabled) {\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n }\n\n this.cdr.markForCheck();\n }\n\n // ===== OPTION MANAGEMENT =====\n /** Commits the given option as the selected value and closes the dropdown. */\n selectOption(option: AutocompleteOption): void {\n this.selectedValue = option.value;\n this.displayValue = option.label;\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = option.label;\n }\n\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n this.onChange(this.selectedValue);\n }\n\n private filterOptions(query: string): void {\n const lower = query.toLowerCase();\n const filtered = this.options().filter((o) =>\n o.label.toLowerCase().includes(lower),\n );\n\n this.filteredOptions.set(filtered);\n this.showDropdown.set(filtered.length > 0 && query.length > 0);\n this.activeIndex.set(-1);\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n if (this.isDisabledSignal()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n\n this.displayValue = input.value;\n\n // Clear the selected value when typing\n this.selectedValue = null;\n this.onChange(null);\n\n if (this.filterMode() === 'manual') {\n this.searchChange.emit(input.value);\n\n // In manual mode, show dropdown if there are options\n // (the parent controls options via the input binding)\n this.showDropdown.set(input.value.length > 0);\n this.activeIndex.set(-1);\n } else {\n this.filterOptions(input.value);\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabledSignal()) {\n return;\n }\n\n const visible = this.visibleOptions();\n\n if (!this.showDropdown() || visible.length === 0) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n\n const nextIndex = Math.min(this.activeIndex() + 1, visible.length - 1);\n\n this.activeIndex.set(nextIndex);\n\n break;\n }\n\n case 'ArrowUp': {\n event.preventDefault();\n\n const prevIndex = Math.max(this.activeIndex() - 1, 0);\n\n this.activeIndex.set(prevIndex);\n\n break;\n }\n\n case 'Enter': {\n event.preventDefault();\n\n const idx = this.activeIndex();\n\n if (idx >= 0 && idx < visible.length) {\n this.selectOption(visible[idx]);\n }\n\n break;\n }\n\n case 'Tab': {\n const tabIdx = this.activeIndex();\n\n if (tabIdx >= 0 && tabIdx < visible.length) {\n this.selectOption(visible[tabIdx]);\n }\n\n // Don't prevent default — let focus move to next field\n break;\n }\n\n case 'Escape': {\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n\n break;\n }\n }\n }\n\n onFocus(): void {\n if (this.isDisabledSignal()) {\n return;\n }\n\n this.isFocused.set(true);\n\n if (this.filterMode() === 'local' && this.displayValue) {\n this.filterOptions(this.displayValue);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n\n this.onTouched();\n }\n}\n","<div class=\"fk-autocomplete__wrapper\">\n <input\n #inputEl\n type=\"text\"\n class=\"fk-autocomplete__native\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.aria-expanded]=\"showDropdown()\"\n [attr.aria-autocomplete]=\"'list'\"\n [attr.role]=\"'combobox'\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n @if (showDropdown()) {\n <ul class=\"fk-autocomplete__dropdown\" role=\"listbox\">\n @if (loading()) {\n <li class=\"fk-autocomplete__status\" aria-disabled=\"true\">Loading…</li>\n } @else if (visibleOptions().length > 0) {\n @for (option of visibleOptions(); track option.value; let i = $index) {\n <li\n class=\"fk-autocomplete__option\"\n [class.fk-autocomplete__option--active]=\"i === activeIndex()\"\n role=\"option\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mousedown)=\"selectOption(option)\"\n >\n @if (optionTpl()) {\n <ng-container\n [ngTemplateOutlet]=\"optionTpl()!.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n />\n } @else {\n {{ option.label }}\n }\n </li>\n }\n } @else {\n <li class=\"fk-autocomplete__status\" aria-disabled=\"true\">\n No results found\n </li>\n }\n </ul>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextCheckboxId = 0;\n\n@Component({\n selector: 'fk-checkbox',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => CheckboxComponent),\n },\n ],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n})\nexport class CheckboxComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Text label rendered alongside the checkbox. */\n readonly label = input<string | null>(null);\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n\n // ===== INTERNAL STATE =====\n readonly checked = signal(false);\n\n // ===== FieldControl =====\n readonly id = `fk-checkbox-${nextCheckboxId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-checkbox',\n this.isFocused() ? 'fk-checkbox--focused' : '',\n this.isDisabledSignal() ? 'fk-checkbox--disabled' : '',\n this.checked() ? 'fk-checkbox--checked' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.checked();\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n // No-op: the checkbox <label> already handles click-to-toggle natively.\n // Calling input.click() here would double-toggle when inside fk-form-field.\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: boolean) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onChanged(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n this.onChange(input.checked);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<label class=\"fk-checkbox__layout\">\n <input\n #inputEl\n type=\"checkbox\"\n class=\"fk-checkbox__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabledSignal()\"\n (change)=\"onChanged($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fk-checkbox__box\">\n <svg\n class=\"fk-checkbox__check\"\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"1.5 5 4.5 8 10.5 2\" />\n </svg>\n </span>\n <span class=\"fk-checkbox__label\">\n @if (label()) {\n {{ label() }}\n }\n <ng-content />\n </span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextDateInputId = 0;\n\n@Component({\n selector: 'fk-date-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => DateInputComponent),\n },\n ],\n templateUrl: './date-input.component.html',\n styleUrl: './date-input.component.scss',\n})\nexport class DateInputComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n /** Earliest selectable date as an ISO 8601 date string (YYYY-MM-DD). */\n readonly min = input<string | null>(null);\n /** Latest selectable date as an ISO 8601 date string (YYYY-MM-DD). */\n readonly max = input<string | null>(null);\n\n // ===== FieldControl =====\n readonly id = `fk-date-input-${nextDateInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-date-input',\n this.isFocused() ? 'fk-date-input--focused' : '',\n this.isDisabledSignal() ? 'fk-date-input--disabled' : '',\n this.isReadonly() ? 'fk-date-input--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<input\n #inputEl\n type=\"date\"\n class=\"fk-date-input__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.readonly]=\"isReadonly() || null\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextDatetimeInputId = 0;\n\n@Component({\n selector: 'fk-datetime-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => DatetimeInputComponent),\n },\n ],\n templateUrl: './datetime-input.component.html',\n styleUrl: './datetime-input.component.scss',\n})\nexport class DatetimeInputComponent\n implements ControlValueAccessor, FieldControl\n{\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n /** Earliest selectable datetime as an ISO 8601 local datetime string. */\n readonly min = input<string | null>(null);\n /** Latest selectable datetime as an ISO 8601 local datetime string. */\n readonly max = input<string | null>(null);\n\n // ===== FieldControl =====\n readonly id = `fk-datetime-input-${nextDatetimeInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-datetime-input',\n this.isFocused() ? 'fk-datetime-input--focused' : '',\n this.isDisabledSignal() ? 'fk-datetime-input--disabled' : '',\n this.isReadonly() ? 'fk-datetime-input--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<input\n #inputEl\n type=\"datetime-local\"\n class=\"fk-datetime-input__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.readonly]=\"isReadonly() || null\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextFileUploadId = 0;\n\n@Component({\n selector: 'fk-file-upload',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => FileUploadComponent),\n },\n ],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss',\n})\nexport class FileUploadComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown when no file has been selected. */\n readonly placeholder = input('Choose file...');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n /** MIME types or file extensions the native file picker should accept. */\n readonly accept = input<string | null>(null);\n /** Whether the user can select more than one file at a time. */\n readonly multiple = input(false);\n\n // ===== FieldControl =====\n readonly id = `fk-file-upload-${nextFileUploadId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n readonly fileNames = signal<string[]>([]);\n\n readonly classes = computed(() =>\n [\n 'fk-file-upload',\n this.isFocused() ? 'fk-file-upload--focused' : '',\n this.isDisabledSignal() ? 'fk-file-upload--disabled' : '',\n this.fileNames().length > 0 ? 'fk-file-upload--filled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n private files: FileList | null = null;\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.files || this.files.length === 0;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.click();\n }\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FileList | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: FileList | null): void {\n this.files = value;\n\n if (value && value.length > 0) {\n const names: string[] = [];\n\n for (let i = 0; i < value.length; i++) {\n names.push(value[i].name);\n }\n\n this.fileNames.set(names);\n } else {\n this.fileNames.set([]);\n }\n }\n\n registerOnChange(fn: (value: FileList | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.files = input.files;\n\n if (this.files && this.files.length > 0) {\n const names: string[] = [];\n\n for (let i = 0; i < this.files.length; i++) {\n names.push(this.files[i].name);\n }\n\n this.fileNames.set(names);\n } else {\n this.fileNames.set([]);\n }\n\n this.onChange(this.files);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<div class=\"fk-file-upload__wrapper\">\n <input\n #inputEl\n type=\"file\"\n class=\"fk-file-upload__native\"\n [attr.id]=\"id\"\n [attr.accept]=\"accept()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [multiple]=\"multiple()\"\n [disabled]=\"isDisabledSignal()\"\n (change)=\"onFileChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <div class=\"fk-file-upload__display\">\n <span class=\"fk-file-upload__text\">\n @if (fileNames().length > 0) {\n {{ fileNames().join(', ') }}\n } @else {\n {{ placeholder() }}\n }\n </span>\n <span class=\"fk-file-upload__button\">Browse</span>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\nimport type { InputType } from './input.types';\n\nlet nextInputId = 0;\n\n@Component({\n selector: 'fk-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => InputComponent),\n },\n ],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** HTML input type attribute (e.g. \"text\", \"email\", \"search\"). */\n readonly type = input<InputType>('text');\n /** Placeholder text shown when the input has no value. */\n readonly placeholder = input('');\n /**\n * Native `autocomplete` attribute token (e.g. \"username\", \"email\",\n * \"name\", \"off\"). Null omits the attribute entirely. Set this on\n * identifying fields (login email, name) so browsers and password\n * managers behave correctly — see fk-password-input for the password\n * counterpart.\n */\n readonly autocomplete = input<string | null>(null);\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n\n // ===== FieldControl =====\n readonly id = `fk-input-${nextInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-input',\n this.isFocused() ? 'fk-input--focused' : '',\n this.isDisabledSignal() ? 'fk-input--disabled' : '',\n this.isReadonly() ? 'fk-input--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<input\n #inputEl\n class=\"fk-input__native\"\n [attr.id]=\"id\"\n [attr.type]=\"type()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.readonly]=\"isReadonly() || null\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextNumberInputId = 0;\n\n@Component({\n selector: 'fk-number-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => NumberInputComponent),\n },\n ],\n templateUrl: './number-input.component.html',\n styleUrl: './number-input.component.scss',\n})\nexport class NumberInputComponent\n implements ControlValueAccessor, FieldControl\n{\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown when the input has no value. */\n readonly placeholder = input('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n /** Minimum allowed numeric value. */\n readonly min = input<number | null>(null);\n /** Maximum allowed numeric value. */\n readonly max = input<number | null>(null);\n /** Increment step for the native number input spinner. */\n readonly step = input<number | null>(null);\n\n // ===== FieldControl =====\n readonly id = `fk-number-input-${nextNumberInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-number-input',\n this.isFocused() ? 'fk-number-input--focused' : '',\n this.isDisabledSignal() ? 'fk-number-input--disabled' : '',\n this.isReadonly() ? 'fk-number-input--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return this.value === null || this.value === undefined;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value: number | null = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: number | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: number | null): void {\n this.value = value ?? null;\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value !== null ? String(this.value) : '';\n }\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value === '' ? null : Number(input.value);\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<input\n #inputEl\n type=\"number\"\n class=\"fk-number-input__native\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.readonly]=\"isReadonly() || null\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport type { IconColor, IconSize } from '@frame-kit/ui-ng/core/icon';\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\nimport type { PasswordAutoComplete } from './password-input.types';\n\nlet nextPasswordId = 0;\n\nconst ICON_SIZE_PRESETS = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst ICON_COLOR_PRESETS = ['default', 'muted', 'primary', 'danger', 'success'];\n\n@Component({\n selector: 'fk-password-input',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => PasswordInputComponent),\n },\n ],\n templateUrl: './password-input.component.html',\n styleUrl: './password-input.component.scss',\n})\nexport class PasswordInputComponent\n implements ControlValueAccessor, FieldControl\n{\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown when the input has no value. */\n readonly placeholder = input('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n /** Autocomplete hint passed to the native input — use \"current-password\" or \"new-password\". */\n readonly autocomplete = input<PasswordAutoComplete>('current-password');\n /** Whether the show/hide password toggle button is rendered. */\n readonly showToggle = input(true);\n /** Icon size for the visibility toggle button. */\n readonly toggleIconSize = input<IconSize>('sm');\n /** Icon color for the visibility toggle button. */\n readonly toggleIconColor = input<IconColor>('muted');\n\n // ===== INTERNAL STATE =====\n readonly visible = signal(false);\n\n // ===== FieldControl =====\n readonly id = `fk-password-${nextPasswordId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-password-input',\n this.showToggle() ? 'fk-password-input--has-toggle' : '',\n this.isFocused() ? 'fk-password-input--focused' : '',\n this.isDisabledSignal() ? 'fk-password-input--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n readonly toggleSizeStyle = computed(() => {\n const size = this.toggleIconSize();\n\n if (ICON_SIZE_PRESETS.includes(size)) {\n return `var(--fk-icon-size-${size})`;\n }\n\n return size;\n });\n\n readonly toggleColorStyle = computed(() => {\n const color = this.toggleIconColor();\n\n if (color === 'inherit') {\n return null;\n }\n\n if (ICON_COLOR_PRESETS.includes(color)) {\n return `var(--fk-icon-color-${color})`;\n }\n\n return color;\n });\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n /** Toggles the password field between visible plain text and masked mode. */\n toggleVisibility(): void {\n this.visible.update((v) => !v);\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<div class=\"fk-password-input__wrapper\">\n <input\n #inputEl\n class=\"fk-password-input__native\"\n [attr.id]=\"id\"\n [attr.type]=\"visible() ? 'text' : 'password'\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [disabled]=\"isDisabledSignal()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"fk-password-input__toggle\"\n [attr.aria-label]=\"visible() ? 'Hide password' : 'Show password'\"\n [disabled]=\"isDisabledSignal()\"\n [style.font-size]=\"toggleSizeStyle()\"\n [style.color]=\"toggleColorStyle()\"\n (click)=\"toggleVisibility()\"\n tabindex=\"-1\"\n >\n @if (visible()) {\n <svg\n class=\"fk-password-input__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M13.455 13.455A7.553 7.553 0 0 1 9 15c-4.5 0-7.5-6-7.5-6a13.838 13.838 0 0 1 3.795-4.455\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.425 3.18A6.84 6.84 0 0 1 9 3c4.5 0 7.5 6 7.5 6a13.875 13.875 0 0 1-1.62 2.393\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <line\n x1=\"1.5\"\n y1=\"1.5\"\n x2=\"16.5\"\n y2=\"16.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n } @else {\n <svg\n class=\"fk-password-input__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M1.5 9s3-6 7.5-6 7.5 6 7.5 6-3 6-7.5 6S1.5 9 1.5 9z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"2.25\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </button>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\nimport type { RadioOption } from './radio.types';\n\nlet nextRadioId = 0;\n\n@Component({\n selector: 'fk-radio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => RadioComponent),\n },\n ],\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.scss',\n})\nexport class RadioComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** List of radio options to render. */\n readonly options = input<RadioOption[]>([]);\n /** HTML name attribute shared across all radio buttons in the group. */\n readonly name = input(`fk-radio-group-${nextRadioId}`);\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n\n // ===== FieldControl =====\n readonly id = `fk-radio-${nextRadioId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-radio',\n this.isFocused() ? 'fk-radio--focused' : '',\n this.isDisabledSignal() ? 'fk-radio--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n value: string | number = '';\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return this.value === '' || this.value === null || this.value === undefined;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string | number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string | number): void {\n this.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onSelectionChange(value: string | number): void {\n this.value = value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<div\n class=\"fk-radio__group\"\n role=\"radiogroup\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-required]=\"isRequired() || null\"\n>\n @for (option of options(); track option.value) {\n <label\n class=\"fk-radio__option\"\n [class.fk-radio__option--disabled]=\"option.disabled || isDisabledSignal()\"\n [class.fk-radio__option--checked]=\"option.value === value\"\n >\n <input\n type=\"radio\"\n class=\"fk-radio__native\"\n [attr.name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"option.value === value\"\n [disabled]=\"option.disabled || isDisabledSignal()\"\n (change)=\"onSelectionChange(option.value)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fk-radio__indicator\"></span>\n <span class=\"fk-radio__label\">{{ option.label }}</span>\n </label>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\nimport type { SelectOption } from './select.types';\n\nlet nextSelectId = 0;\n\n@Component({\n selector: 'fk-select',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n ],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n})\nexport class SelectComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLSelectElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** List of options to render inside the native select element. */\n readonly options = input<SelectOption[]>([]);\n /** Placeholder option displayed when no value is selected. */\n readonly placeholder = input('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n\n // ===== FieldControl =====\n readonly id = `fk-select-${nextSelectId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-select',\n this.isFocused() ? 'fk-select--focused' : '',\n this.isDisabledSignal() ? 'fk-select--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n value: string | number = '';\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return this.value === '' || this.value === null || this.value === undefined;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const select = this.inputRef()?.nativeElement;\n\n if (select && !this.isDisabledSignal()) {\n select.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string | number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string | number): void {\n this.value = value ?? '';\n\n const select = this.inputRef()?.nativeElement;\n\n if (select) {\n select.value = String(this.value);\n }\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onSelectionChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n\n this.value = select.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<div class=\"fk-select__wrapper\">\n <select\n #inputEl\n class=\"fk-select__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [disabled]=\"isDisabledSignal()\"\n (change)=\"onSelectionChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n @if (placeholder()) {\n <option value=\"\" disabled [selected]=\"!value\">\n {{ placeholder() }}\n </option>\n }\n @for (option of options(); track option.value) {\n <option\n [value]=\"option.value\"\n [disabled]=\"option.disabled ?? false\"\n [selected]=\"option.value === value\"\n >\n {{ option.label }}\n </option>\n }\n </select>\n <svg\n class=\"fk-select__arrow\"\n viewBox=\"0 0 12 8\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"1 1.5 6 6.5 11 1.5\" />\n </svg>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextSliderId = 0;\n\n@Component({\n selector: 'fk-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => SliderComponent),\n },\n ],\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n})\nexport class SliderComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n /** Minimum value of the slider range. */\n readonly min = input(0);\n /** Maximum value of the slider range. */\n readonly max = input(100);\n /** Increment step between slider positions. */\n readonly step = input(1);\n /** Whether the current numeric value is displayed alongside the thumb. */\n readonly showValue = input(false);\n\n // ===== FieldControl =====\n readonly id = `fk-slider-${nextSliderId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-slider',\n this.isFocused() ? 'fk-slider--focused' : '',\n this.isDisabledSignal() ? 'fk-slider--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n currentValue = 0;\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return false; // Sliders always have a value\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: number): void {\n this.currentValue = value ?? this.min();\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = String(this.currentValue);\n }\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.currentValue = Number(input.value);\n this.onChange(this.currentValue);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<div class=\"fk-slider__wrapper\">\n <input\n #inputEl\n type=\"range\"\n class=\"fk-slider__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"currentValue\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n @if (showValue()) {\n <span class=\"fk-slider__value\">{{ currentValue }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextSwitchId = 0;\n\n@Component({\n selector: 'fk-switch',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => SwitchComponent),\n },\n ],\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss',\n})\nexport class SwitchComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n\n // ===== INTERNAL STATE =====\n readonly checked = signal(false);\n\n // ===== FieldControl =====\n readonly id = `fk-switch-${nextSwitchId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-switch',\n this.isFocused() ? 'fk-switch--focused' : '',\n this.isDisabledSignal() ? 'fk-switch--disabled' : '',\n this.checked() ? 'fk-switch--checked' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.checked();\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n input.click();\n }\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: boolean) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onChanged(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.checked.set(input.checked);\n this.onChange(input.checked);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<label class=\"fk-switch__layout\">\n <input\n #inputEl\n type=\"checkbox\"\n role=\"switch\"\n class=\"fk-switch__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-required]=\"isRequired() || null\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabledSignal()\"\n (change)=\"onChanged($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fk-switch__track\">\n <span class=\"fk-switch__thumb\"></span>\n </span>\n <span class=\"fk-switch__label\">\n <ng-content />\n </span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextTagInputId = 0;\n\n@Component({\n selector: 'fk-tag-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => TagInputComponent),\n },\n ],\n templateUrl: './tag-input.component.html',\n styleUrl: './tag-input.component.scss',\n})\nexport class TagInputComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown in the text input when there are no tags. */\n readonly placeholder = input('Add a tag...');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n /** Character(s) that commit the current input as a new tag (default: comma). */\n readonly separator = input<string>(',');\n\n // ===== FieldControl =====\n readonly id = `fk-tag-input-${nextTagInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n readonly tags = signal<string[]>([]);\n\n readonly classes = computed(() =>\n [\n 'fk-tag-input',\n this.isFocused() ? 'fk-tag-input--focused' : '',\n this.isDisabledSignal() ? 'fk-tag-input--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return this.tags().length === 0;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n this.focusInput();\n }\n\n /** Focuses the inner text input element. */\n focusInput(): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string[]) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string[]): void {\n this.tags.set(Array.isArray(value) ? [...value] : []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== TAG MANAGEMENT =====\n /** Adds a tag to the list if it is non-empty and not already present. */\n addTag(tag: string): void {\n const trimmed = tag.trim();\n\n if (!trimmed || this.tags().includes(trimmed)) {\n return;\n }\n\n this.tags.update((current) => [...current, trimmed]);\n this.onChange(this.tags());\n }\n\n /** Removes the given tag from the list. */\n removeTag(tag: string, event?: Event): void {\n event?.stopPropagation();\n this.tags.update((current) => current.filter((t) => t !== tag));\n this.onChange(this.tags());\n }\n\n // ===== EVENT HANDLERS =====\n onKeydown(event: KeyboardEvent): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n if (event.key === 'Enter' || this.separator().includes(event.key)) {\n event.preventDefault();\n\n if (value.trim()) {\n this.addTag(value);\n input.value = '';\n }\n }\n\n if (event.key === 'Backspace' && !value && this.tags().length > 0) {\n const lastTag = this.tags()[this.tags().length - 1];\n\n this.removeTag(lastTag);\n }\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n\n // Add any remaining text as a tag\n const input = this.inputRef()?.nativeElement;\n\n if (input && input.value.trim()) {\n this.addTag(input.value);\n input.value = '';\n }\n\n this.onTouched();\n }\n}\n","<div\n class=\"fk-tag-input__container\"\n role=\"group\"\n tabindex=\"-1\"\n (click)=\"focusInput()\"\n (keydown.enter)=\"focusInput()\"\n>\n @for (tag of tags(); track tag) {\n <span class=\"fk-tag-input__tag\">\n {{ tag }}\n @if (!isDisabledSignal()) {\n <button\n type=\"button\"\n class=\"fk-tag-input__remove\"\n [attr.aria-label]=\"'Remove ' + tag\"\n tabindex=\"-1\"\n (click)=\"removeTag(tag, $event)\"\n >\n ×\n </button>\n }\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n class=\"fk-tag-input__native\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"tags().length === 0 ? placeholder() : ''\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [disabled]=\"isDisabledSignal()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextTextareaId = 0;\n\n@Component({\n selector: 'fk-textarea',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => TextareaComponent),\n },\n ],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n})\nexport class TextareaComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLTextAreaElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n /** Placeholder text shown when the textarea has no value. */\n readonly placeholder = input('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n /** Number of visible text rows for the initial textarea height. */\n readonly rows = input(3);\n\n // ===== FieldControl =====\n readonly id = `fk-textarea-${nextTextareaId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-textarea',\n this.isFocused() ? 'fk-textarea--focused' : '',\n this.isDisabledSignal() ? 'fk-textarea--disabled' : '',\n this.isReadonly() ? 'fk-textarea--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLTextAreaElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<textarea\n #inputEl\n class=\"fk-textarea__native\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.readonly]=\"isReadonly() || null\"\n [attr.rows]=\"rows()\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n></textarea>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport {\n FIELD_CONTROL,\n type FieldControl,\n} from '../../composition/form-field/field-control';\n\nlet nextTimeInputId = 0;\n\n@Component({\n selector: 'fk-time-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FIELD_CONTROL,\n useExisting: forwardRef(() => TimeInputComponent),\n },\n ],\n templateUrl: './time-input.component.html',\n styleUrl: './time-input.component.scss',\n})\nexport class TimeInputComponent implements ControlValueAccessor, FieldControl {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly ngControl = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n // ===== INPUTS =====\n readonly className = input<string>('');\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isRequired = input(false, { alias: 'required' });\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly isReadonly = input(false, { alias: 'readonly' });\n /** Earliest selectable time as an HH:MM string. */\n readonly min = input<string | null>(null);\n /** Latest selectable time as an HH:MM string. */\n readonly max = input<string | null>(null);\n /** Step in seconds between selectable time values. */\n readonly step = input<number | null>(null);\n\n // ===== FieldControl =====\n readonly id = `fk-time-input-${nextTimeInputId++}`;\n readonly describedByIdsSignal = signal<string[]>([]);\n readonly isFocused = signal(false);\n readonly isDisabledSignal = signal(false);\n\n readonly classes = computed(() =>\n [\n 'fk-time-input',\n this.isFocused() ? 'fk-time-input--focused' : '',\n this.isDisabledSignal() ? 'fk-time-input--disabled' : '',\n this.isReadonly() ? 'fk-time-input--readonly' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n get focused(): boolean {\n return this.isFocused();\n }\n\n get empty(): boolean {\n return !this.value;\n }\n\n get disabled(): boolean {\n return this.isDisabledSignal();\n }\n\n get required(): boolean {\n return this.isRequired();\n }\n\n get readonly(): boolean {\n return this.isReadonly();\n }\n\n get describedByIds(): string[] {\n return this.describedByIdsSignal();\n }\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set(ids);\n }\n\n onContainerClick(_event: MouseEvent): void {\n const input = this.inputRef()?.nativeElement;\n\n if (input && !this.isDisabledSignal()) {\n input.focus();\n }\n }\n\n // ===== ControlValueAccessor =====\n private value = '';\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value = value ?? '';\n\n const input = this.inputRef()?.nativeElement;\n\n if (input) {\n input.value = this.value;\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n // ===== EVENT HANDLERS =====\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n}\n","<input\n #inputEl\n type=\"time\"\n class=\"fk-time-input__native\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n describedByIdsSignal().length ? describedByIdsSignal().join(' ') : null\n \"\n [attr.aria-invalid]=\"ngControl?.invalid ?? null\"\n [attr.aria-required]=\"isRequired() || null\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.readonly]=\"isReadonly() || null\"\n [disabled]=\"isDisabledSignal()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n/>\n","import { Injectable, Type } from '@angular/core';\n\nimport { AutocompleteComponent } from '../fields/autocomplete/autocomplete.component';\nimport { CheckboxComponent } from '../fields/checkbox/checkbox.component';\nimport { DateInputComponent } from '../fields/date-input/date-input.component';\nimport { DatetimeInputComponent } from '../fields/datetime-input/datetime-input.component';\nimport { FileUploadComponent } from '../fields/file-upload/file-upload.component';\nimport { InputComponent } from '../fields/input/input.component';\nimport { NumberInputComponent } from '../fields/number-input/number-input.component';\nimport { PasswordInputComponent } from '../fields/password-input/password-input.component';\nimport { RadioComponent } from '../fields/radio/radio.component';\nimport { SelectComponent } from '../fields/select/select.component';\nimport { SliderComponent } from '../fields/slider/slider.component';\nimport { SwitchComponent } from '../fields/switch/switch.component';\nimport { TagInputComponent } from '../fields/tag-input/tag-input.component';\nimport { TextareaComponent } from '../fields/textarea/textarea.component';\nimport { TimeInputComponent } from '../fields/time-input/time-input.component';\n\n/**\n * Registry that maps field type strings to Angular component classes.\n *\n * Built-in field types are registered by default. Custom field types\n * can be registered at any time to extend the schema engine.\n *\n * @example\n * ```ts\n * // Register a custom field type\n * registry.register('currency', CurrencyInputComponent);\n *\n * // Use in schema\n * { key: 'price', type: 'currency', label: 'Price' }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class FieldRegistry {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly components = new Map<string, Type<any>>();\n\n constructor() {\n this.registerDefaults();\n }\n\n /**\n * Registers a component class for a field type key.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(type: string, component: Type<any>): void {\n this.components.set(type, component);\n }\n\n /**\n * Returns the component class for a field type key.\n *\n * @throws Error if the type is not registered\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(type: string): Type<any> {\n const component = this.components.get(type);\n\n if (!component) {\n throw new Error(\n `FieldRegistry: unknown field type \"${type}\". ` +\n `Register it with registry.register(\"${type}\", Component).`,\n );\n }\n\n return component;\n }\n\n /**\n * Checks if a field type is registered.\n */\n has(type: string): boolean {\n return this.components.has(type);\n }\n\n private registerDefaults(): void {\n this.register('input', InputComponent);\n this.register('password', PasswordInputComponent);\n this.register('textarea', TextareaComponent);\n this.register('number', NumberInputComponent);\n this.register('select', SelectComponent);\n this.register('checkbox', CheckboxComponent);\n this.register('radio', RadioComponent);\n this.register('switch', SwitchComponent);\n this.register('date', DateInputComponent);\n this.register('time', TimeInputComponent);\n this.register('datetime', DatetimeInputComponent);\n this.register('autocomplete', AutocompleteComponent);\n this.register('file', FileUploadComponent);\n this.register('tags', TagInputComponent);\n this.register('slider', SliderComponent);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n HostBinding,\n inject,\n input,\n signal,\n type Type,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { distinctUntilChanged, map, Subscription } from 'rxjs';\n\nimport { IconComponent } from '@frame-kit/ui-ng/core/icon';\nimport { LinkComponent } from '@frame-kit/ui-ng/core/link';\nimport { FieldRegistry } from '../../engine/field-registry';\nimport type { FieldSchema } from '../../engine/schema.types';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { FkPrefixDirective } from '../form-field/prefix.directive';\nimport { HintComponent } from '../hint/hint.component';\n\n/**\n * Dynamically renders a single field from a schema definition.\n *\n * Wraps the control in a `fk-form-field` for consistent layout,\n * accessibility, and error handling. Uses `ViewContainerRef` to\n * instantiate the appropriate control component from the field registry.\n *\n * @example\n * ```html\n * <fk-field-outlet\n * [field]=\"fieldSchema\"\n * [form]=\"formGroup\"\n * [submitted]=\"submitted()\"\n * />\n * ```\n */\n@Component({\n selector: 'fk-field-outlet',\n standalone: true,\n imports: [\n FormFieldComponent,\n FkPrefixDirective,\n HintComponent,\n IconComponent,\n LinkComponent,\n ReactiveFormsModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './field-outlet.component.html',\n styles: `\n .fk-field-outlet__label-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n font-family: var(--fk-font-family-base);\n font-size: var(--fk-form-label-font-size);\n font-weight: var(--fk-form-label-font-weight);\n line-height: var(--fk-form-label-line-height);\n color: var(--fk-form-label-color);\n }\n\n .fk-field-outlet__label-text {\n display: flex;\n align-items: baseline;\n gap: 0.25em;\n }\n\n .fk-field-outlet__required {\n color: var(--fk-form-error-color);\n }\n\n .fk-field-outlet__label-row fk-link {\n --fk-link-font-size-small: 0.75rem;\n --fk-link-font-size-medium: 0.75rem;\n }\n\n .fk-field-outlet__label-row + fk-form-field {\n margin-top: 0;\n }\n `,\n})\nexport class FieldOutletComponent {\n readonly className = input<string>('');\n /** Schema definition for the field to render. */\n readonly field = input.required<FieldSchema>();\n /** Parent FormGroup used to bind the field's reactive control. */\n readonly form = input.required<FormGroup>();\n /** Whether the parent form has been submitted; propagated to fk-form-field. */\n readonly submitted = input(false);\n\n /** Whether this field is visible (for conditional visibility). */\n readonly visible = signal(true);\n\n readonly classes = computed(() =>\n ['fk-field-outlet', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n @HostBinding('style.display')\n get hostDisplay() {\n return this.visible() ? '' : 'none';\n }\n\n private readonly fieldRegistry = inject(FieldRegistry);\n private readonly destroyRef = inject(DestroyRef);\n private readonly controlHostRef = viewChild<unknown, ViewContainerRef>(\n 'controlHost',\n {\n read: ViewContainerRef,\n },\n );\n\n /** Track what was last rendered to avoid unnecessary re-creation. */\n private renderedField: FieldSchema | null = null;\n private renderedForm: FormGroup | null = null;\n private renderedType: Type<unknown> | null = null;\n\n /** Subscription to statusChanges for disabled sync — cleaned up on re-render. */\n private statusSub: Subscription | null = null;\n\n /** Resolved component type from the registry. */\n readonly componentType = computed(() =>\n this.fieldRegistry.get(this.field().type),\n );\n\n constructor() {\n effect(() => {\n this.renderControl();\n });\n\n effect(() => {\n this.setupVisibility();\n });\n }\n\n private renderControl(): void {\n const container = this.controlHostRef();\n\n if (!container) {\n return;\n }\n\n const field = this.field();\n const form = this.form();\n const componentType = this.componentType();\n\n // Skip re-render if the inputs haven't changed\n if (\n field === this.renderedField &&\n form === this.renderedForm &&\n componentType === this.renderedType\n ) {\n return;\n }\n\n this.renderedField = field;\n this.renderedForm = form;\n this.renderedType = componentType;\n\n // Clean up previous statusChanges subscription\n this.statusSub?.unsubscribe();\n this.statusSub = null;\n\n container.clear();\n\n const control = form.get(field.key);\n\n if (!control) {\n return;\n }\n\n const componentRef = container.createComponent(componentType);\n const instance = componentRef.instance;\n\n // Bind inputs that the control components typically accept\n if (field.placeholder !== undefined && 'placeholder' in instance) {\n componentRef.setInput('placeholder', field.placeholder);\n }\n\n if (field.autocomplete !== undefined && 'autocomplete' in instance) {\n componentRef.setInput('autocomplete', field.autocomplete);\n }\n\n if (field.required && 'required' in instance) {\n componentRef.setInput('required', true);\n }\n\n if (field.readonly && 'readonly' in instance) {\n componentRef.setInput('readonly', true);\n }\n\n if (field.options && 'options' in instance) {\n componentRef.setInput('options', field.options);\n }\n\n if (field.label && 'label' in instance) {\n componentRef.setInput('label', field.label);\n }\n\n // Bind reactive form control\n if (instance.ngControl === undefined || instance.ngControl === null) {\n // Manually wire the control if no NgControl injected\n if (typeof instance.writeValue === 'function') {\n instance.writeValue(control.value);\n }\n\n if (typeof instance.registerOnChange === 'function') {\n instance.registerOnChange((value: unknown) => {\n control.setValue(value);\n control.markAsDirty();\n });\n }\n\n if (typeof instance.registerOnTouched === 'function') {\n instance.registerOnTouched(() => {\n control.markAsTouched();\n });\n }\n\n if (typeof instance.setDisabledState === 'function') {\n instance.setDisabledState(control.disabled);\n\n this.statusSub = control.statusChanges\n .pipe(\n map(() => control.disabled),\n distinctUntilChanged(),\n )\n .subscribe((disabled) => {\n instance.setDisabledState(disabled);\n });\n }\n }\n }\n\n private setupVisibility(): void {\n const field = this.field();\n const form = this.form();\n const rule = field.visibleWhen;\n\n if (!rule) {\n this.visible.set(true);\n\n return;\n }\n\n const dependentControl = form.get(rule.field);\n\n if (!dependentControl) {\n this.visible.set(true);\n\n return;\n }\n\n // Evaluate initial visibility\n this.evaluateVisibility(dependentControl.value, rule);\n\n // Subscribe to changes\n dependentControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.evaluateVisibility(value, rule);\n });\n }\n\n private evaluateVisibility(\n value: unknown,\n rule: NonNullable<FieldSchema['visibleWhen']>,\n ): void {\n if (rule.equals !== undefined) {\n this.visible.set(value === rule.equals);\n } else if (rule.notEquals !== undefined) {\n this.visible.set(value !== rule.notEquals);\n } else {\n this.visible.set(true);\n }\n }\n}\n","@if (field().ui?.labelEndLink) {\n <div class=\"fk-field-outlet__label-row\">\n <span class=\"fk-field-outlet__label-text\">\n {{ field().label }}\n @if (field().required) {\n <span class=\"fk-field-outlet__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n <fk-link\n variant=\"primary\"\n size=\"small\"\n [routerLink]=\"field().ui!.labelEndLink!.route\"\n >\n {{ field().ui!.labelEndLink!.text }}\n </fk-link>\n </div>\n}\n\n<fk-form-field\n [label]=\"\n field().ui?.labelEndLink\n ? null\n : field().type === 'checkbox'\n ? null\n : (field().label ?? null)\n \"\n [showErrorsOn]=\"'touched'\"\n [submitted]=\"submitted()\"\n [errorMessages]=\"field().errorMessages ?? null\"\n [fallbackControl]=\"form().get(field().key)\"\n [style.display]=\"visible() ? '' : 'none'\"\n>\n @if (field().ui?.prefixIcon) {\n <fk-icon\n fkPrefix\n [name]=\"field().ui!.prefixIcon!\"\n size=\"sm\"\n color=\"muted\"\n />\n }\n <ng-container #controlHost />\n @if (field().ui?.hint) {\n <fk-hint>{{ field().ui?.hint }}</fk-hint>\n }\n</fk-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { FormArray, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport type { FieldSchema } from '../../engine/schema.types';\nimport { SchemaParser } from '../../engine/schema-parser';\nimport { FieldOutletComponent } from './field-outlet.component';\n\n/**\n * Renders a FormArray as repeatable rows of fields.\n *\n * Each row is a FormGroup built from the field's `arrayFields` definition.\n * Provides add/remove row functionality with min/max constraints.\n *\n * @example\n * ```html\n * <fk-field-array-outlet\n * [field]=\"phoneNumbersField\"\n * [formArray]=\"form.get('phones') as FormArray\"\n * [submitted]=\"submitted()\"\n * />\n * ```\n */\n@Component({\n selector: 'fk-field-array-outlet',\n standalone: true,\n imports: [FieldOutletComponent, ReactiveFormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './field-array-outlet.component.html',\n styles: `\n :host {\n display: block;\n }\n\n .fk-field-array__legend {\n font-size: var(\n --fk-field-array-label-font-size,\n var(--fk-form-label-font-size, 0.875rem)\n );\n font-weight: var(\n --fk-field-array-label-font-weight,\n var(--fk-form-label-font-weight, 500)\n );\n color: var(\n --fk-field-array-label-color,\n var(--fk-form-label-color, #1f2d3d)\n );\n }\n\n .fk-field-array__row {\n display: flex;\n column-gap: var(--fk-field-array-row-gap, var(--fk-rhythm-3, 0.75rem));\n align-items: flex-start;\n margin-top: var(--fk-field-array-row-gap, var(--fk-rhythm-3, 0.75rem));\n }\n\n .fk-field-array__legend + .fk-field-array__row {\n margin-top: var(\n --fk-field-array-label-gap,\n var(--fk-form-label-gap, 0.375rem)\n );\n }\n\n .fk-field-array__row > fk-field-outlet {\n flex: 1;\n --fk-form-label-gap: 0;\n }\n\n .fk-field-array__remove {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--fk-field-array-remove-size, var(--fk-rhythm-8, 2rem));\n height: var(--fk-field-array-remove-size, var(--fk-rhythm-8, 2rem));\n margin-top: var(--fk-field-array-remove-offset, 0.25rem);\n padding: 0;\n font-size: 1.125rem;\n line-height: 1;\n color: var(--fk-field-array-remove-color, var(--fk-color-muted, #8a98a8));\n background: transparent;\n border: 1px solid\n var(\n --fk-field-array-remove-border-color,\n var(--fk-color-border, #d9e2ee)\n );\n border-radius: var(\n --fk-field-array-remove-radius,\n var(--fk-radius-md, 0.5rem)\n );\n cursor: pointer;\n transition:\n color 0.15s,\n border-color 0.15s;\n }\n\n .fk-field-array__remove:hover {\n color: var(\n --fk-field-array-remove-hover-color,\n var(--fk-form-error-color, #dc2626)\n );\n border-color: var(\n --fk-field-array-remove-hover-color,\n var(--fk-form-error-color, #dc2626)\n );\n }\n\n .fk-field-array__remove:focus-visible {\n outline: none;\n box-shadow: var(\n --fk-field-array-remove-focus-ring,\n var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, 0.18))\n );\n }\n\n .fk-field-array__add {\n margin-top: var(--fk-field-array-add-gap, var(--fk-rhythm-3, 0.75rem));\n padding: var(--fk-field-array-add-padding-y, var(--fk-rhythm-2, 0.5rem))\n var(--fk-field-array-add-padding-x, var(--fk-rhythm-4, 1rem));\n font-size: var(\n --fk-field-array-add-font-size,\n var(--fk-typography-small-font-size, 0.8125rem)\n );\n color: var(--fk-field-array-add-color, var(--fk-color-primary, #0a84ff));\n background: transparent;\n border: 1px dashed\n var(--fk-field-array-add-border-color, var(--fk-color-border, #d9e2ee));\n border-radius: var(\n --fk-field-array-add-radius,\n var(--fk-radius-md, 0.5rem)\n );\n cursor: pointer;\n transition:\n color 0.15s,\n border-color 0.15s;\n }\n\n .fk-field-array__add:hover {\n border-color: var(\n --fk-field-array-add-hover-border-color,\n var(--fk-color-primary, #0a84ff)\n );\n }\n\n .fk-field-array__add:focus-visible {\n outline: none;\n box-shadow: var(\n --fk-field-array-add-focus-ring,\n var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, 0.18))\n );\n }\n `,\n})\nexport class FieldArrayOutletComponent {\n readonly className = input<string>('');\n /** Schema definition for the repeating field, including arrayFields and row constraints. */\n readonly field = input.required<FieldSchema>();\n /** The FormArray backing the repeatable rows. */\n readonly formArray = input.required<FormArray>();\n /** Whether the parent form has been submitted; propagated to each fk-field-outlet. */\n readonly submitted = input(false);\n\n /** Fires with the index of the newly added row. */\n readonly rowAdded = output<number>();\n /** Fires with the index of the removed row. */\n readonly rowRemoved = output<number>();\n\n readonly classes = computed(() =>\n ['fk-field-array', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n private readonly schemaParser = inject(SchemaParser);\n\n /** Returns the current FormGroups for each rendered row. */\n rows(): FormGroup[] {\n const arr = this.formArray();\n\n return arr.controls as FormGroup[];\n }\n\n /** Returns true when another row can be added without exceeding maxRows. */\n canAdd(): boolean {\n const max = this.field().maxRows;\n\n if (max === undefined) {\n return true;\n }\n\n return this.formArray().length < max;\n }\n\n /** Returns true when a row can be removed without going below minRows. */\n canRemove(): boolean {\n const min = this.field().minRows ?? 0;\n\n return this.formArray().length > min;\n }\n\n /** Appends a new blank row to the FormArray. */\n addRow(): void {\n if (!this.canAdd()) {\n return;\n }\n\n const newRow = this.schemaParser.buildArrayRow(this.field());\n\n this.formArray().push(newRow);\n this.rowAdded.emit(this.formArray().length - 1);\n }\n\n /** Removes the row at the given index from the FormArray. */\n removeRow(index: number): void {\n if (!this.canRemove()) {\n return;\n }\n\n this.formArray().removeAt(index);\n this.rowRemoved.emit(index);\n }\n}\n","@if (field().label) {\n <legend class=\"fk-field-array__legend\">{{ field().label }}</legend>\n}\n@for (row of rows(); track $index) {\n <div class=\"fk-field-array__row\" [formGroup]=\"row\">\n @for (childField of field().arrayFields ?? []; track childField.key) {\n <fk-field-outlet\n [field]=\"childField\"\n [form]=\"row\"\n [submitted]=\"submitted()\"\n />\n }\n @if (canRemove()) {\n <button\n type=\"button\"\n class=\"fk-field-array__remove\"\n aria-label=\"Remove row\"\n (click)=\"removeRow($index)\"\n >\n ×\n </button>\n }\n </div>\n}\n@if (canAdd()) {\n <button type=\"button\" class=\"fk-field-array__add\" (click)=\"addRow()\">\n + Add\n </button>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport type { FormSchemaSection } from '../../engine/schema.types';\nimport { FieldOutletComponent } from './field-outlet.component';\n\n/**\n * Renders a form section with an optional title, description,\n * and layout-aware field rendering.\n *\n * @example\n * ```html\n * <fk-section-outlet\n * [section]=\"section\"\n * [form]=\"formGroup\"\n * [submitted]=\"submitted()\"\n * />\n * ```\n */\n@Component({\n selector: 'fk-section-outlet',\n standalone: true,\n imports: [FieldOutletComponent, ReactiveFormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './section-outlet.component.html',\n styles: `\n :host {\n display: block;\n margin-bottom: var(--fk-rhythm-6, 1.5rem);\n }\n\n .fk-section__title {\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--fk-form-label-color);\n margin: 0 0 var(--fk-rhythm-2, 0.5rem);\n }\n\n .fk-section__description {\n font-size: var(--fk-form-hint-font-size);\n color: var(--fk-form-hint-color);\n margin: 0 0 var(--fk-rhythm-4, 1rem);\n }\n\n .fk-section__fields {\n display: flex;\n flex-direction: column;\n }\n\n .fk-section__row {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n column-gap: var(--fk-form-field-gap);\n }\n\n .fk-section__col {\n grid-column: span var(--fk-col-span, 12);\n }\n `,\n})\nexport class SectionOutletComponent {\n readonly className = input<string>('');\n /** Schema section definition including its title, description, and field list. */\n readonly section = input.required<FormSchemaSection>();\n /** Parent FormGroup used to bind each field's reactive control. */\n readonly form = input.required<FormGroup>();\n /** Whether the parent form has been submitted; propagated to each fk-field-outlet. */\n readonly submitted = input(false);\n\n readonly classes = computed(() =>\n ['fk-section-outlet', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n /** Looks up a field definition within this section by its key. */\n getField(key: string): FormSchemaSection['fields'][number] | undefined {\n return this.section().fields.find((f) => f.key === key);\n }\n}\n","@if (section().title) {\n <h3 class=\"fk-section__title\">{{ section().title }}</h3>\n}\n@if (section().description) {\n <p class=\"fk-section__description\">{{ section().description }}</p>\n}\n<div class=\"fk-section__fields\">\n @if (section().layout?.length) {\n @for (row of section().layout!; track $index) {\n <div class=\"fk-section__row\">\n @for (col of row.columns; track col.fieldKey) {\n <div class=\"fk-section__col\" [style.--fk-col-span]=\"col.span ?? 12\">\n @if (getField(col.fieldKey); as field) {\n <fk-field-outlet\n [field]=\"field\"\n [form]=\"form()\"\n [submitted]=\"submitted()\"\n />\n }\n </div>\n }\n </div>\n }\n } @else {\n @for (field of section().fields; track field.key) {\n <fk-field-outlet\n [field]=\"field\"\n [form]=\"form()\"\n [submitted]=\"submitted()\"\n />\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnInit,\n output,\n signal,\n} from '@angular/core';\nimport { FormArray, type FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport type { FormSchema } from '../../engine/schema.types';\nimport { SchemaParser } from '../../engine/schema-parser';\nimport { FormComponent } from '../form/form.component';\nimport { FieldArrayOutletComponent } from './field-array-outlet.component';\nimport { FieldOutletComponent } from './field-outlet.component';\nimport { SectionOutletComponent } from './section-outlet.component';\n\n/**\n * Renders a complete form from a schema definition.\n *\n * Generates a FormGroup from the schema, wraps it in a `fk-form`,\n * and renders each field via `fk-field-outlet`. Supports layout\n * sections for organized field grouping.\n *\n * @example\n * ```ts\n * schema: FormSchema = {\n * fields: [\n * { key: 'email', type: 'input', label: 'Email', required: true },\n * { key: 'password', type: 'password', label: 'Password', required: true },\n * ],\n * };\n * ```\n *\n * ```html\n * <fk-form-renderer\n * [schema]=\"schema\"\n * (formSubmit)=\"onSubmit($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'fk-form-renderer',\n standalone: true,\n imports: [\n FieldArrayOutletComponent,\n FieldOutletComponent,\n FormComponent,\n ReactiveFormsModule,\n SectionOutletComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './form-renderer.component.html',\n styleUrl: './form-renderer.component.scss',\n})\nexport class FormRendererComponent implements OnInit {\n readonly className = input<string>('');\n\n /** The form schema to render. */\n readonly schema = input.required<FormSchema>();\n\n /**\n * Optional externally provided FormGroup.\n * If not provided, one is auto-generated from the schema.\n */\n readonly form = input<FormGroup | null>(null);\n\n /** Emits the FormGroup value when the form is submitted. */\n readonly formSubmit = output<Record<string, unknown>>();\n\n /** The resolved FormGroup (either provided or auto-generated). */\n readonly resolvedForm = signal<FormGroup | null>(null);\n\n /** Reference to the inner fk-form for submission state. */\n readonly formRef = signal<FormComponent | null>(null);\n\n readonly classes = computed(() =>\n ['fk-form-renderer', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n private readonly schemaParser = inject(SchemaParser);\n private readonly el = inject(ElementRef);\n\n ngOnInit(): void {\n const externalForm = this.form();\n\n if (externalForm) {\n this.resolvedForm.set(externalForm);\n } else {\n const generated = this.schemaParser.buildFormGroup(this.schema());\n\n this.resolvedForm.set(generated);\n }\n }\n\n /** Looks up a schema field definition by its key. */\n getField(key: string): FormSchema['fields'][number] | undefined {\n return this.schema().fields.find((f) => f.key === key);\n }\n\n /** Returns the FormArray for a repeating field at the given key. */\n getFormArray(key: string): FormArray {\n return this.resolvedForm()?.get(key) as FormArray;\n }\n\n onFormSubmit(): void {\n const form = this.resolvedForm();\n\n if (!form) {\n return;\n }\n\n this.formSubmit.emit(form.getRawValue());\n }\n\n /**\n * Finds the first invalid field in schema order and focuses its input.\n * Call this after markAllAsTouched() to direct the user to the first error.\n */\n focusFirstInvalidField(): void {\n const form = this.resolvedForm();\n\n if (!form) {\n return;\n }\n\n const fields = this.schema().fields;\n const firstInvalidIndex = fields.findIndex((f) => form.get(f.key)?.invalid);\n\n if (firstInvalidIndex < 0) {\n return;\n }\n\n setTimeout(() => {\n const host = this.el.nativeElement as HTMLElement;\n const outlets = Array.from(host.querySelectorAll('fk-field-outlet'));\n const target = outlets[firstInvalidIndex];\n\n if (!target) {\n return;\n }\n\n const input = target.querySelector(\n 'input, select, textarea',\n ) as HTMLElement | null;\n\n if (input) {\n input.focus();\n }\n });\n }\n}\n","@if (resolvedForm()) {\n <fk-form (formSubmit)=\"onFormSubmit()\">\n <div class=\"fk-form-renderer__fields\" [formGroup]=\"resolvedForm()!\">\n @if (schema().sections?.length) {\n @for (section of schema().sections!; track $index) {\n <fk-section-outlet\n [section]=\"section\"\n [form]=\"resolvedForm()!\"\n [submitted]=\"formRef()?.submitted() ?? false\"\n />\n }\n }\n @if (schema().layout?.length) {\n @for (row of schema().layout!; track $index) {\n <div class=\"fk-form-renderer__row\">\n @for (col of row.columns; track col.fieldKey) {\n <div\n class=\"fk-form-renderer__col\"\n [style.--fk-col-span]=\"col.span ?? 12\"\n >\n @if (getField(col.fieldKey); as field) {\n <fk-field-outlet\n [field]=\"field\"\n [form]=\"resolvedForm()!\"\n [submitted]=\"formRef()?.submitted() ?? false\"\n />\n }\n </div>\n }\n </div>\n }\n } @else {\n @for (field of schema().fields; track field.key) {\n @if (field.arrayFields?.length) {\n <fk-field-array-outlet\n [field]=\"field\"\n [formArray]=\"getFormArray(field.key)\"\n [submitted]=\"formRef()?.submitted() ?? false\"\n />\n } @else {\n <fk-field-outlet\n [field]=\"field\"\n [form]=\"resolvedForm()!\"\n [submitted]=\"formRef()?.submitted() ?? false\"\n />\n }\n }\n }\n </div>\n <ng-content />\n </fk-form>\n}\n","/**\n * Public types for `fk-form-renderer`.\n *\n * The renderer is a thin presentation layer over the schema engine —\n * its public type contract is the engine's schema vocabulary\n * (`FormSchema`, `FieldSchema`, `FieldUiConfig`, `Option`, etc.) plus\n * the runtime emit shape. Re-exporting from here gives consumers a\n * single discoverable surface (`@frame-kit/ui-ng`) without forcing them\n * to know which layer the types live in.\n */\n\nexport type {\n FieldSchema,\n FieldUiConfig,\n FormSchema,\n LabelEndLink,\n Option,\n VisibilityRule,\n} from '../../engine/schema.types';\n\n/**\n * Shape emitted by `(formSubmit)` — the form's raw value keyed by\n * field key. Cast to a more specific shape at the consumer when the\n * schema is known statically.\n */\nexport type FormRendererSubmitValue = Record<string, unknown>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'fk-form-section',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './form-section.component.html',\n styleUrl: './form-section.component.scss',\n})\nexport class FormSectionComponent {\n readonly className = input<string>('');\n\n /** Section heading. */\n readonly title = input<string | null>(null);\n\n /** Optional description below the heading. */\n readonly description = input<string | null>(null);\n\n readonly classes = computed(() =>\n ['fk-form-section', this.className()].filter(Boolean).join(' '),\n );\n\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n}\n","@if (title() || description()) {\n <div class=\"fk-form-section__header\">\n @if (title()) {\n <h3 class=\"fk-form-section__title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"fk-form-section__description\">{{ description() }}</p>\n }\n </div>\n}\n<div class=\"fk-form-section__content\">\n <ng-content />\n</div>\n","import type { AbstractControl, FormGroup } from '@angular/forms';\n\n/**\n * Snapshot of a single field's state.\n */\nexport interface FieldState {\n touched: boolean;\n dirty: boolean;\n invalid: boolean;\n valid: boolean;\n pending: boolean;\n disabled: boolean;\n enabled: boolean;\n pristine: boolean;\n untouched: boolean;\n errors: Record<string, unknown> | null;\n value: unknown;\n}\n\n/**\n * Returns a snapshot of a control's state.\n *\n * @example\n * ```ts\n * const state = getFieldState(form.get('email'));\n * if (state.invalid && state.touched) {\n * // show error\n * }\n * ```\n */\nexport function getFieldState(\n control: AbstractControl | null,\n): FieldState | null {\n if (!control) {\n return null;\n }\n\n return {\n touched: control.touched,\n dirty: control.dirty,\n invalid: control.invalid,\n valid: control.valid,\n pending: control.pending,\n disabled: control.disabled,\n enabled: control.enabled,\n pristine: control.pristine,\n untouched: control.untouched,\n errors: control.errors,\n value: control.value,\n };\n}\n\n/**\n * Returns whether a control has a specific validation error.\n *\n * @example\n * ```ts\n * if (hasError(form.get('email'), 'required')) {\n * // ...\n * }\n * ```\n */\nexport function hasError(\n control: AbstractControl | null,\n errorKey: string,\n): boolean {\n if (!control) {\n return false;\n }\n\n return control.hasError(errorKey);\n}\n\n/**\n * Returns the error value for a specific validation error key.\n *\n * @example\n * ```ts\n * const minErr = getError(form.get('age'), 'min');\n * // { min: 18, actual: 12 }\n * ```\n */\nexport function getError(\n control: AbstractControl | null,\n errorKey: string,\n): unknown | null {\n if (!control) {\n return null;\n }\n\n return control.getError(errorKey);\n}\n\n/**\n * Marks all controls in a FormGroup as touched.\n * Useful for triggering validation display on form submission.\n *\n * @example\n * ```ts\n * if (form.invalid) {\n * markAllTouched(form);\n * return;\n * }\n * ```\n */\nexport function markAllTouched(group: FormGroup): void {\n group.markAllAsTouched();\n}\n\n/**\n * Returns whether all controls in a FormGroup are valid.\n */\nexport function isFormValid(group: FormGroup): boolean {\n return group.valid;\n}\n\n/**\n * Returns all invalid control keys in a FormGroup (top-level only).\n *\n * @example\n * ```ts\n * const invalid = getInvalidFields(form);\n * // ['email', 'password']\n * ```\n */\nexport function getInvalidFields(group: FormGroup): string[] {\n return Object.entries(group.controls)\n .filter(([, control]) => control.invalid)\n .map(([key]) => key);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n output,\n signal,\n} from '@angular/core';\n\nimport { IconComponent } from '@frame-kit/ui-ng/core/icon';\nimport { TextComponent } from '@frame-kit/ui-ng/core/text';\nimport type { FkFileDropzoneSelection } from './file-dropzone.types';\n\n/**\n * A drag-and-drop file input. Pairs a styled, tokenized \"drop here or\n * click to browse\" surface with a hidden native file input so the\n * component remains keyboard-, click-, and drag-accessible without\n * any consumer wiring.\n *\n * Event-out (not CVA-bound) — emits a `File[]` from `(filesSelected)`\n * for both drop and browse paths. Use `fk-file-upload` instead when\n * you need a reactive-forms control with `FileList` value semantics.\n */\n@Component({\n selector: 'fk-file-dropzone',\n standalone: true,\n imports: [IconComponent, TextComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './file-dropzone.component.html',\n styleUrl: './file-dropzone.component.scss',\n})\nexport class FileDropzoneComponent {\n // ===== INPUTS =====\n /** MIME types or file extensions the native file picker should accept (e.g. \"image/*,.pdf\"). */\n readonly accept = input<string | null>(null);\n /** Whether the user can select more than one file at a time. */\n readonly multiple = input<boolean>(false);\n /** When true, prevents drag-and-drop and click-to-browse interaction. */\n readonly disabled = input<boolean>(false);\n /** Icon name rendered inside the dropzone surface. */\n readonly icon = input<string>('upload');\n /** Primary prompt text displayed inside the dropzone. */\n readonly prompt = input.required<string>();\n /** Secondary hint text shown below the prompt. */\n readonly hint = input<string | null>(null);\n\n // ===== BASE PROPS =====\n readonly className = input<string>('');\n readonly id = input<string | null>(null);\n readonly ariaLabel = input<string | null>(null);\n\n // ===== OUTPUTS =====\n /** Fires with the selected File array whenever the user drops or browses files. */\n readonly filesSelected = output<FkFileDropzoneSelection>();\n\n // ===== INTERNAL =====\n protected readonly isDragging = signal(false);\n\n // ===== COMPUTED =====\n readonly classes = computed(() =>\n [\n 'fk-file-dropzone',\n this.isDragging() ? 'fk-file-dropzone--dragging' : '',\n this.disabled() ? 'fk-file-dropzone--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n @HostBinding('class')\n get hostClass(): string {\n return this.classes();\n }\n\n // ===== EVENT HANDLERS =====\n onDragOver(event: DragEvent): void {\n if (this.disabled()) {\n return;\n }\n\n event.preventDefault();\n this.isDragging.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.isDragging.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragging.set(false);\n\n if (this.disabled()) {\n return;\n }\n\n const files = event.dataTransfer?.files;\n\n this.emit(files);\n }\n\n onChange(event: Event): void {\n const native = event.target as HTMLInputElement;\n\n this.emit(native.files);\n\n // Allow re-selecting the same file path on a subsequent attempt.\n native.value = '';\n }\n\n private emit(list: FileList | null | undefined): void {\n if (!list || list.length === 0) {\n return;\n }\n\n const files: File[] = [];\n\n for (let i = 0; i < list.length; i++) {\n const file = list.item(i);\n\n if (file) {\n files.push(file);\n }\n }\n\n if (files.length === 0) {\n return;\n }\n\n this.filesSelected.emit(this.multiple() ? files : [files[0]]);\n }\n}\n","<label\n class=\"fk-file-dropzone__container\"\n [attr.id]=\"id() ?? undefined\"\n [attr.aria-label]=\"ariaLabel()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n>\n <fk-icon [name]=\"icon()\" size=\"lg\" class=\"fk-file-dropzone__icon\" />\n\n <fk-text tone=\"muted\" class=\"fk-file-dropzone__prompt\">\n {{ prompt() }}\n </fk-text>\n\n @if (hint(); as h) {\n <fk-text tone=\"muted\" class=\"fk-file-dropzone__hint\">\n {{ h }}\n </fk-text>\n }\n\n <input\n #nativeInput\n type=\"file\"\n class=\"fk-file-dropzone__native\"\n [attr.accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n />\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nimport type { ProgressSegment, SegmentedBarSize } from './segmented-bar.types';\n\n@Component({\n selector: 'fk-segmented-bar',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './segmented-bar.component.scss',\n templateUrl: './segmented-bar.component.html',\n})\nexport class SegmentedBarComponent {\n // ===== INPUTS =====\n /** Segments to render, each with a value, optional label, and color. */\n readonly segments = input<ProgressSegment[]>([]);\n /** Total maximum value; defaults to the sum of all segment values when null. */\n readonly max = input<number | null>(null);\n /** Size variant controlling bar height via design tokens. */\n readonly size = input<SegmentedBarSize>('md');\n /** CSS color for the unfilled track; defaults to the theme token when null. */\n readonly trackColor = input<string | null>(null);\n /** Explicit bar height that overrides the size-token value. */\n readonly height = input<string | null>(null);\n\n // ===== BASE PROPS =====\n readonly ariaLabel = input<string | null>(null);\n readonly ariaDescribedBy = input<string | null>(null);\n readonly id = input<string | null>(null);\n readonly className = input<string>('');\n\n // ===== COMPUTED =====\n readonly segmentTotal = computed(() => {\n return this.segments().reduce((sum, seg) => sum + seg.value, 0);\n });\n\n readonly effectiveMax = computed(() => {\n return this.max() ?? this.segmentTotal();\n });\n\n readonly normalizedSegments = computed(() => {\n const em = this.effectiveMax();\n\n if (em <= 0) {\n return this.segments().map((seg) => ({ ...seg, percentage: 0 }));\n }\n\n return this.segments().map((seg) => ({\n ...seg,\n percentage: (seg.value / em) * 100,\n }));\n });\n\n readonly valueText = computed(() => {\n const segs = this.segments();\n\n if (segs.length === 0) {\n return 'Empty';\n }\n\n const parts = segs\n .map((seg) => {\n if (seg.label) {\n return `${seg.value} ${seg.label}`;\n }\n\n return `${seg.value}`;\n })\n .join(', ');\n\n return `${parts} out of ${this.effectiveMax()}`;\n });\n\n readonly classes = computed(() => {\n return [\n 'fk-segmented-bar',\n `fk-segmented-bar--${this.size()}`,\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n // ===== HOST BINDINGS =====\n @HostBinding('class')\n get hostClass() {\n return this.classes();\n }\n\n @HostBinding('attr.role')\n get hostRole() {\n return 'progressbar';\n }\n\n @HostBinding('attr.aria-valuemin')\n get hostAriaValueMin() {\n return 0;\n }\n\n @HostBinding('attr.aria-valuemax')\n get hostAriaValueMax() {\n return this.effectiveMax();\n }\n\n @HostBinding('attr.aria-valuenow')\n get hostAriaValueNow() {\n return this.segmentTotal();\n }\n\n @HostBinding('attr.aria-valuetext')\n get hostAriaValueText() {\n return this.valueText();\n }\n\n @HostBinding('attr.aria-label')\n get hostAriaLabel() {\n return this.ariaLabel();\n }\n\n @HostBinding('attr.aria-describedby')\n get hostAriaDescribedBy() {\n return this.ariaDescribedBy();\n }\n\n @HostBinding('attr.id')\n get hostId() {\n return this.id();\n }\n}\n","<div\n class=\"fk-segmented-bar__track\"\n [style.background-color]=\"trackColor()\"\n [style.height]=\"height()\"\n>\n @for (seg of normalizedSegments(); track $index) {\n <div\n class=\"fk-segmented-bar__segment\"\n [style.width.%]=\"seg.percentage\"\n [style.background-color]=\"seg.color ?? null\"\n ></div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|