{"_id":"@aquera/ngx-smart-text-field","_rev":"5-f3788e3ae6f40934ef9cff045d7b2684","name":"@aquera/ngx-smart-text-field","dist-tags":{"latest":"1.3.9"},"versions":{"1.1.2":{"name":"@aquera/ngx-smart-text-field","version":"1.1.2","_id":"@aquera/ngx-smart-text-field@1.1.2","maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"dist":{"shasum":"c95e621027fa74989d921cb62276357683229fbb","tarball":"https://registry.npmjs.org/@aquera/ngx-smart-text-field/-/ngx-smart-text-field-1.1.2.tgz","fileCount":5,"integrity":"sha512-VfgL2hkmgUNwqXi8p2BxUXyfCrqUiIVmwE99CrFsOjk2DG0zdQqPNQCq+p5vCSgBlCEVtPi6Jzdcsf9TSO9IPg==","signatures":[{"sig":"MEQCICINH3Jk5wTBm/3DAiUpYUUM6SkWzk36IF82xf6IeatCAiA+2Cf5kheHIVJ2Khpv6lwJNZCfjdpJlD4NfWnvBAzWyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212650},"type":"module","module":"fesm2022/aquera-ngx-smart-text-field.mjs","exports":{".":{"types":"./types/aquera-ngx-smart-text-field.d.ts","default":"./fesm2022/aquera-ngx-smart-text-field.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"14628a8f6bff0f87b9155706740f4d7f66f8bc77","typings":"types/aquera-ngx-smart-text-field.d.ts","_npmUser":{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"},"_npmVersion":"10.9.2","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.0.","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@aquera/nile":"^1.2.4","@angular/core":"^21.2.0","@angular/common":"^21.2.0","@aquera/nile-elements":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-smart-text-field_1.1.2_1780292963860_0.5755224042518938","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aquera/ngx-smart-text-field","version":"1.1.3","_id":"@aquera/ngx-smart-text-field@1.1.3","maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"dist":{"shasum":"2e9f280d30104a6018949b111278a94196093503","tarball":"https://registry.npmjs.org/@aquera/ngx-smart-text-field/-/ngx-smart-text-field-1.1.3.tgz","fileCount":5,"integrity":"sha512-X9fLgDgG5XLpIa8HBCeoxR1DTca7J6t+EZBCG+EDkaKlmpcj+NUTobuPvoFhW7c/ipWT6pqgeL+5Q/SipTaVlg==","signatures":[{"sig":"MEYCIQDj3v1FcbUZsfDeQPTqDjOa/wL14/9ucilIa2qSAcs2aQIhAJRr52xzNVsl/c5De2zuU62UxnGqXl/Z3IxR49VddCS5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213004},"type":"module","module":"fesm2022/aquera-ngx-smart-text-field.mjs","exports":{".":{"types":"./types/aquera-ngx-smart-text-field.d.ts","default":"./fesm2022/aquera-ngx-smart-text-field.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"719f2c9cb9862352ef6961a57e3fd2dec2f4795b","typings":"types/aquera-ngx-smart-text-field.d.ts","_npmUser":{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"},"_npmVersion":"10.9.2","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.0.","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@aquera/nile":"^1.2.4","@angular/core":"^21.2.0","@angular/common":"^21.2.0","@aquera/nile-elements":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-smart-text-field_1.1.3_1780404450365_0.17203062756903886","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@aquera/ngx-smart-text-field","version":"1.3.3","_id":"@aquera/ngx-smart-text-field@1.3.3","maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"dist":{"shasum":"28d09cff0e925d1dd18663507e58f56f9d98f697","tarball":"https://registry.npmjs.org/@aquera/ngx-smart-text-field/-/ngx-smart-text-field-1.3.3.tgz","fileCount":5,"integrity":"sha512-7FGQrb74LUT45ZUyVEhjqrkWaH3nnqqhceVLSOLM8NIE5zQQEwrQLlyDoCFInPlyo42bD7jKhSMVnCn2gIwFUQ==","signatures":[{"sig":"MEUCIQCbJ1+UmflBjaJWLPDRTi06lhDg9nDI0xX/PDvARYLemgIgEqUpYfoF+5qfADRDYXzIOE1KJVBPAOH35+CsCl8twRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289939},"type":"module","module":"fesm2022/aquera-ngx-smart-text-field.mjs","exports":{".":{"types":"./types/aquera-ngx-smart-text-field.d.ts","default":"./fesm2022/aquera-ngx-smart-text-field.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"c339046d16eb325dccdf0a899848a21171a585c4","typings":"types/aquera-ngx-smart-text-field.d.ts","_npmUser":{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"},"_npmVersion":"10.9.2","description":"An Angular smart text field component for AI-assisted expression building. It combines a prompt input with a dynamic dropdown that shows matching expressions, a live preview panel, and a loading state — all wired to your AI backend via simple signal-based","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@aquera/nile":"^1.2.7","@angular/core":"^21.2.0","@angular/common":"^21.2.0","@aquera/nile-elements":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ngx-smart-text-field_1.3.3_1782821188483_0.4256949411820288","host":"s3://npm-registry-packages-npm-production"}},"1.3.8":{"name":"@aquera/ngx-smart-text-field","version":"1.3.8","_id":"@aquera/ngx-smart-text-field@1.3.8","maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"dist":{"shasum":"42adfb76282451f948261739264cee47d5161300","tarball":"https://registry.npmjs.org/@aquera/ngx-smart-text-field/-/ngx-smart-text-field-1.3.8.tgz","fileCount":5,"integrity":"sha512-VskV8f00XYR1qw9eUgXO/NXR6tT6nwXr/nkp+C8SIVDnnAwuCID0qnHVZcdrl6Wd9K04tZGT7PGlRyQ9z00w8g==","signatures":[{"sig":"MEUCIQDYZRBJRnb8JIOiYZm5WVfEugOhrX/5jFDt/LpvoT9Y2gIgXw4V3L70BLum4UxeRQfeiPoELJ8beF6poiYER0EHvRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290191},"type":"module","module":"fesm2022/aquera-ngx-smart-text-field.mjs","exports":{".":{"types":"./types/aquera-ngx-smart-text-field.d.ts","default":"./fesm2022/aquera-ngx-smart-text-field.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"86c3bdc919897ac5d0299664de8a19bc68ab1738","typings":"types/aquera-ngx-smart-text-field.d.ts","_npmUser":{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"},"_npmVersion":"10.9.2","description":"An Angular smart text field component for AI-assisted expression building. It combines a prompt input with a dynamic dropdown that shows matching expressions, a live preview panel, and a loading state — all wired to your AI backend via simple signal-based","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@aquera/nile":"^1.2.7","@angular/core":"^21.2.0","@angular/common":"^21.2.0","@aquera/nile-elements":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ngx-smart-text-field_1.3.8_1782908267372_0.4405778204935451","host":"s3://npm-registry-packages-npm-production"}},"1.3.9":{"name":"@aquera/ngx-smart-text-field","version":"1.3.9","peerDependencies":{"@angular/common":"^21.2.0","@angular/core":"^21.2.0","@aquera/nile":"^1.2.7","@aquera/nile-elements":"^1.1.3"},"dependencies":{"tslib":"^2.3.0"},"sideEffects":false,"module":"fesm2022/aquera-ngx-smart-text-field.mjs","typings":"types/aquera-ngx-smart-text-field.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./types/aquera-ngx-smart-text-field.d.ts","default":"./fesm2022/aquera-ngx-smart-text-field.mjs"}},"type":"module","_id":"@aquera/ngx-smart-text-field@1.3.9","gitHead":"d19efcc8ced22a5d71544060393c9b2f55e9d297","description":"An Angular smart text field component for AI-assisted expression building. It combines a prompt input with a dynamic dropdown that shows matching expressions, a live preview panel, and a loading state — all wired to your AI backend via simple signal-based","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-OiSeg9JHbcwJWoeBATQzPCc9be+9K10dO3285wAgZ46MhwBFXpLj7GNnZOUpyLFV8HW6H6gFJShVTXzSwaDn+w==","shasum":"bce3caf29674f722f618a6a3cdac2c706bc21528","tarball":"https://registry.npmjs.org/@aquera/ngx-smart-text-field/-/ngx-smart-text-field-1.3.9.tgz","fileCount":5,"unpackedSize":291083,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDKKYnnGVTrkdtJ3CwNdPzaoE/RSi45kn3zWUuk7s2vuAiATMldENSdyqw/4z9SYLj7mJh6zmyAdopZPdpcySHnBuA=="}]},"_npmUser":{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"},"directories":{},"maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ngx-smart-text-field_1.3.9_1782914026951_0.8243237664563987"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-01T05:49:23.712Z","modified":"2026-07-01T13:53:47.246Z","1.1.2":"2026-06-01T05:49:24.109Z","1.1.3":"2026-06-02T12:47:30.502Z","1.3.3":"2026-06-30T12:06:28.632Z","1.3.8":"2026-07-01T12:17:47.505Z","1.3.9":"2026-07-01T13:53:47.091Z"},"description":"An Angular smart text field component for AI-assisted expression building. It combines a prompt input with a dynamic dropdown that shows matching expressions, a live preview panel, and a loading state — all wired to your AI backend via simple signal-based","maintainers":[{"name":"ashok.kumar.aquera","email":"ashok.kumar@aquera.com"},{"name":"raviqauera","email":"ravi.sankar@aquera.com"},{"name":"sandeep-aquera","email":"sandeep.kumar@aquera.com"}],"readme":"# @aquera/ngx-smart-text-field\n\nAn Angular smart text field component for AI-assisted expression building. It combines a prompt input with a dynamic dropdown that shows matching expressions, a live preview panel, and a loading state — all wired to your AI backend via simple signal-based inputs and event emitters.\n\n## Requirements\n\n| Peer dependency | Version |\n|---|---|\n| `@angular/core` / `@angular/common` | `^21.2.0` |\n| `@aquera/nile` | `^1.2.5-beta-1.2` |\n| `@aquera/nile-elements` | `^1.7.8-beta-1.1` |\n\n## Installation\n\n```bash\nnpm install @aquera/ngx-smart-text-field\n```\n\n## Basic usage\n\n```html\n<ngx-smart-text-field\n  [plan]=\"plan\"\n  [expressions]=\"expressions\"\n  [generatingResponse]=\"generatingResponse\"\n  (generateResponse)=\"onGenerate($event)\"\n  (expressionSelected)=\"onSelected($event)\"\n/>\n```\n\n```ts\nimport { NgxSmartTextField } from '@aquera/ngx-smart-text-field';\n\n@Component({\n  imports: [NgxSmartTextField],\n  ...\n})\nexport class MyComponent {\n  plan = signal('');\n  expressions = signal<DefaultExpression[]>([]);\n  generatingResponse = signal(false);\n\n  onGenerate(prompt: string) {\n    this.generatingResponse.set(true);\n    // call your AI backend, then set generatingResponse to false when done\n  }\n\n  onSelected(expression: DefaultExpression) {\n    console.log('Selected:', expression);\n  }\n}\n```\n\n## Inputs\n\nAll signal-typed inputs must be passed as Angular `signal()` instances (not plain values).\n\n> **Required** inputs have no meaningful default and must be provided for the component to work correctly.\n> **Optional** inputs have sensible defaults and can be omitted.\n\n| Input | Required | Type | Default | Description |\n|---|:---:|---|---|---|\n| `expressions` | ✅ | `Signal<DefaultExpression[]>` | `[]` | Saved expressions shown in the dropdown for filtering and selection. The component is a no-op without this. |\n| `generatingResponse` | ✅ | `Signal<boolean>` | `false` | Controls the loading state. Set to `true` when your AI call starts and back to `false` when it finishes or errors. |\n| `plan` | — | `Signal<string>` | `''` | Current prompt / expression text. Bind this if you need two-way control of the field value. |\n| `generatingPreview` | — | `Signal<boolean>` | `false` | Set to `true` while a preview is being generated; triggers a preview refresh after completion. |\n| `showPreview` | — | `Signal<boolean>` | `true` | Whether to show the preview panel inside the dropdown. |\n| `showCode` | — | `Signal<boolean>` | `true` | Whether to show the generated code block inside the preview panel. |\n| `generateOnBlur` | — | `Signal<boolean>` | `false` | Automatically fires `generateResponse` when the user leaves the field without selecting an expression. |\n| `placeholder` | — | `Signal<string>` | `'Select, Describe, or Enter an expression...'` | Placeholder text shown in the prompt field. |\n| `maxRows` | — | `Signal<number>` | `1` | Number of visible text rows when the field is idle. |\n| `maxRowsVisibleOnFocus` | — | `Signal<number>` | `3` | Number of visible text rows when the field is focused. |\n| `showSmartSuggestions` | — | `Signal<boolean>` | `false` | Enable AI-powered smart suggestions in the dropdown. Requires `smartSuggestionsRef` and a `fetchSmartSuggestions` handler. |\n| `smartSuggestionsRef` | — | `ResourceRef<SmartSuggestions> \\| undefined` | `undefined` | Angular resource ref used to feed smart suggestion results into the dropdown. Only needed when `showSmartSuggestions` is `true`. |\n\n## Outputs\n\n> **Required** outputs must be handled for the component to function correctly.\n> **Optional** outputs can be ignored if you don't need that feature.\n\n| Output | Required | Payload | Description |\n|---|:---:|---|---|\n| `generateResponse` | ✅ | `string` | Emitted when the user submits the prompt (Enter key or send button). Your handler must call your AI backend and toggle `generatingResponse`. |\n| `expressionSelected` | ✅ | `DefaultExpression` | Emitted when the user picks an expression from the dropdown. Your handler should apply the selection to your data model. |\n| `stopGeneratingResponse` | — | `void` | Emitted when the user presses Escape while a response is generating. Handle this to cancel your in-flight AI request. |\n| `generatePreview` | — | `{ previewData: PreviewData; prompt: string; dropdownDetails: DropdownDetails }` | Emitted when a preview generation is requested from within the dropdown. Only needed when `showPreview` is `true`. |\n| `fetchSmartSuggestions` | — | `string` | Emitted whenever the prompt changes and `showSmartSuggestions` is `true`. Use this to (re-)fetch suggestions and update `smartSuggestionsRef`. |\n\n## Types\n\n```ts\ninterface DefaultExpression {\n  id: string;\n  plan: string;               // the expression text\n  previewData: PreviewData;\n  prompt?: string;\n  default?: boolean;\n  aiGenerated?: boolean;\n  expandPreview?: boolean;\n}\n\ninterface PreviewData {\n  executionResult: string[];\n  generatedCode: string;\n  requiredInputs: RequiredInput[];\n  responseFormat: any;\n  success: boolean;\n  error?: string;\n}\n\ninterface RequiredInput {\n  name: string;\n  label: string;\n  description: string;\n  type: string;\n  required: boolean;\n  placeholder: string;\n  exampleValue: string;\n  usage: string;\n}\n\ninterface SmartSuggestions {\n  suggestions: string[];\n}\n```\n\n## Dropdown positioning\n\nThe dropdown and loader panels are positioned automatically relative to the prompt field and scroll with it. When the field is near the bottom of the viewport, the panels open upward; otherwise they open downward. If neither direction has enough room, the panel constrains its height and becomes scrollable.\n\n## Building from source\n\n```bash\nng build ngx-smart-text-field\n```\n\nBuild output is placed in `dist/ngx-smart-text-field`.\n\n## Running tests\n\n```bash\nng test ngx-smart-text-field\n```\n\n## Publishing\n\n```bash\ncd dist/ngx-smart-text-field\nnpm publish\n```\n","readmeFilename":"README.md"}