neural-ui-mcp 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/data/native-catalog.json +1 -1
- package/data/native-sha256 +1 -1
- package/dist/catalog.js +2 -1
- package/dist/release-versions.d.ts +6 -0
- package/dist/release-versions.js +4 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +5 -4
- package/package.json +1 -1
package/data/native-catalog.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"api":{"schemaVersion":1,"package":"@neural-ui/native","version":"0.1.0-beta.5","entrypoints":{"@neural-ui/native":{"types":"./dist/index.d.ts","sha256":"5b19365dec13edadd0d640fd1b9bdb49d3623437d2bda6c77e173c20b22b63c6","symbols":[{"name":"formatMask","kind":"FunctionDeclaration","declaration":"export declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};"},{"name":"NEU_CHECK_ICON","kind":"VariableDeclaration","declaration":"NEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\""},{"name":"NEU_DARK_TOKENS","kind":"VariableDeclaration","declaration":"NEU_DARK_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_FILE_PICKER","kind":"VariableDeclaration","declaration":"NEU_FILE_PICKER: InjectionToken<NeuFilePicker>"},{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_LIGHT_TOKENS","kind":"VariableDeclaration","declaration":"NEU_LIGHT_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_PLUS_ICON","kind":"VariableDeclaration","declaration":"NEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\""},{"name":"NEU_TABS","kind":"VariableDeclaration","declaration":"NEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>"},{"name":"NEU_THEME","kind":"VariableDeclaration","declaration":"NEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>"},{"name":"NeuAccordionComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-accordion","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"}],"members":[]},{"name":"NeuAlertComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-alert","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuAlertVariant>"},{"name":"showIcon","alias":"showIcon","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"visible","alias":"visible","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closable","alias":"closable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"visible","alias":"visibleChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAlertVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuAlertVariant = 'soft' | 'outline';"},{"name":"NeuAutocompleteComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-autocomplete","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"minLength","alias":"minLength","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAvatarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uri","alias":"uri","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]},{"name":"NeuAvatarGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar-group","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"moreLabel","alias":"moreLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]},{"name":"NeuBadgeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-badge","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuBottomSheetComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-bottom-sheet","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuBottomSheetHeight","kind":"TypeAliasDeclaration","declaration":"export type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';"},{"name":"NeuButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"accessibilityLabel","alias":"accessibilityLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]},{"name":"NeuButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuCalendarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-calendar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"month","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"firstDay","alias":"firstDay","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"events","alias":"events","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>"},{"name":"showAgenda","alias":"showAgenda","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"editable","alias":"editable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"agendaLabel","alias":"agendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAgendaLabel","alias":"emptyAgendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hasEventsLabel","alias":"hasEventsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addEventLabel","alias":"addEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"editEventLabel","alias":"editEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"deleteEventLabel","alias":"deleteEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"monthChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"eventCreateRequested","alias":"eventCreateRequested","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"eventEditRequested","alias":"eventEditRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"eventDeleteRequested","alias":"eventDeleteRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCalendarEvent","kind":"InterfaceDeclaration","declaration":"export interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}"},{"name":"NeuCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-card","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<\"tonal\" | \"surface\" | \"outlined\">"}],"outputs":[],"members":[]},{"name":"NeuCardFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCardHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCarouselComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-carousel","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"preview","alias":"preview","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuImageViewerLabels>"},{"name":"loop","alias":"loop","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplay","alias":"autoplay","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplayInterval","alias":"autoplayInterval","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"pauseLabel","alias":"pauseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"playLabel","alias":"playLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuCascadeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-cascade-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"backLabel","alias":"backLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"rootLabel","alias":"rootLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCheckboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-checkbox","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuChipComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-chip","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"selected","alias":"selected","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selectable","alias":"selectable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removable","alias":"removable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selectedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"removed","alias":"removed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuColorScheme","kind":"TypeAliasDeclaration","declaration":"export type NeuColorScheme = 'system' | 'light' | 'dark';"},{"name":"NeuConfirmDialogComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-confirm-dialog","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"confirmLabel","alias":"confirmLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"intent","alias":"intent","required":false,"type":"import(\"@angular/core\").InputSignal<\"danger\" | \"default\">"},{"name":"busy","alias":"busy","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeOnConfirm","alias":"closeOnConfirm","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"confirmed","alias":"confirmed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuContextMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-context-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionsLabel","alias":"actionsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-data-view","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> | undefined>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descending","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"sortLabel","alias":"sortLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"refreshLabel","alias":"refreshLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descendingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"refresh","alias":"refresh","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}"},{"name":"NeuDataViewItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuDataViewItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuDateInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-date-input","inputs":[{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDividerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-divider","inputs":[{"name":"orientation","alias":"orientation","required":false,"type":"import(\"@angular/core\").InputSignal<\"horizontal\" | \"vertical\">"}],"outputs":[],"members":[]},{"name":"NeuEmptyStateComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-empty-state","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuFile","kind":"InterfaceDeclaration","declaration":"export interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}"},{"name":"NeuFilePicker","kind":"InterfaceDeclaration","declaration":"export interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}"},{"name":"NeuFilterBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-filter-bar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]},{"name":"NeuFormFieldComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-form-field","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuGalleryCaptionDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryCaption]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-gallery","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"layout","alias":"layout","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryLayout>"},{"name":"columns","alias":"columns","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"aspectRatio","alias":"aspectRatio","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showCaptions","alias":"showCaptions","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuGalleryItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}"},{"name":"NeuGalleryItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryLayout","kind":"TypeAliasDeclaration","declaration":"export type NeuGalleryLayout = 'grid' | 'mosaic';"},{"name":"NeuGalleryViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuIconButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-icon-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]},{"name":"NeuImageItem","kind":"InterfaceDeclaration","declaration":"export interface NeuImageItem {\n readonly id: string;\n readonly uri: string;\n readonly label: string;\n}"},{"name":"NeuImageViewerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-image-viewer","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomLabel","alias":"zoomLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomOutLabel","alias":"zoomOutLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"errorLabel","alias":"errorLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuImageViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"},{"name":"NeuInlineEditorComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-inline-editor","inputs":[{"name":"editing","alias":"editing","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"saveLabel","alias":"saveLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"editing","alias":"editingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"saved","alias":"saved","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input","inputs":[{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"email-address\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputMaskComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-mask","inputs":[{"name":"mask","alias":"mask","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputOtpComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-otp","inputs":[{"name":"length","alias":"length","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputTagsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-tags","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-listbox","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"appearance","alias":"appearance","required":false,"type":"import(\"@angular/core\").InputSignal<\"cards\" | \"plain\">"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> | undefined>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}"},{"name":"NeuListboxItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuListboxItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"showTrigger","alias":"showTrigger","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuMeterGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-meter-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuModalComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-modal","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<\"native\" | \"action\" | \"backdrop\">"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(reason?: 'native' | 'action' | 'backdrop'): void;"]},{"name":"NeuModalFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuModalHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuNavComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-nav","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNavItem","kind":"InterfaceDeclaration","declaration":"export interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuNotificationCenterComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-notification-center","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"readIds","alias":"readIds","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"markAllLabel","alias":"markAllLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"unreadLabel","alias":"unreadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"readIds","alias":"readIdsChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNumberInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-number-input","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuOption","kind":"InterfaceDeclaration","declaration":"export interface NeuOption {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly disabled?: boolean;\n}"},{"name":"NeuPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-panel","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"collapsed","alias":"collapsed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"collapsible","alias":"collapsible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"collapsed","alias":"collapsedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuPanelFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPanelHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPasswordComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-password","inputs":[{"name":"revealed","alias":"revealed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hideLabel","alias":"hideLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"revealed","alias":"revealedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuPickListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-pick-list","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"selectedLabel","alias":"selectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"availableLabel","alias":"availableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"upLabel","alias":"upLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"downLabel","alias":"downLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptySelectedLabel","alias":"emptySelectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAvailableLabel","alias":"emptyAvailableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuPopoverComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-popover","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissLabel","alias":"dismissLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuProgressBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-progress-bar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuRadioGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-radio","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuRatingComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-rating","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearable","alias":"clearable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-select","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"values","alias":"values","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"searchable","alias":"searchable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchPlaceholder","alias":"searchPlaceholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"values","alias":"valuesChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectItemContext","kind":"TypeAliasDeclaration","declaration":"export type NeuSelectItemContext = NeuListboxItemContext;"},{"name":"NeuSelectItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSelectSelectedContext","kind":"InterfaceDeclaration","declaration":"export interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}"},{"name":"NeuSelectSelectedDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectSelected]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSidebarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-sidebar","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSize","kind":"TypeAliasDeclaration","declaration":"export type NeuSize = 'sm' | 'md' | 'lg';"},{"name":"NeuSkeletonAnimation","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonAnimation = 'pulse' | 'none';"},{"name":"NeuSkeletonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-skeleton","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"lines","alias":"lines","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonVariant>"},{"name":"width","alias":"width","required":false,"type":"import(\"@angular/core\").InputSignal<string | number | undefined>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"lastLineWidth","alias":"lastLineWidth","required":false,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"animation","alias":"animation","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>"}],"outputs":[],"members":[]},{"name":"NeuSkeletonVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonVariant = 'text' | 'rect' | 'circle';"},{"name":"NeuSliderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-slider","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showButtons","alias":"showButtons","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSpeedDialAction","kind":"InterfaceDeclaration","declaration":"export interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuSpeedDialComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-speed-dial","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuSpinnerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-spinner","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<\"small\" | \"large\">"},{"name":"active","alias":"active","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuStatsCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stats-card","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":true,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"change","alias":"change","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuStepperComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stepper","inputs":[{"name":"steps","alias":"steps","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"activeStep","alias":"activeStep","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"linear","alias":"linear","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"completed","alias":"completed","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"finishLabel","alias":"finishLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"activeStep","alias":"activeStepChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"finished","alias":"finished","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["goTo(index: number): void;"]},{"name":"NeuSwitchComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-switch","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTabPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tab-panel","inputs":[{"name":"id","alias":"id","required":true,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuTabsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tabs","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tabs","alias":"tabs","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignal<boolean>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]},{"name":"NeuTextareaComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-textarea","inputs":[{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuThemeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-theme","inputs":[{"name":"scheme","alias":"scheme","required":false,"type":"import(\"@angular/core\").InputSignal<NeuColorScheme>"},{"name":"tokens","alias":"tokens","required":false,"type":"import(\"@angular/core\").InputSignal<Partial<NeuTokens>>"}],"outputs":[],"members":["readonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;"]},{"name":"NeuTimelineComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-timeline","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"completedLabel","alias":"completedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"pendingLabel","alias":"pendingLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>"}],"outputs":[],"members":[]},{"name":"NeuToastComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toast","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"duration","alias":"duration","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuToggleButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toggle-button-group","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTokens","kind":"InterfaceDeclaration","declaration":"export interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}"},{"name":"NeuTone","kind":"TypeAliasDeclaration","declaration":"export type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';"},{"name":"NeuToolbarAction","kind":"InterfaceDeclaration","declaration":"export interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuToolbarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toolbar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuTreeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTreeNode","kind":"InterfaceDeclaration","declaration":"export interface NeuTreeNode extends NeuOption {\n readonly children?: readonly NeuTreeNode[];\n}"},{"name":"NeuTreeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuUpload","kind":"TypeAliasDeclaration","declaration":"export type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;"},{"name":"NeuUploaderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-uploader","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"files","alias":"files","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"types","alias":"types","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxFiles","alias":"maxFiles","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"maxBytes","alias":"maxBytes","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"chooseLabel","alias":"chooseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uploadLabel","alias":"uploadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"stateLabels","alias":"stateLabels","required":false,"type":"import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" | \"selected\" | \"uploading\" | \"complete\", string>>>"},{"name":"upload","alias":"upload","required":false,"type":"import(\"@angular/core\").InputSignal<NeuUpload | undefined>"}],"outputs":[{"name":"files","alias":"filesChange","type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>"},{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<NeuFile>"},{"name":"rejected","alias":"rejected","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuUploadItem","kind":"InterfaceDeclaration","declaration":"export interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}"},{"name":"NeuVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';"},{"name":"NeuVirtualListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-virtual-list","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"estimatedItemHeight","alias":"estimatedItemHeight","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"endReached","alias":"endReached","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["scrollToIndex(index: number): void;","scrollToTop(): void;"]},{"name":"NeuVirtualListItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}"},{"name":"NeuVirtualListItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuVirtualListItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/accordion":{"types":"./dist/accordion/index.d.ts","sha256":"6d40566b1f55b7cc26c95e7bfb9f00bae1eea4efdf7dfa15a0374c4466181027","symbols":[{"name":"NeuAccordionComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-accordion","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"}],"members":[]}]},"@neural-ui/native/alert":{"types":"./dist/alert/index.d.ts","sha256":"0d96b9612039eb646f5ef32d5bf691c9fbb61ef4c6d295f33c86b4c7e1dcd40b","symbols":[{"name":"NeuAlertComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-alert","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuAlertVariant>"},{"name":"showIcon","alias":"showIcon","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"visible","alias":"visible","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closable","alias":"closable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"visible","alias":"visibleChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAlertVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuAlertVariant = 'soft' | 'outline';"}]},"@neural-ui/native/autocomplete":{"types":"./dist/autocomplete/index.d.ts","sha256":"68c26f2a6e9b79f2f060698da02a51b8c3ec9c75187bf025e9d54eaaae6b7813","symbols":[{"name":"NeuAutocompleteComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-autocomplete","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"minLength","alias":"minLength","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/avatar":{"types":"./dist/avatar/index.d.ts","sha256":"95dfeda449ed2fb1210356c6bb8da140e5a5a94540485f87a4b4d8e1cb2e932e","symbols":[{"name":"NeuAvatarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uri","alias":"uri","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]}]},"@neural-ui/native/avatar-group":{"types":"./dist/avatar-group/index.d.ts","sha256":"c41b5cc6fa6928d374e6633851cabc379950e9e643cc9dc48488d911f109754a","symbols":[{"name":"NeuAvatarGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar-group","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"moreLabel","alias":"moreLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]}]},"@neural-ui/native/badge":{"types":"./dist/badge/index.d.ts","sha256":"a0ec29f932461a78f66408d256f876f612a378fc2fe175aa227e4d603d3ad3b5","symbols":[{"name":"NeuBadgeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-badge","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/bottom-sheet":{"types":"./dist/bottom-sheet/index.d.ts","sha256":"9769afb627e2817bf6ce8fd60dacc78d819f10c6f4680a476bb14d356627a592","symbols":[{"name":"NeuBottomSheetComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-bottom-sheet","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuBottomSheetHeight","kind":"TypeAliasDeclaration","declaration":"export type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';"}]},"@neural-ui/native/button":{"types":"./dist/button/index.d.ts","sha256":"86c073df766369e08e0cf8f3ced994229259d2fd212f4e0d0442f4abcc1440fe","symbols":[{"name":"NeuButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"accessibilityLabel","alias":"accessibilityLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]}]},"@neural-ui/native/button-group":{"types":"./dist/button-group/index.d.ts","sha256":"c96273281aa7fd7fa526c9591d8cf54ac4bf12e4f81174acaf2e5cee250a2c57","symbols":[{"name":"NeuButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/calendar":{"types":"./dist/calendar/index.d.ts","sha256":"393a45c2b6f69615ee5ec034f1b3989f628be005b93934ac9ac428d89d8dcccf","symbols":[{"name":"NeuCalendarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-calendar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"month","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"firstDay","alias":"firstDay","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"events","alias":"events","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>"},{"name":"showAgenda","alias":"showAgenda","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"editable","alias":"editable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"agendaLabel","alias":"agendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAgendaLabel","alias":"emptyAgendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hasEventsLabel","alias":"hasEventsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addEventLabel","alias":"addEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"editEventLabel","alias":"editEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"deleteEventLabel","alias":"deleteEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"monthChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"eventCreateRequested","alias":"eventCreateRequested","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"eventEditRequested","alias":"eventEditRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"eventDeleteRequested","alias":"eventDeleteRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCalendarEvent","kind":"InterfaceDeclaration","declaration":"export interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}"}]},"@neural-ui/native/card":{"types":"./dist/card/index.d.ts","sha256":"0c145d4c22fe342ebe92399aea8a440e6e7ee0ce16ee54d548ec5bfce475a1ee","symbols":[{"name":"NeuCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-card","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<\"tonal\" | \"surface\" | \"outlined\">"}],"outputs":[],"members":[]},{"name":"NeuCardFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCardHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/carousel":{"types":"./dist/carousel/index.d.ts","sha256":"4931ab1dc6b3acdf222fe094d65b14b73d9f81226fac51692124e32b8bba1427","symbols":[{"name":"NeuCarouselComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-carousel","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"preview","alias":"preview","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuImageViewerLabels>"},{"name":"loop","alias":"loop","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplay","alias":"autoplay","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplayInterval","alias":"autoplayInterval","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"pauseLabel","alias":"pauseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"playLabel","alias":"playLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]}]},"@neural-ui/native/cascade-select":{"types":"./dist/cascade-select/index.d.ts","sha256":"56dd0a5a45588d436e415b0264d6dd0f8b26bbd09f7bd03d3b97537676e38459","symbols":[{"name":"NeuCascadeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-cascade-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"backLabel","alias":"backLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"rootLabel","alias":"rootLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/checkbox":{"types":"./dist/checkbox/index.d.ts","sha256":"453d7d5858643cc8718ac8e7260cb691a1e6b97a24ef6011945a298afdf88a69","symbols":[{"name":"NeuCheckboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-checkbox","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/chip":{"types":"./dist/chip/index.d.ts","sha256":"ca37662c4250ab32a42769254dfc220dac65f075b0418294f915ab761d5f4008","symbols":[{"name":"NeuChipComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-chip","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"selected","alias":"selected","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selectable","alias":"selectable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removable","alias":"removable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selectedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"removed","alias":"removed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/confirm-dialog":{"types":"./dist/confirm-dialog/index.d.ts","sha256":"4e1029b3d350bf46371f00d3a65fa6144664b71dc55a6daa38894d75265c4f86","symbols":[{"name":"NeuConfirmDialogComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-confirm-dialog","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"confirmLabel","alias":"confirmLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"intent","alias":"intent","required":false,"type":"import(\"@angular/core\").InputSignal<\"danger\" | \"default\">"},{"name":"busy","alias":"busy","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeOnConfirm","alias":"closeOnConfirm","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"confirmed","alias":"confirmed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/context-menu":{"types":"./dist/context-menu/index.d.ts","sha256":"77e1555f2b4cee2d3164f5d403383b9bb5aadfda25a714a8f67bf31ca68729e0","symbols":[{"name":"NeuContextMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-context-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionsLabel","alias":"actionsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/data-view":{"types":"./dist/data-view/index.d.ts","sha256":"89bbff4f1680816b9b69085f3744394e3c1efe26b3ef22e637a9a0c5e47889d4","symbols":[{"name":"NeuDataViewComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-data-view","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> | undefined>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descending","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"sortLabel","alias":"sortLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"refreshLabel","alias":"refreshLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descendingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"refresh","alias":"refresh","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}"},{"name":"NeuDataViewItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuDataViewItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/date-input":{"types":"./dist/date-input/index.d.ts","sha256":"f63a0b5969c1d7b9289d6be50cd3eee025fe4e7127a3de44ff39a5c4bbd9bcea","symbols":[{"name":"NeuDateInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-date-input","inputs":[{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/divider":{"types":"./dist/divider/index.d.ts","sha256":"b7f31d5aa559bf544f5ac879dd8a8272ac073f6231631dadb965410119340017","symbols":[{"name":"NeuDividerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-divider","inputs":[{"name":"orientation","alias":"orientation","required":false,"type":"import(\"@angular/core\").InputSignal<\"horizontal\" | \"vertical\">"}],"outputs":[],"members":[]}]},"@neural-ui/native/empty-state":{"types":"./dist/empty-state/index.d.ts","sha256":"966ff23d04587f76cb85a013f40bb8c94249941ef576234bfe039129bd1ea00e","symbols":[{"name":"NeuEmptyStateComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-empty-state","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/filter-bar":{"types":"./dist/filter-bar/index.d.ts","sha256":"d48a15ef7336d22ea13446f4334f2689b627731575a576a8ba4f9590f2c8706f","symbols":[{"name":"NeuFilterBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-filter-bar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]}]},"@neural-ui/native/form-field":{"types":"./dist/form-field/index.d.ts","sha256":"c4d880fdf381d4c203fbcb01afab0fbea23375d3d76afa29a5bd955095b93c5a","symbols":[{"name":"NeuFormFieldComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-form-field","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]}]},"@neural-ui/native/foundation":{"types":"./dist/foundation/index.d.ts","sha256":"75500ce10ca61cd1e1ff88f59f325a981fc7d156deeff2ca40346699d60c7609","symbols":[{"name":"NEU_CHECK_ICON","kind":"VariableDeclaration","declaration":"NEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\""},{"name":"NEU_DARK_TOKENS","kind":"VariableDeclaration","declaration":"NEU_DARK_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_LIGHT_TOKENS","kind":"VariableDeclaration","declaration":"NEU_LIGHT_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_PLUS_ICON","kind":"VariableDeclaration","declaration":"NEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\""},{"name":"NEU_THEME","kind":"VariableDeclaration","declaration":"NEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>"},{"name":"NeuColorScheme","kind":"TypeAliasDeclaration","declaration":"export type NeuColorScheme = 'system' | 'light' | 'dark';"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuSize","kind":"TypeAliasDeclaration","declaration":"export type NeuSize = 'sm' | 'md' | 'lg';"},{"name":"NeuTokens","kind":"InterfaceDeclaration","declaration":"export interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}"},{"name":"NeuTone","kind":"TypeAliasDeclaration","declaration":"export type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';"},{"name":"NeuVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';"}]},"@neural-ui/native/gallery":{"types":"./dist/gallery/index.d.ts","sha256":"17510c5d94a2a6d1e8a9ad3216832318e51cc6aec035c566e9621ec2c1270c03","symbols":[{"name":"NeuGalleryCaptionDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryCaption]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-gallery","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"layout","alias":"layout","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryLayout>"},{"name":"columns","alias":"columns","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"aspectRatio","alias":"aspectRatio","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showCaptions","alias":"showCaptions","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuGalleryItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}"},{"name":"NeuGalleryItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryLayout","kind":"TypeAliasDeclaration","declaration":"export type NeuGalleryLayout = 'grid' | 'mosaic';"},{"name":"NeuGalleryViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"}]},"@neural-ui/native/haptics":{"types":"./dist/haptics/index.d.ts","sha256":"401fe22b083895b314c1828337b7d254087d5624fd62fefe39a31be0fd09201f","symbols":[{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_NATIVE_HAPTICS","kind":"VariableDeclaration","declaration":"NEU_NATIVE_HAPTICS: InjectionToken<NeuNativeHaptics | null>"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuNativeHaptics","kind":"InterfaceDeclaration","declaration":"export interface NeuNativeHaptics {\n impactAsync(style: NeuHapticImpact): Promise<void>;\n notificationAsync(type: \"success\" | \"warning\" | \"error\"): Promise<void>;\n selectionAsync(): Promise<void>;\n}"},{"name":"provideNeuHaptics","kind":"FunctionDeclaration","declaration":"export declare function provideNeuHaptics(options?: NeuHapticsOptions): EnvironmentProviders;"}]},"@neural-ui/native/icon-button":{"types":"./dist/icon-button/index.d.ts","sha256":"00b6064424b83f52fb3e0713c3a1609c0be6ab205e60254467413abad57ec0af","symbols":[{"name":"NeuIconButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-icon-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]}]},"@neural-ui/native/image-viewer":{"types":"./dist/image-viewer/index.d.ts","sha256":"1208faefec9c30fe41bfc9d9063d53fdb28399513a4e9e7abb6a7065a3951540","symbols":[{"name":"NeuImageViewerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-image-viewer","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomLabel","alias":"zoomLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomOutLabel","alias":"zoomOutLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"errorLabel","alias":"errorLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuImageViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"}]},"@neural-ui/native/inline-editor":{"types":"./dist/inline-editor/index.d.ts","sha256":"69b936053d472e06c807cd9ff5e60c398c146174212a409db3e7d6eb124832c3","symbols":[{"name":"NeuInlineEditorComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-inline-editor","inputs":[{"name":"editing","alias":"editing","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"saveLabel","alias":"saveLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"editing","alias":"editingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"saved","alias":"saved","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input":{"types":"./dist/input/index.d.ts","sha256":"bbc6d97552ff3aacf52d5093a43572f742147268aa241a2fc20f318b25c61924","symbols":[{"name":"NeuInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input","inputs":[{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"email-address\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-mask":{"types":"./dist/input-mask/index.d.ts","sha256":"c93bd7115d7ee102f64ca5f4caf38262524370f46b12acdab6e0be349c013f4e","symbols":[{"name":"formatMask","kind":"FunctionDeclaration","declaration":"export declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};"},{"name":"NeuInputMaskComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-mask","inputs":[{"name":"mask","alias":"mask","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-otp":{"types":"./dist/input-otp/index.d.ts","sha256":"3a4b8b2265dbeea20d7aeefdea29b25629e074aad2cc4ef71ab01e9f4909b8cd","symbols":[{"name":"NeuInputOtpComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-otp","inputs":[{"name":"length","alias":"length","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-tags":{"types":"./dist/input-tags/index.d.ts","sha256":"dafce233b09859287454c54b3dd6707179e75d68321df6df0dae52e3a2750fa3","symbols":[{"name":"NeuInputTagsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-tags","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/listbox":{"types":"./dist/listbox/index.d.ts","sha256":"3a1162b2c663b9abfa90c173cf64ba6ca0afafcbf67f5c605bd624b543a92a49","symbols":[{"name":"NeuListboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-listbox","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"appearance","alias":"appearance","required":false,"type":"import(\"@angular/core\").InputSignal<\"cards\" | \"plain\">"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> | undefined>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}"},{"name":"NeuListboxItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuListboxItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/menu":{"types":"./dist/menu/index.d.ts","sha256":"558b078748fb6601ce8937c2d55d61c0587b95865f94749a56a5dce755810039","symbols":[{"name":"NeuMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"showTrigger","alias":"showTrigger","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/meter-group":{"types":"./dist/meter-group/index.d.ts","sha256":"0bed2508ba0f330e6386242dcd2e26e922d294a6839ce17ca6acfeb976059818","symbols":[{"name":"NeuMeterGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-meter-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/modal":{"types":"./dist/modal/index.d.ts","sha256":"82b2cda7dca107a8c0bd3054b4471d2c91a5bd67f5e3cbd053d4a5330b2bc3c5","symbols":[{"name":"NeuModalComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-modal","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<\"native\" | \"action\" | \"backdrop\">"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(reason?: 'native' | 'action' | 'backdrop'): void;"]},{"name":"NeuModalFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuModalHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/nav":{"types":"./dist/nav/index.d.ts","sha256":"7212e849aa6f6bfaead99ae6582c798af1d356057b8ba40270dc2998d5ffb897","symbols":[{"name":"NeuNavComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-nav","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNavItem","kind":"InterfaceDeclaration","declaration":"export interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}"}]},"@neural-ui/native/notification-center":{"types":"./dist/notification-center/index.d.ts","sha256":"c38ca548051f12c6a38dd4b92b87c36a747bd2bf5ffa8b53fdb74ac2abe9904f","symbols":[{"name":"NeuNotificationCenterComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-notification-center","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"readIds","alias":"readIds","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"markAllLabel","alias":"markAllLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"unreadLabel","alias":"unreadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"readIds","alias":"readIdsChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/number-input":{"types":"./dist/number-input/index.d.ts","sha256":"53de296ce1ae25475316c124a3e20916db6cb0ae1b1df5c6c39895b5f6550c79","symbols":[{"name":"NeuNumberInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-number-input","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/panel":{"types":"./dist/panel/index.d.ts","sha256":"14153a8e4973de84ddb2417af6834dd6dcbea851379fc840c5f84e91f1c02fcf","symbols":[{"name":"NeuPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-panel","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"collapsed","alias":"collapsed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"collapsible","alias":"collapsible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"collapsed","alias":"collapsedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuPanelFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPanelHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/password":{"types":"./dist/password/index.d.ts","sha256":"157e2768d0fee7e3dca4a4ce17d15952eccbf42b3b541dc182b97e5bad45b3ae","symbols":[{"name":"NeuPasswordComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-password","inputs":[{"name":"revealed","alias":"revealed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hideLabel","alias":"hideLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"revealed","alias":"revealedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/pick-list":{"types":"./dist/pick-list/index.d.ts","sha256":"0752d5559e6403f846b8634926ef23be9d672df4ca77fbe2aa4b6955136aa8e6","symbols":[{"name":"NeuPickListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-pick-list","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"selectedLabel","alias":"selectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"availableLabel","alias":"availableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"upLabel","alias":"upLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"downLabel","alias":"downLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptySelectedLabel","alias":"emptySelectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAvailableLabel","alias":"emptyAvailableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/popover":{"types":"./dist/popover/index.d.ts","sha256":"aba539bb90e74ff18392ac2852d845121804b03eac6f2bd8a7668ee723e107d2","symbols":[{"name":"NeuPopoverComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-popover","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissLabel","alias":"dismissLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]}]},"@neural-ui/native/progress-bar":{"types":"./dist/progress-bar/index.d.ts","sha256":"fc460379bee23b746ed8b2affdd94ded7ded20b1d080e483f123172c530df23f","symbols":[{"name":"NeuProgressBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-progress-bar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/radio":{"types":"./dist/radio/index.d.ts","sha256":"023111b324e07f1106b8c48ca62bfc00a5b14e07225ef3584b6edd953fc9ab37","symbols":[{"name":"NeuRadioGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-radio","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/rating":{"types":"./dist/rating/index.d.ts","sha256":"f95db2c1e5b2957533778f236591c7e8aa2caf29fbb90d93b308ea2bca9b1167","symbols":[{"name":"NeuRatingComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-rating","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearable","alias":"clearable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/select":{"types":"./dist/select/index.d.ts","sha256":"8bebc9cd1c16d4b452aa3e83a6e1477b18f35328f48cfe0a3d8dd9db186f1cf9","symbols":[{"name":"NeuSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-select","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"values","alias":"values","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"searchable","alias":"searchable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchPlaceholder","alias":"searchPlaceholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"values","alias":"valuesChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectItemContext","kind":"TypeAliasDeclaration","declaration":"export type NeuSelectItemContext = NeuListboxItemContext;"},{"name":"NeuSelectItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSelectSelectedContext","kind":"InterfaceDeclaration","declaration":"export interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}"},{"name":"NeuSelectSelectedDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectSelected]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/sidebar":{"types":"./dist/sidebar/index.d.ts","sha256":"6e10e61e3270c2bd5ede8f8973792339fbd5e07fdc4ebd12a0ac51db60304130","symbols":[{"name":"NeuSidebarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-sidebar","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/skeleton":{"types":"./dist/skeleton/index.d.ts","sha256":"780843e163a1b9db406e643856f041f06b678fa64c44cc847fdc10874b3cf8c6","symbols":[{"name":"NeuSkeletonAnimation","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonAnimation = 'pulse' | 'none';"},{"name":"NeuSkeletonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-skeleton","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"lines","alias":"lines","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonVariant>"},{"name":"width","alias":"width","required":false,"type":"import(\"@angular/core\").InputSignal<string | number | undefined>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"lastLineWidth","alias":"lastLineWidth","required":false,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"animation","alias":"animation","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>"}],"outputs":[],"members":[]},{"name":"NeuSkeletonVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonVariant = 'text' | 'rect' | 'circle';"}]},"@neural-ui/native/slider":{"types":"./dist/slider/index.d.ts","sha256":"f7f68892924699ad3bf7f5b768bb79e4e1cec05235c65fd59db1e09d4643c8eb","symbols":[{"name":"NeuSliderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-slider","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showButtons","alias":"showButtons","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/speed-dial":{"types":"./dist/speed-dial/index.d.ts","sha256":"825fb916a6e93b8960ee6a5aa4707092c40887cac81623e8f339c37b45ca05e4","symbols":[{"name":"NeuSpeedDialAction","kind":"InterfaceDeclaration","declaration":"export interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuSpeedDialComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-speed-dial","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/spinner":{"types":"./dist/spinner/index.d.ts","sha256":"22cb3f20b7a2499038891762db8990124409d78dde8c66e4f0533c736b114bbe","symbols":[{"name":"NeuSpinnerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-spinner","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<\"small\" | \"large\">"},{"name":"active","alias":"active","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/stats-card":{"types":"./dist/stats-card/index.d.ts","sha256":"93f80538d09192b5b1eed844145631650ad28b4bc45db61fc6bdd2f2e29317ab","symbols":[{"name":"NeuStatsCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stats-card","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":true,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"change","alias":"change","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/stepper":{"types":"./dist/stepper/index.d.ts","sha256":"ededf2ea8550e1f1f113f11f210b56475aae9283e526b7e97609460db66185d7","symbols":[{"name":"NeuStepperComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stepper","inputs":[{"name":"steps","alias":"steps","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"activeStep","alias":"activeStep","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"linear","alias":"linear","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"completed","alias":"completed","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"finishLabel","alias":"finishLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"activeStep","alias":"activeStepChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"finished","alias":"finished","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["goTo(index: number): void;"]}]},"@neural-ui/native/switch":{"types":"./dist/switch/index.d.ts","sha256":"2ac7220d88270898f14938c5480cf72519cb30c37de867bc3e26b321e76822b2","symbols":[{"name":"NeuSwitchComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-switch","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/tabs":{"types":"./dist/tabs/index.d.ts","sha256":"99929f6d14993eab62015f75c5cd6834348f39969b84d12b34b8d1c87a2421cb","symbols":[{"name":"NEU_TABS","kind":"VariableDeclaration","declaration":"NEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>"},{"name":"NeuTabPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tab-panel","inputs":[{"name":"id","alias":"id","required":true,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuTabsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tabs","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tabs","alias":"tabs","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignal<boolean>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]}]},"@neural-ui/native/textarea":{"types":"./dist/textarea/index.d.ts","sha256":"8fa47f1a74dfcc12843518b057f1939899ed7adf34dda541f944a952f71e0f28","symbols":[{"name":"NeuTextareaComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-textarea","inputs":[{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/theme":{"types":"./dist/theme/index.d.ts","sha256":"e912c95c6bd86cb6522af7a505580f24806823fef8b9415f40578b3835c9e45b","symbols":[{"name":"NeuThemeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-theme","inputs":[{"name":"scheme","alias":"scheme","required":false,"type":"import(\"@angular/core\").InputSignal<NeuColorScheme>"},{"name":"tokens","alias":"tokens","required":false,"type":"import(\"@angular/core\").InputSignal<Partial<NeuTokens>>"}],"outputs":[],"members":["readonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;"]}]},"@neural-ui/native/timeline":{"types":"./dist/timeline/index.d.ts","sha256":"eaa9deccfe12247c88aa486e59d4194d6c1f24b20d3ec4ec5e4ccd7e02517ada","symbols":[{"name":"NeuTimelineComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-timeline","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"completedLabel","alias":"completedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"pendingLabel","alias":"pendingLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>"}],"outputs":[],"members":[]}]},"@neural-ui/native/toast":{"types":"./dist/toast/index.d.ts","sha256":"0b40ce99ddbd825688892f2b267a0e93f6186d38ab813744aee4598587b2a47e","symbols":[{"name":"NeuToastComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toast","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"duration","alias":"duration","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/toggle-button-group":{"types":"./dist/toggle-button-group/index.d.ts","sha256":"d845761cf7b67ab5e648678ebc7e24ebd67dc31927d04b46e4130256184309ad","symbols":[{"name":"NeuToggleButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toggle-button-group","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/toolbar":{"types":"./dist/toolbar/index.d.ts","sha256":"f494436e45ff1a79d231fbc06ad9cd7c32cc36526c60400a9e6ec99e5b4535d2","symbols":[{"name":"NeuToolbarAction","kind":"InterfaceDeclaration","declaration":"export interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuToolbarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toolbar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/tree":{"types":"./dist/tree/index.d.ts","sha256":"8786a8448d4f651a0ca65f57b59207fa251e65afe910c7eb15ab6fa35ea8294a","symbols":[{"name":"NeuTreeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/tree-select":{"types":"./dist/tree-select/index.d.ts","sha256":"9b9d49c460676bf099f8ab2c56998bf2331388803df620d43fa211ffb6165388","symbols":[{"name":"NeuTreeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/uploader":{"types":"./dist/uploader/index.d.ts","sha256":"facd99fc0133547fe4fc7356047fd0fbff076a6072535ddc1b9066c942e7b703","symbols":[{"name":"NEU_FILE_PICKER","kind":"VariableDeclaration","declaration":"NEU_FILE_PICKER: InjectionToken<NeuFilePicker>"},{"name":"NeuFile","kind":"InterfaceDeclaration","declaration":"export interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}"},{"name":"NeuFilePicker","kind":"InterfaceDeclaration","declaration":"export interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}"},{"name":"NeuUpload","kind":"TypeAliasDeclaration","declaration":"export type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;"},{"name":"NeuUploaderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-uploader","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"files","alias":"files","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"types","alias":"types","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxFiles","alias":"maxFiles","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"maxBytes","alias":"maxBytes","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"chooseLabel","alias":"chooseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uploadLabel","alias":"uploadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"stateLabels","alias":"stateLabels","required":false,"type":"import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" | \"selected\" | \"uploading\" | \"complete\", string>>>"},{"name":"upload","alias":"upload","required":false,"type":"import(\"@angular/core\").InputSignal<NeuUpload | undefined>"}],"outputs":[{"name":"files","alias":"filesChange","type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>"},{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<NeuFile>"},{"name":"rejected","alias":"rejected","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuUploadItem","kind":"InterfaceDeclaration","declaration":"export interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}"}]},"@neural-ui/native/virtual-list":{"types":"./dist/virtual-list/index.d.ts","sha256":"0b32397ea878681b0dc5d384900482deac9309b402299bf350d7a6a610568701","symbols":[{"name":"NeuVirtualListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-virtual-list","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"estimatedItemHeight","alias":"estimatedItemHeight","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"endReached","alias":"endReached","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["scrollToIndex(index: number): void;","scrollToTop(): void;"]},{"name":"NeuVirtualListItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}"},{"name":"NeuVirtualListItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuVirtualListItem]","inputs":[],"outputs":[],"members":[]}]}},"tokens":[{"name":"accent","type":"string","optional":false,"category":"theme","default":"#006ee6","darkDefault":"#b5c4ff"},{"name":"onAccent","type":"string","optional":false,"category":"theme","default":"#ffffff","darkDefault":"#172955"},{"name":"surface","type":"string","optional":false,"category":"theme","default":"#ffffff","darkDefault":"#1b2230"},{"name":"canvas","type":"string","optional":false,"category":"theme","default":"#f4f5f7","darkDefault":"#111722"},{"name":"text","type":"string","optional":false,"category":"theme","default":"#172033","darkDefault":"#edf1fa"},{"name":"muted","type":"string","optional":false,"category":"theme","default":"#596477","darkDefault":"#b4bed0"},{"name":"border","type":"string","optional":false,"category":"theme","default":"#a5afbf","darkDefault":"#6c7a92"},{"name":"tonal","type":"string","optional":false,"category":"theme","default":"#eff6ff","darkDefault":"#293756"},{"name":"danger","type":"string","optional":false,"category":"theme","default":"#dc2626","darkDefault":"#ffb4ab"},{"name":"success","type":"string","optional":false,"category":"theme","default":"#15803d","darkDefault":"#8fdeb1"},{"name":"warning","type":"string","optional":false,"category":"theme","default":"#f59e0b","darkDefault":"#efd48f"},{"name":"warningText","type":"string","optional":false,"category":"theme","default":"#92400e","darkDefault":"#efd48f"},{"name":"onWarning","type":"string","optional":false,"category":"theme","default":"#111827","darkDefault":"#111722"},{"name":"info","type":"string","optional":false,"category":"theme","default":"#0064d1","darkDefault":"#7dd3fc"},{"name":"accentText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"dangerText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"successText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"infoText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"radius","type":"number","optional":false,"category":"theme","default":12,"darkDefault":12},{"name":"spacing","type":"number","optional":false,"category":"theme","default":16,"darkDefault":16},{"name":"fontSize","type":"number","optional":false,"category":"theme","default":16,"darkDefault":16},{"name":"duration","type":"number","optional":false,"category":"theme","default":120,"darkDefault":120},{"name":"surfaceBorder","type":"string","optional":true,"category":"theme","default":"#e1e6ed","darkDefault":"#354052"},{"name":"divider","type":"string","optional":true,"category":"theme","default":"#e7ebf0","darkDefault":"#303b4c"},{"name":"surfaceSecondary","type":"string","optional":true,"category":"theme","default":"#eef1f5","darkDefault":"#222d3f"},{"name":"mediaCanvas","type":"string","optional":true,"category":"theme","default":"#111722","darkDefault":"#111722"},{"name":"mediaText","type":"string","optional":true,"category":"theme","default":"#edf1fa","darkDefault":"#edf1fa"},{"name":"mediaBarStyle","type":"\"light\" | \"dark\"","optional":true,"category":"theme","default":"light","darkDefault":"light"}],"assets":{"dist/foundation/index.js":"72b4ff3cc18a00dd2fb94ba592695514694d07ed884a5d9f0e1f8eefcb011eed","dist/foundation/index.d.ts":"75500ce10ca61cd1e1ff88f59f325a981fc7d156deeff2ca40346699d60c7609"}},"documents":[{"id":"references/api/accordion","source":"skills/neural-native/references/api/accordion.md","text":"# @neural-ui/native/accordion\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAccordionComponent\n\nSelector: `neu-accordion`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n"},{"id":"references/api/alert","source":"skills/neural-native/references/api/alert.md","text":"# @neural-ui/native/alert\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAlertComponent\n\nSelector: `neu-alert`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuAlertVariant>` |\n| showIcon | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| visible | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| visibleChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAlertVariant\n\n```typescript\nexport type NeuAlertVariant = 'soft' | 'outline';\n```\n"},{"id":"references/api/autocomplete","source":"skills/neural-native/references/api/autocomplete.md","text":"# @neural-ui/native/autocomplete\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAutocompleteComponent\n\nSelector: `neu-autocomplete`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| minLength | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/avatar-group","source":"skills/neural-native/references/api/avatar-group.md","text":"# @neural-ui/native/avatar-group\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAvatarGroupComponent\n\nSelector: `neu-avatar-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| moreLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/avatar","source":"skills/neural-native/references/api/avatar.md","text":"# @neural-ui/native/avatar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAvatarComponent\n\nSelector: `neu-avatar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| uri | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/badge","source":"skills/neural-native/references/api/badge.md","text":"# @neural-ui/native/badge\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuBadgeComponent\n\nSelector: `neu-badge`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/bottom-sheet","source":"skills/neural-native/references/api/bottom-sheet.md","text":"# @neural-ui/native/bottom-sheet\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuBottomSheetComponent\n\nSelector: `neu-bottom-sheet`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| height | no | `import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuBottomSheetHeight\n\n```typescript\nexport type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';\n```\n"},{"id":"references/api/button-group","source":"skills/neural-native/references/api/button-group.md","text":"# @neural-ui/native/button-group\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuButtonGroupComponent\n\nSelector: `neu-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/button","source":"skills/neural-native/references/api/button.md","text":"# @neural-ui/native/button\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuButtonComponent\n\nSelector: `neu-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| accessibilityLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n"},{"id":"references/api/calendar","source":"skills/neural-native/references/api/calendar.md","text":"# @neural-ui/native/calendar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCalendarComponent\n\nSelector: `neu-calendar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| month | no | `import(\"@angular/core\").ModelSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| firstDay | no | `import(\"@angular/core\").InputSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| events | no | `import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>` |\n| showAgenda | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| editable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| agendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAgendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hasEventsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| editEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| deleteEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| monthChange | `import(\"@angular/core\").ModelSignal<string>` |\n| eventCreateRequested | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| eventEditRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| eventDeleteRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCalendarEvent\n\n```typescript\nexport interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}\n```\n"},{"id":"references/api/card","source":"skills/neural-native/references/api/card.md","text":"# @neural-ui/native/card\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCardComponent\n\nSelector: `neu-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<\"tonal\" \\| \"surface\" \\| \"outlined\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardFooterDirective\n\nSelector: `[neuCardFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardHeaderDirective\n\nSelector: `[neuCardHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/carousel","source":"skills/neural-native/references/api/carousel.md","text":"# @neural-ui/native/carousel\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCarouselComponent\n\nSelector: `neu-carousel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| preview | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuImageViewerLabels>` |\n| loop | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplay | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplayInterval | no | `import(\"@angular/core\").InputSignal<number>` |\n| pauseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| playLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n"},{"id":"references/api/cascade-select","source":"skills/neural-native/references/api/cascade-select.md","text":"# @neural-ui/native/cascade-select\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCascadeSelectComponent\n\nSelector: `neu-cascade-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| backLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| rootLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/checkbox","source":"skills/neural-native/references/api/checkbox.md","text":"# @neural-ui/native/checkbox\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCheckboxComponent\n\nSelector: `neu-checkbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/chip","source":"skills/neural-native/references/api/chip.md","text":"# @neural-ui/native/chip\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuChipComponent\n\nSelector: `neu-chip`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| selected | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selectable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selectedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| removed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/confirm-dialog","source":"skills/neural-native/references/api/confirm-dialog.md","text":"# @neural-ui/native/confirm-dialog\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuConfirmDialogComponent\n\nSelector: `neu-confirm-dialog`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| confirmLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| intent | no | `import(\"@angular/core\").InputSignal<\"danger\" \\| \"default\">` |\n| busy | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeOnConfirm | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| confirmed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/context-menu","source":"skills/neural-native/references/api/context-menu.md","text":"# @neural-ui/native/context-menu\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuContextMenuComponent\n\nSelector: `neu-context-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/core","source":"skills/neural-native/references/api/core.md","text":"# @neural-ui/native\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## formatMask\n\n```typescript\nexport declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};\n```\n\n## NEU_CHECK_ICON\n\n```typescript\nNEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\"\n```\n\n## NEU_DARK_TOKENS\n\n```typescript\nNEU_DARK_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_FILE_PICKER\n\n```typescript\nNEU_FILE_PICKER: InjectionToken<NeuFilePicker>\n```\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_LIGHT_TOKENS\n\n```typescript\nNEU_LIGHT_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_PLUS_ICON\n\n```typescript\nNEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\"\n```\n\n## NEU_TABS\n\n```typescript\nNEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>\n```\n\n## NEU_THEME\n\n```typescript\nNEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>\n```\n\n## NeuAccordionComponent\n\nSelector: `neu-accordion`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n\n## NeuAlertComponent\n\nSelector: `neu-alert`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuAlertVariant>` |\n| showIcon | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| visible | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| visibleChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAlertVariant\n\n```typescript\nexport type NeuAlertVariant = 'soft' | 'outline';\n```\n\n## NeuAutocompleteComponent\n\nSelector: `neu-autocomplete`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| minLength | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAvatarComponent\n\nSelector: `neu-avatar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| uri | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuAvatarGroupComponent\n\nSelector: `neu-avatar-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| moreLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuBadgeComponent\n\nSelector: `neu-badge`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuBottomSheetComponent\n\nSelector: `neu-bottom-sheet`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| height | no | `import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuBottomSheetHeight\n\n```typescript\nexport type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';\n```\n\n## NeuButtonComponent\n\nSelector: `neu-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| accessibilityLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n\n## NeuButtonGroupComponent\n\nSelector: `neu-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuCalendarComponent\n\nSelector: `neu-calendar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| month | no | `import(\"@angular/core\").ModelSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| firstDay | no | `import(\"@angular/core\").InputSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| events | no | `import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>` |\n| showAgenda | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| editable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| agendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAgendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hasEventsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| editEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| deleteEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| monthChange | `import(\"@angular/core\").ModelSignal<string>` |\n| eventCreateRequested | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| eventEditRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| eventDeleteRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCalendarEvent\n\n```typescript\nexport interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}\n```\n\n## NeuCardComponent\n\nSelector: `neu-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<\"tonal\" \\| \"surface\" \\| \"outlined\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardFooterDirective\n\nSelector: `[neuCardFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardHeaderDirective\n\nSelector: `[neuCardHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCarouselComponent\n\nSelector: `neu-carousel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| preview | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuImageViewerLabels>` |\n| loop | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplay | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplayInterval | no | `import(\"@angular/core\").InputSignal<number>` |\n| pauseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| playLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuCascadeSelectComponent\n\nSelector: `neu-cascade-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| backLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| rootLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCheckboxComponent\n\nSelector: `neu-checkbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuChipComponent\n\nSelector: `neu-chip`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| selected | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selectable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selectedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| removed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuColorScheme\n\n```typescript\nexport type NeuColorScheme = 'system' | 'light' | 'dark';\n```\n\n## NeuConfirmDialogComponent\n\nSelector: `neu-confirm-dialog`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| confirmLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| intent | no | `import(\"@angular/core\").InputSignal<\"danger\" \\| \"default\">` |\n| busy | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeOnConfirm | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| confirmed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuContextMenuComponent\n\nSelector: `neu-context-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewComponent\n\nSelector: `neu-data-view`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> \\| undefined>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| descending | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| sortLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| refreshLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n| descendingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| refresh | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewItemContext\n\n```typescript\nexport interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}\n```\n\n## NeuDataViewItemDirective\n\nSelector: `ng-template[neuDataViewItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuDateInputComponent\n\nSelector: `neu-date-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDividerComponent\n\nSelector: `neu-divider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| orientation | no | `import(\"@angular/core\").InputSignal<\"horizontal\" \\| \"vertical\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuEmptyStateComponent\n\nSelector: `neu-empty-state`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuFile\n\n```typescript\nexport interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}\n```\n\n## NeuFilePicker\n\n```typescript\nexport interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}\n```\n\n## NeuFilterBarComponent\n\nSelector: `neu-filter-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n\n## NeuFormFieldComponent\n\nSelector: `neu-form-field`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryCaptionDirective\n\nSelector: `ng-template[neuGalleryCaption]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryComponent\n\nSelector: `neu-gallery`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| layout | no | `import(\"@angular/core\").InputSignal<NeuGalleryLayout>` |\n| columns | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| aspectRatio | no | `import(\"@angular/core\").InputSignal<number>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| showCaptions | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuGalleryItemContext\n\n```typescript\nexport interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}\n```\n\n## NeuGalleryItemDirective\n\nSelector: `ng-template[neuGalleryItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryLayout\n\n```typescript\nexport type NeuGalleryLayout = 'grid' | 'mosaic';\n```\n\n## NeuGalleryViewerLabels\n\n```typescript\nexport interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuIconButtonComponent\n\nSelector: `neu-icon-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| svg | yes | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n\n## NeuImageItem\n\n```typescript\nexport interface NeuImageItem {\n readonly id: string;\n readonly uri: string;\n readonly label: string;\n}\n```\n\n## NeuImageViewerComponent\n\nSelector: `neu-image-viewer`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomOutLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| errorLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuImageViewerLabels\n\n```typescript\nexport interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n\n## NeuInlineEditorComponent\n\nSelector: `neu-inline-editor`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| editing | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| saveLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| editingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| saved | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputComponent\n\nSelector: `neu-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"email-address\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputMaskComponent\n\nSelector: `neu-input-mask`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| mask | yes | `import(\"@angular/core\").InputSignal<string>` |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputOtpComponent\n\nSelector: `neu-input-otp`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| length | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| completed | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputTagsComponent\n\nSelector: `neu-input-tags`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxComponent\n\nSelector: `neu-listbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| appearance | no | `import(\"@angular/core\").InputSignal<\"cards\" \\| \"plain\">` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> \\| undefined>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxItemContext\n\n```typescript\nexport interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}\n```\n\n## NeuListboxItemDirective\n\nSelector: `ng-template[neuListboxItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuMenuComponent\n\nSelector: `neu-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| showTrigger | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuMeterGroupComponent\n\nSelector: `neu-meter-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalComponent\n\nSelector: `neu-modal`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<\"native\" \\| \"action\" \\| \"backdrop\">` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(reason?: 'native' | 'action' | 'backdrop'): void;\n```\n\n## NeuModalFooterDirective\n\nSelector: `ng-template[neuModalFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalHeaderDirective\n\nSelector: `ng-template[neuModalHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuNavComponent\n\nSelector: `neu-nav`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNavItem\n\n```typescript\nexport interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuNotificationCenterComponent\n\nSelector: `neu-notification-center`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| readIds | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| markAllLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| unreadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| readIdsChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNumberInputComponent\n\nSelector: `neu-number-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuOption\n\n```typescript\nexport interface NeuOption {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly disabled?: boolean;\n}\n```\n\n## NeuPanelComponent\n\nSelector: `neu-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| collapsed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| collapsible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| collapsedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuPanelFooterDirective\n\nSelector: `[neuPanelFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPanelHeaderDirective\n\nSelector: `[neuPanelHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPasswordComponent\n\nSelector: `neu-password`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| revealed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| showLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hideLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| revealedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuPickListComponent\n\nSelector: `neu-pick-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| selectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| availableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| upLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| downLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptySelectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAvailableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuPopoverComponent\n\nSelector: `neu-popover`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| dismissLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuProgressBarComponent\n\nSelector: `neu-progress-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuRadioGroupComponent\n\nSelector: `neu-radio`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuRatingComponent\n\nSelector: `neu-rating`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectComponent\n\nSelector: `neu-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| values | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| searchable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchPlaceholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valuesChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectItemContext\n\n```typescript\nexport type NeuSelectItemContext = NeuListboxItemContext;\n```\n\n## NeuSelectItemDirective\n\nSelector: `ng-template[neuSelectItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSelectSelectedContext\n\n```typescript\nexport interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}\n```\n\n## NeuSelectSelectedDirective\n\nSelector: `ng-template[neuSelectSelected]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSidebarComponent\n\nSelector: `neu-sidebar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSize\n\n```typescript\nexport type NeuSize = 'sm' | 'md' | 'lg';\n```\n\n## NeuSkeletonAnimation\n\n```typescript\nexport type NeuSkeletonAnimation = 'pulse' | 'none';\n```\n\n## NeuSkeletonComponent\n\nSelector: `neu-skeleton`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| lines | no | `import(\"@angular/core\").InputSignal<number>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuSkeletonVariant>` |\n| width | no | `import(\"@angular/core\").InputSignal<string \\| number \\| undefined>` |\n| height | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| lastLineWidth | no | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| animation | no | `import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSkeletonVariant\n\n```typescript\nexport type NeuSkeletonVariant = 'text' | 'rect' | 'circle';\n```\n\n## NeuSliderComponent\n\nSelector: `neu-slider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| showButtons | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSpeedDialAction\n\n```typescript\nexport interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuSpeedDialComponent\n\nSelector: `neu-speed-dial`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuSpinnerComponent\n\nSelector: `neu-spinner`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| size | no | `import(\"@angular/core\").InputSignal<\"small\" \\| \"large\">` |\n| active | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showLabel | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuStatsCardComponent\n\nSelector: `neu-stats-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | yes | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| change | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuStepperComponent\n\nSelector: `neu-stepper`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| steps | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| activeStep | no | `import(\"@angular/core\").ModelSignal<number>` |\n| linear | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| completed | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| finishLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| activeStepChange | `import(\"@angular/core\").ModelSignal<number>` |\n| finished | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\ngoTo(index: number): void;\n```\n\n## NeuSwitchComponent\n\nSelector: `neu-switch`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTabPanelComponent\n\nSelector: `neu-tab-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| id | yes | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuTabsComponent\n\nSelector: `neu-tabs`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| tabs | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n\n## NeuTextareaComponent\n\nSelector: `neu-textarea`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuThemeComponent\n\nSelector: `neu-theme`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| scheme | no | `import(\"@angular/core\").InputSignal<NeuColorScheme>` |\n| tokens | no | `import(\"@angular/core\").InputSignal<Partial<NeuTokens>>` |\n\n| Output | Type |\n| --- | --- |\n\nSupported imperative members:\n\n```typescript\nreadonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;\n```\n\n## NeuTimelineComponent\n\nSelector: `neu-timeline`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| completedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| pendingLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuToastComponent\n\nSelector: `neu-toast`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| duration | no | `import(\"@angular/core\").InputSignal<number>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuToggleButtonGroupComponent\n\nSelector: `neu-toggle-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTokens\n\n```typescript\nexport interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}\n```\n\n## NeuTone\n\n```typescript\nexport type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';\n```\n\n## NeuToolbarAction\n\n```typescript\nexport interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuToolbarComponent\n\nSelector: `neu-toolbar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuTreeComponent\n\nSelector: `neu-tree`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTreeNode\n\n```typescript\nexport interface NeuTreeNode extends NeuOption {\n readonly children?: readonly NeuTreeNode[];\n}\n```\n\n## NeuTreeSelectComponent\n\nSelector: `neu-tree-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuUpload\n\n```typescript\nexport type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;\n```\n\n## NeuUploaderComponent\n\nSelector: `neu-uploader`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| files | no | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| types | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxFiles | no | `import(\"@angular/core\").InputSignal<number>` |\n| maxBytes | no | `import(\"@angular/core\").InputSignal<number>` |\n| chooseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| uploadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| stateLabels | no | `import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" \\| \"selected\" \\| \"uploading\" \\| \"complete\", string>>>` |\n| upload | no | `import(\"@angular/core\").InputSignal<NeuUpload \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| filesChange | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>` |\n| completed | `import(\"@angular/core\").OutputEmitterRef<NeuFile>` |\n| rejected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuUploadItem\n\n```typescript\nexport interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}\n```\n\n## NeuVariant\n\n```typescript\nexport type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';\n```\n\n## NeuVirtualListComponent\n\nSelector: `neu-virtual-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| estimatedItemHeight | no | `import(\"@angular/core\").InputSignal<number>` |\n| height | no | `import(\"@angular/core\").InputSignal<number>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| endReached | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nscrollToIndex(index: number): void;\nscrollToTop(): void;\n```\n\n## NeuVirtualListItemContext\n\n```typescript\nexport interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}\n```\n\n## NeuVirtualListItemDirective\n\nSelector: `ng-template[neuVirtualListItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/data-view","source":"skills/neural-native/references/api/data-view.md","text":"# @neural-ui/native/data-view\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDataViewComponent\n\nSelector: `neu-data-view`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> \\| undefined>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| descending | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| sortLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| refreshLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n| descendingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| refresh | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewItemContext\n\n```typescript\nexport interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}\n```\n\n## NeuDataViewItemDirective\n\nSelector: `ng-template[neuDataViewItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/date-input","source":"skills/neural-native/references/api/date-input.md","text":"# @neural-ui/native/date-input\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDateInputComponent\n\nSelector: `neu-date-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/divider","source":"skills/neural-native/references/api/divider.md","text":"# @neural-ui/native/divider\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDividerComponent\n\nSelector: `neu-divider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| orientation | no | `import(\"@angular/core\").InputSignal<\"horizontal\" \\| \"vertical\">` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/empty-state","source":"skills/neural-native/references/api/empty-state.md","text":"# @neural-ui/native/empty-state\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuEmptyStateComponent\n\nSelector: `neu-empty-state`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/filter-bar","source":"skills/neural-native/references/api/filter-bar.md","text":"# @neural-ui/native/filter-bar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuFilterBarComponent\n\nSelector: `neu-filter-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n"},{"id":"references/api/form-field","source":"skills/neural-native/references/api/form-field.md","text":"# @neural-ui/native/form-field\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuFormFieldComponent\n\nSelector: `neu-form-field`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/foundation","source":"skills/neural-native/references/api/foundation.md","text":"# @neural-ui/native/foundation\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_CHECK_ICON\n\n```typescript\nNEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\"\n```\n\n## NEU_DARK_TOKENS\n\n```typescript\nNEU_DARK_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_LIGHT_TOKENS\n\n```typescript\nNEU_LIGHT_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_PLUS_ICON\n\n```typescript\nNEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\"\n```\n\n## NEU_THEME\n\n```typescript\nNEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>\n```\n\n## NeuColorScheme\n\n```typescript\nexport type NeuColorScheme = 'system' | 'light' | 'dark';\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuSize\n\n```typescript\nexport type NeuSize = 'sm' | 'md' | 'lg';\n```\n\n## NeuTokens\n\n```typescript\nexport interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}\n```\n\n## NeuTone\n\n```typescript\nexport type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';\n```\n\n## NeuVariant\n\n```typescript\nexport type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';\n```\n"},{"id":"references/api/gallery","source":"skills/neural-native/references/api/gallery.md","text":"# @neural-ui/native/gallery\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuGalleryCaptionDirective\n\nSelector: `ng-template[neuGalleryCaption]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryComponent\n\nSelector: `neu-gallery`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| layout | no | `import(\"@angular/core\").InputSignal<NeuGalleryLayout>` |\n| columns | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| aspectRatio | no | `import(\"@angular/core\").InputSignal<number>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| showCaptions | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuGalleryItemContext\n\n```typescript\nexport interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}\n```\n\n## NeuGalleryItemDirective\n\nSelector: `ng-template[neuGalleryItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryLayout\n\n```typescript\nexport type NeuGalleryLayout = 'grid' | 'mosaic';\n```\n\n## NeuGalleryViewerLabels\n\n```typescript\nexport interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n"},{"id":"references/api/haptics","source":"skills/neural-native/references/api/haptics.md","text":"# @neural-ui/native/haptics\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_NATIVE_HAPTICS\n\n```typescript\nNEU_NATIVE_HAPTICS: InjectionToken<NeuNativeHaptics | null>\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuNativeHaptics\n\n```typescript\nexport interface NeuNativeHaptics {\n impactAsync(style: NeuHapticImpact): Promise<void>;\n notificationAsync(type: \"success\" | \"warning\" | \"error\"): Promise<void>;\n selectionAsync(): Promise<void>;\n}\n```\n\n## provideNeuHaptics\n\n```typescript\nexport declare function provideNeuHaptics(options?: NeuHapticsOptions): EnvironmentProviders;\n```\n"},{"id":"references/api/icon-button","source":"skills/neural-native/references/api/icon-button.md","text":"# @neural-ui/native/icon-button\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuIconButtonComponent\n\nSelector: `neu-icon-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| svg | yes | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n"},{"id":"references/api/image-viewer","source":"skills/neural-native/references/api/image-viewer.md","text":"# @neural-ui/native/image-viewer\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuImageViewerComponent\n\nSelector: `neu-image-viewer`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomOutLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| errorLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuImageViewerLabels\n\n```typescript\nexport interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n"},{"id":"references/api/index","source":"skills/neural-native/references/api/index.md","text":"# Public API — @neural-ui/native@0.1.0-beta.5\n\nGenerated from the installed npm declarations, filtered by the reviewed upstream support policy. Read only the relevant entrypoint. Angular metadata and private implementation methods are excluded.\n\n| Entrypoint | Exports |\n| --- | ---: |\n| [@neural-ui/native](core.md) | 123 |\n| [@neural-ui/native/accordion](accordion.md) | 1 |\n| [@neural-ui/native/alert](alert.md) | 2 |\n| [@neural-ui/native/autocomplete](autocomplete.md) | 1 |\n| [@neural-ui/native/avatar](avatar.md) | 1 |\n| [@neural-ui/native/avatar-group](avatar-group.md) | 1 |\n| [@neural-ui/native/badge](badge.md) | 1 |\n| [@neural-ui/native/bottom-sheet](bottom-sheet.md) | 2 |\n| [@neural-ui/native/button](button.md) | 1 |\n| [@neural-ui/native/button-group](button-group.md) | 1 |\n| [@neural-ui/native/calendar](calendar.md) | 2 |\n| [@neural-ui/native/card](card.md) | 3 |\n| [@neural-ui/native/carousel](carousel.md) | 1 |\n| [@neural-ui/native/cascade-select](cascade-select.md) | 1 |\n| [@neural-ui/native/checkbox](checkbox.md) | 1 |\n| [@neural-ui/native/chip](chip.md) | 1 |\n| [@neural-ui/native/confirm-dialog](confirm-dialog.md) | 1 |\n| [@neural-ui/native/context-menu](context-menu.md) | 1 |\n| [@neural-ui/native/data-view](data-view.md) | 3 |\n| [@neural-ui/native/date-input](date-input.md) | 1 |\n| [@neural-ui/native/divider](divider.md) | 1 |\n| [@neural-ui/native/empty-state](empty-state.md) | 1 |\n| [@neural-ui/native/filter-bar](filter-bar.md) | 1 |\n| [@neural-ui/native/form-field](form-field.md) | 1 |\n| [@neural-ui/native/foundation](foundation.md) | 17 |\n| [@neural-ui/native/gallery](gallery.md) | 6 |\n| [@neural-ui/native/haptics](haptics.md) | 10 |\n| [@neural-ui/native/icon-button](icon-button.md) | 1 |\n| [@neural-ui/native/image-viewer](image-viewer.md) | 2 |\n| [@neural-ui/native/inline-editor](inline-editor.md) | 1 |\n| [@neural-ui/native/input](input.md) | 1 |\n| [@neural-ui/native/input-mask](input-mask.md) | 2 |\n| [@neural-ui/native/input-otp](input-otp.md) | 1 |\n| [@neural-ui/native/input-tags](input-tags.md) | 1 |\n| [@neural-ui/native/listbox](listbox.md) | 3 |\n| [@neural-ui/native/menu](menu.md) | 1 |\n| [@neural-ui/native/meter-group](meter-group.md) | 1 |\n| [@neural-ui/native/modal](modal.md) | 3 |\n| [@neural-ui/native/nav](nav.md) | 2 |\n| [@neural-ui/native/notification-center](notification-center.md) | 1 |\n| [@neural-ui/native/number-input](number-input.md) | 1 |\n| [@neural-ui/native/panel](panel.md) | 3 |\n| [@neural-ui/native/password](password.md) | 1 |\n| [@neural-ui/native/pick-list](pick-list.md) | 1 |\n| [@neural-ui/native/popover](popover.md) | 1 |\n| [@neural-ui/native/progress-bar](progress-bar.md) | 1 |\n| [@neural-ui/native/radio](radio.md) | 1 |\n| [@neural-ui/native/rating](rating.md) | 1 |\n| [@neural-ui/native/select](select.md) | 5 |\n| [@neural-ui/native/sidebar](sidebar.md) | 1 |\n| [@neural-ui/native/skeleton](skeleton.md) | 3 |\n| [@neural-ui/native/slider](slider.md) | 1 |\n| [@neural-ui/native/speed-dial](speed-dial.md) | 2 |\n| [@neural-ui/native/spinner](spinner.md) | 1 |\n| [@neural-ui/native/stats-card](stats-card.md) | 1 |\n| [@neural-ui/native/stepper](stepper.md) | 1 |\n| [@neural-ui/native/switch](switch.md) | 1 |\n| [@neural-ui/native/tabs](tabs.md) | 3 |\n| [@neural-ui/native/textarea](textarea.md) | 1 |\n| [@neural-ui/native/theme](theme.md) | 1 |\n| [@neural-ui/native/timeline](timeline.md) | 1 |\n| [@neural-ui/native/toast](toast.md) | 1 |\n| [@neural-ui/native/toggle-button-group](toggle-button-group.md) | 1 |\n| [@neural-ui/native/toolbar](toolbar.md) | 2 |\n| [@neural-ui/native/tree](tree.md) | 1 |\n| [@neural-ui/native/tree-select](tree-select.md) | 1 |\n| [@neural-ui/native/uploader](uploader.md) | 6 |\n| [@neural-ui/native/virtual-list](virtual-list.md) | 3 |\n\n[Public design tokens](tokens.md)\n"},{"id":"references/api/inline-editor","source":"skills/neural-native/references/api/inline-editor.md","text":"# @neural-ui/native/inline-editor\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInlineEditorComponent\n\nSelector: `neu-inline-editor`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| editing | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| saveLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| editingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| saved | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-mask","source":"skills/neural-native/references/api/input-mask.md","text":"# @neural-ui/native/input-mask\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## formatMask\n\n```typescript\nexport declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};\n```\n\n## NeuInputMaskComponent\n\nSelector: `neu-input-mask`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| mask | yes | `import(\"@angular/core\").InputSignal<string>` |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-otp","source":"skills/neural-native/references/api/input-otp.md","text":"# @neural-ui/native/input-otp\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputOtpComponent\n\nSelector: `neu-input-otp`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| length | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| completed | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-tags","source":"skills/neural-native/references/api/input-tags.md","text":"# @neural-ui/native/input-tags\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputTagsComponent\n\nSelector: `neu-input-tags`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input","source":"skills/neural-native/references/api/input.md","text":"# @neural-ui/native/input\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputComponent\n\nSelector: `neu-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"email-address\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/listbox","source":"skills/neural-native/references/api/listbox.md","text":"# @neural-ui/native/listbox\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuListboxComponent\n\nSelector: `neu-listbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| appearance | no | `import(\"@angular/core\").InputSignal<\"cards\" \\| \"plain\">` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> \\| undefined>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxItemContext\n\n```typescript\nexport interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}\n```\n\n## NeuListboxItemDirective\n\nSelector: `ng-template[neuListboxItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/menu","source":"skills/neural-native/references/api/menu.md","text":"# @neural-ui/native/menu\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuMenuComponent\n\nSelector: `neu-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| showTrigger | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/meter-group","source":"skills/neural-native/references/api/meter-group.md","text":"# @neural-ui/native/meter-group\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuMeterGroupComponent\n\nSelector: `neu-meter-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/modal","source":"skills/neural-native/references/api/modal.md","text":"# @neural-ui/native/modal\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuModalComponent\n\nSelector: `neu-modal`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<\"native\" \\| \"action\" \\| \"backdrop\">` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(reason?: 'native' | 'action' | 'backdrop'): void;\n```\n\n## NeuModalFooterDirective\n\nSelector: `ng-template[neuModalFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalHeaderDirective\n\nSelector: `ng-template[neuModalHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/nav","source":"skills/neural-native/references/api/nav.md","text":"# @neural-ui/native/nav\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNavComponent\n\nSelector: `neu-nav`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNavItem\n\n```typescript\nexport interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}\n```\n"},{"id":"references/api/notification-center","source":"skills/neural-native/references/api/notification-center.md","text":"# @neural-ui/native/notification-center\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNotificationCenterComponent\n\nSelector: `neu-notification-center`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| readIds | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| markAllLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| unreadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| readIdsChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/number-input","source":"skills/neural-native/references/api/number-input.md","text":"# @neural-ui/native/number-input\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNumberInputComponent\n\nSelector: `neu-number-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/panel","source":"skills/neural-native/references/api/panel.md","text":"# @neural-ui/native/panel\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPanelComponent\n\nSelector: `neu-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| collapsed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| collapsible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| collapsedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuPanelFooterDirective\n\nSelector: `[neuPanelFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPanelHeaderDirective\n\nSelector: `[neuPanelHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/password","source":"skills/neural-native/references/api/password.md","text":"# @neural-ui/native/password\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPasswordComponent\n\nSelector: `neu-password`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| revealed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| showLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hideLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| revealedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/pick-list","source":"skills/neural-native/references/api/pick-list.md","text":"# @neural-ui/native/pick-list\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPickListComponent\n\nSelector: `neu-pick-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| selectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| availableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| upLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| downLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptySelectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAvailableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/popover","source":"skills/neural-native/references/api/popover.md","text":"# @neural-ui/native/popover\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPopoverComponent\n\nSelector: `neu-popover`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| dismissLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n"},{"id":"references/api/progress-bar","source":"skills/neural-native/references/api/progress-bar.md","text":"# @neural-ui/native/progress-bar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuProgressBarComponent\n\nSelector: `neu-progress-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/radio","source":"skills/neural-native/references/api/radio.md","text":"# @neural-ui/native/radio\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuRadioGroupComponent\n\nSelector: `neu-radio`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/rating","source":"skills/neural-native/references/api/rating.md","text":"# @neural-ui/native/rating\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuRatingComponent\n\nSelector: `neu-rating`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/select","source":"skills/neural-native/references/api/select.md","text":"# @neural-ui/native/select\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSelectComponent\n\nSelector: `neu-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| values | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| searchable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchPlaceholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valuesChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectItemContext\n\n```typescript\nexport type NeuSelectItemContext = NeuListboxItemContext;\n```\n\n## NeuSelectItemDirective\n\nSelector: `ng-template[neuSelectItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSelectSelectedContext\n\n```typescript\nexport interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}\n```\n\n## NeuSelectSelectedDirective\n\nSelector: `ng-template[neuSelectSelected]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/sidebar","source":"skills/neural-native/references/api/sidebar.md","text":"# @neural-ui/native/sidebar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSidebarComponent\n\nSelector: `neu-sidebar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/skeleton","source":"skills/neural-native/references/api/skeleton.md","text":"# @neural-ui/native/skeleton\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSkeletonAnimation\n\n```typescript\nexport type NeuSkeletonAnimation = 'pulse' | 'none';\n```\n\n## NeuSkeletonComponent\n\nSelector: `neu-skeleton`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| lines | no | `import(\"@angular/core\").InputSignal<number>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuSkeletonVariant>` |\n| width | no | `import(\"@angular/core\").InputSignal<string \\| number \\| undefined>` |\n| height | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| lastLineWidth | no | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| animation | no | `import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSkeletonVariant\n\n```typescript\nexport type NeuSkeletonVariant = 'text' | 'rect' | 'circle';\n```\n"},{"id":"references/api/slider","source":"skills/neural-native/references/api/slider.md","text":"# @neural-ui/native/slider\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSliderComponent\n\nSelector: `neu-slider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| showButtons | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/speed-dial","source":"skills/neural-native/references/api/speed-dial.md","text":"# @neural-ui/native/speed-dial\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSpeedDialAction\n\n```typescript\nexport interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuSpeedDialComponent\n\nSelector: `neu-speed-dial`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/spinner","source":"skills/neural-native/references/api/spinner.md","text":"# @neural-ui/native/spinner\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSpinnerComponent\n\nSelector: `neu-spinner`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| size | no | `import(\"@angular/core\").InputSignal<\"small\" \\| \"large\">` |\n| active | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showLabel | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/stats-card","source":"skills/neural-native/references/api/stats-card.md","text":"# @neural-ui/native/stats-card\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuStatsCardComponent\n\nSelector: `neu-stats-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | yes | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| change | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/stepper","source":"skills/neural-native/references/api/stepper.md","text":"# @neural-ui/native/stepper\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuStepperComponent\n\nSelector: `neu-stepper`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| steps | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| activeStep | no | `import(\"@angular/core\").ModelSignal<number>` |\n| linear | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| completed | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| finishLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| activeStepChange | `import(\"@angular/core\").ModelSignal<number>` |\n| finished | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\ngoTo(index: number): void;\n```\n"},{"id":"references/api/switch","source":"skills/neural-native/references/api/switch.md","text":"# @neural-ui/native/switch\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSwitchComponent\n\nSelector: `neu-switch`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tabs","source":"skills/neural-native/references/api/tabs.md","text":"# @neural-ui/native/tabs\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_TABS\n\n```typescript\nNEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>\n```\n\n## NeuTabPanelComponent\n\nSelector: `neu-tab-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| id | yes | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuTabsComponent\n\nSelector: `neu-tabs`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| tabs | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n"},{"id":"references/api/textarea","source":"skills/neural-native/references/api/textarea.md","text":"# @neural-ui/native/textarea\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTextareaComponent\n\nSelector: `neu-textarea`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/theme","source":"skills/neural-native/references/api/theme.md","text":"# @neural-ui/native/theme\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuThemeComponent\n\nSelector: `neu-theme`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| scheme | no | `import(\"@angular/core\").InputSignal<NeuColorScheme>` |\n| tokens | no | `import(\"@angular/core\").InputSignal<Partial<NeuTokens>>` |\n\n| Output | Type |\n| --- | --- |\n\nSupported imperative members:\n\n```typescript\nreadonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;\n```\n"},{"id":"references/api/timeline","source":"skills/neural-native/references/api/timeline.md","text":"# @neural-ui/native/timeline\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTimelineComponent\n\nSelector: `neu-timeline`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| completedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| pendingLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/toast","source":"skills/neural-native/references/api/toast.md","text":"# @neural-ui/native/toast\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToastComponent\n\nSelector: `neu-toast`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| duration | no | `import(\"@angular/core\").InputSignal<number>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/toggle-button-group","source":"skills/neural-native/references/api/toggle-button-group.md","text":"# @neural-ui/native/toggle-button-group\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToggleButtonGroupComponent\n\nSelector: `neu-toggle-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tokens","source":"skills/neural-native/references/api/tokens.md","text":"# Native theme tokens\n\nGenerated from @neural-ui/native@0.1.0-beta.5, NeuTokens and the literal light/dark defaults.\nApply typed overrides through neu-theme. Optional semantic inks resolve from surfaces when not supplied; these are not the Web v2 CSS token catalogue.\n\n| Token | Type | Optional | Light default | Dark default |\n| --- | --- | --- | --- | --- |\n| `accent` | `string` | no | `#006ee6` | `#b5c4ff` |\n| `onAccent` | `string` | no | `#ffffff` | `#172955` |\n| `surface` | `string` | no | `#ffffff` | `#1b2230` |\n| `canvas` | `string` | no | `#f4f5f7` | `#111722` |\n| `text` | `string` | no | `#172033` | `#edf1fa` |\n| `muted` | `string` | no | `#596477` | `#b4bed0` |\n| `border` | `string` | no | `#a5afbf` | `#6c7a92` |\n| `tonal` | `string` | no | `#eff6ff` | `#293756` |\n| `danger` | `string` | no | `#dc2626` | `#ffb4ab` |\n| `success` | `string` | no | `#15803d` | `#8fdeb1` |\n| `warning` | `string` | no | `#f59e0b` | `#efd48f` |\n| `warningText` | `string` | no | `#92400e` | `#efd48f` |\n| `onWarning` | `string` | no | `#111827` | `#111722` |\n| `info` | `string` | no | `#0064d1` | `#7dd3fc` |\n| `accentText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `dangerText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `successText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `infoText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `radius` | `number` | no | `12` | `12` |\n| `spacing` | `number` | no | `16` | `16` |\n| `fontSize` | `number` | no | `16` | `16` |\n| `duration` | `number` | no | `120` | `120` |\n| `surfaceBorder` | `string` | yes | `#e1e6ed` | `#354052` |\n| `divider` | `string` | yes | `#e7ebf0` | `#303b4c` |\n| `surfaceSecondary` | `string` | yes | `#eef1f5` | `#222d3f` |\n| `mediaCanvas` | `string` | yes | `#111722` | `#111722` |\n| `mediaText` | `string` | yes | `#edf1fa` | `#edf1fa` |\n| `mediaBarStyle` | `\"light\" \\| \"dark\"` | yes | `light` | `light` |\n"},{"id":"references/api/toolbar","source":"skills/neural-native/references/api/toolbar.md","text":"# @neural-ui/native/toolbar\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToolbarAction\n\n```typescript\nexport interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuToolbarComponent\n\nSelector: `neu-toolbar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/tree-select","source":"skills/neural-native/references/api/tree-select.md","text":"# @neural-ui/native/tree-select\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTreeSelectComponent\n\nSelector: `neu-tree-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tree","source":"skills/neural-native/references/api/tree.md","text":"# @neural-ui/native/tree\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTreeComponent\n\nSelector: `neu-tree`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/uploader","source":"skills/neural-native/references/api/uploader.md","text":"# @neural-ui/native/uploader\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_FILE_PICKER\n\n```typescript\nNEU_FILE_PICKER: InjectionToken<NeuFilePicker>\n```\n\n## NeuFile\n\n```typescript\nexport interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}\n```\n\n## NeuFilePicker\n\n```typescript\nexport interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}\n```\n\n## NeuUpload\n\n```typescript\nexport type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;\n```\n\n## NeuUploaderComponent\n\nSelector: `neu-uploader`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| files | no | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| types | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxFiles | no | `import(\"@angular/core\").InputSignal<number>` |\n| maxBytes | no | `import(\"@angular/core\").InputSignal<number>` |\n| chooseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| uploadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| stateLabels | no | `import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" \\| \"selected\" \\| \"uploading\" \\| \"complete\", string>>>` |\n| upload | no | `import(\"@angular/core\").InputSignal<NeuUpload \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| filesChange | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>` |\n| completed | `import(\"@angular/core\").OutputEmitterRef<NeuFile>` |\n| rejected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuUploadItem\n\n```typescript\nexport interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}\n```\n"},{"id":"references/api/virtual-list","source":"skills/neural-native/references/api/virtual-list.md","text":"# @neural-ui/native/virtual-list\n\nVerified against @neural-ui/native@0.1.0-beta.5. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuVirtualListComponent\n\nSelector: `neu-virtual-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| estimatedItemHeight | no | `import(\"@angular/core\").InputSignal<number>` |\n| height | no | `import(\"@angular/core\").InputSignal<number>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| endReached | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nscrollToIndex(index: number): void;\nscrollToTop(): void;\n```\n\n## NeuVirtualListItemContext\n\n```typescript\nexport interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}\n```\n\n## NeuVirtualListItemDirective\n\nSelector: `ng-template[neuVirtualListItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/components","source":"skills/neural-native/references/components.md","text":"# Components and public contracts\n\nUse the generated [API index](api/index.md); it contains 67 typed entrypoints for the 64 component entries plus the root, theme and foundation. Native barrel exports duplicate many secondary exports; prefer secondary imports for discovery and application code.\n\nRead the specific contract before using a binding. Common differences from Neural Web:\n\n| Concern | Native contract |\n| --- | --- |\n| Action | `NeuButtonComponent`, `neu-button`, required `label`, output `pressed` |\n| Text control | `neu-input`, inherited `value`/`valueChange`, label, hint, required, disabled, readonly and validation inputs |\n| Checkbox or Switch | `checked`/`checkedChange`, not a string `value` |\n| Modal | Required `title`, `open`/`openChange`, `closed`, platform presentation events |\n| Collections | `NeuOption` uses stable `id`, `label`, optional `description` and `disabled` |\n| Data View | `items`, `query`, `descending`, `selected` and `refresh`; no Web Table row API |\n\nThe API references merge inherited input/output declarations; a binding absent from the derived class's own metadata may still be public. The references do not expose protected methods or Angular `ɵ` metadata. They do not authorize importing an internal physical file such as `@neural-ui/native/dist/foundation/mobile.js`.\n\nLoad collection states explicitly: loading, error, empty, populated, selected and disabled. Refresh emits an application request; provide real data loading or clearly explain an in-memory demonstration. Match the surrounding description to what the example actually does.\n\nSee [collections example](../examples/collections.ts), [forms](forms.md) and [customization](customization.md).\n"},{"id":"references/customization","source":"skills/neural-native/references/customization.md","text":"# Projection and typed templates\n\nChoose the customization API actually exported by the component; Web's similarly named directives do not apply.\n\n- Card and Panel accept projected content and their exported header/footer marker directives. Use native `view`/`text` inside them.\n- Modal and Bottom Sheet project body content and export `NeuModalHeaderDirective`/`NeuModalFooterDirective` or their Bottom Sheet counterparts for `ng-template` slots. Keep title and close semantics accessible.\n- Data View exports `NeuDataViewItemDirective` and `NeuDataViewItemContext`; Select exports item/selected directives and contexts. Listbox, Gallery and Virtual List have their own contracts. Read the corresponding [API entry](api/index.md) before choosing context fields.\n\nFor Select, the selected-template context contains the selected option array as `$implicit`, plus `value`, `values` and `placeholder`. Its item template uses the Listbox item context. Do not assume an undocumented `row`, `record`, `onSelect` or Web template variable.\n\nThe [overlay example](../examples/overlays.ts) uses a real `neuModalFooter` slot and application-owned `open` state. The supplied footer button closes the requested state; native presentation completion is a separate event. `dismissed` is an iOS native completion event and does not mean Android has failed when it is absent.\n\nAvoid placing a second large modal/calendar over a constrained modal body unless the flow and the actual platform presentation support it. Verify overflow and dismissal on the target device, not only in the browser preview.\n"},{"id":"references/forms","source":"skills/neural-native/references/forms.md","text":"# Forms and owned state\n\nUse writable signals in the application. An input's `value` model owns text; Checkbox/Switch use `checked`. Single Select uses string `value`; multiple Select uses `values: readonly string[]`. Keep option IDs stable when translating labels.\n\n```html\n<neu-input label=\"Full name\" [(value)]=\"name\" [required]=\"true\" />\n<neu-select label=\"Team\" [options]=\"teams\" [(value)]=\"team\" />\n<neu-checkbox label=\"Product updates\" [(checked)]=\"updates\" />\n<neu-button label=\"Save profile\" (pressed)=\"save()\" />\n```\n\nImport every component used; see the complete [forms example](../examples/forms.ts). `pressed` requests an action, while the application validates and saves. Do not attach a Web `click` handler to a Native Neural component in place of its declared output.\n\nAngular Signal Forms is optional. If used, import `FormField` from the matching `@angular/forms/signals` release and bind `[formField]` to the actual form tree field. Let that form own the control; do not also bind its `value`/`checked` model or a second form owner. Run strict Angular template checking for the actual field types. Classic CVA assumptions and Web Neural examples are not substitutes for checking the Native control.\n\nNeural's `NeuFormFieldComponent` arranges projected content and messages. It is not Angular's `FormField` directive. Apply the accessible name and requirement to the projected control itself.\n\nLocalize exposed hint, error, empty, search and action labels. Check date/number contracts for supported formats instead of storing translated display strings as canonical values.\n"},{"id":"references/haptics","source":"skills/neural-native/references/haptics.md","text":"# Optional native haptic feedback\n\nAvailable from `@neural-ui/native@0.1.0-beta.5`. Feedback is off unless the application opts in. Ordinary component imports do not load the optional adapter.\n\nFor a native app, install the compatible module and rebuild the application:\n\n```sh\nnpx expo install expo-haptics\n```\n\nAdd the provider to the existing Angular Native `mount()` options, preserving the template's other providers and native renderer setup:\n\n```ts\nimport { provideNeuHaptics } from '@neural-ui/native/haptics';\n\n// In the existing mount options:\nproviders: [provideNeuHaptics({\n enabled: true,\n pressStyle: 'light',\n minimumIntervalMs: 80,\n})]\n```\n\nInject `NeuHaptics` from the optional entry or from `@neural-ui/native/foundation`. Its public members are `enabled`, `available` and `play()`. `enabled` is a writable signal and supports runtime opt-out without recreating controls. `available` detects the linked native module, not the presence or state of a vibration motor. `play()` returns whether a request was dispatched; it does not confirm physical vibration.\n\nButton and internal pressable actions use the configured press style. Checkbox, Switch, Radio and Slider request a selection tick for user value changes. Disabled/readonly controls, programmatic model changes, an already-selected radio and a slider already at its bound do not request an extra selection tick. The global interval coalesces rapid calls.\n\nButton, IconButton, Checkbox, Switch, Radio and Slider expose `haptic`. Use `[haptic]=\"false\"` to silence a control, `press` to inherit the configured press style, or `selection`, `light`, `medium`, `heavy`, `soft`, `rigid`, `success`, `warning` or `error`. Do not invent this input for other component APIs merely because their internal actions can use the shared service.\n\nExplicit operation feedback belongs to the application. Call `play('success')` only after a real operation succeeds. Silence a button's ordinary press feedback when its handler explicitly requests a notification pulse, avoiding two requests for one tap. Haptics complement visible feedback and accessible state.\n\nThe [preference example](../examples/haptics.ts) runs safely without the adapter; it reports an unavailable request instead of pretending the web preview vibrated. Native applications opt in through the provider above. The browser test checks fallback behavior, not physical output. Emulators/simulators can verify calls into a real native module; physical sensation needs hardware.\n\nPublic contracts: [haptics](api/haptics.md), [foundation](api/foundation.md).\nPublished guide: https://native.neuralui.org/en/haptics\n"},{"id":"references/installation","source":"skills/neural-native/references/installation.md","text":"# Installation and renderer boundary\n\nReviewed: Neural Native `0.1.0-beta.5`, Angular Native `0.19.2`, Angular `22.2.2`, TypeScript `6.0.3`. Use the app's generated tooling and lockfile.\n\nFor a new app, follow the official template:\n\n```sh\nnpx create-expo-app@latest my-neural-app --template @ng-native/template@0.19.2\ncd my-neural-app\nnpm install --save-exact @neural-ui/native@0.1.0-beta.5\n```\n\nIn an existing compatible app only the last command is needed. Keep `@ng-native/components`, `device`, `fabric`, `icons` and the app's other framework packages aligned to the same compatible release. The package requires `react-native-svg` 15.15.4. Its published README's tested application baseline is Expo 57.0.27 / React Native 0.86.3; additional native modules must exist in the Expo/runtime or development build.\n\nThere is no Neural global CSS stylesheet or mandatory Web provider to install. Compose `neu-theme` and the controls in the generated `App`; preserve its exported name and bootstrapping. Run the template's `npm start` workflow and open its compatible native host.\n\n`@ng-native/web` 0.19.2 is a browser host for previews using `mount` and its Vite plugin. Use it for rapid interaction feedback, while retaining actual device verification for safe areas, native presentations, file selection and accessibility. Do not import `@angular/platform-browser` bootstrap as a substitute for the native app entry point.\n\nUse the skill's [forms example](../examples/forms.ts) inside the app's screen/safe-area shell. Wrap the app with `SafeAreaProvider` and use `SafeAreaView` for content that must respect insets.\n\nOfficial setup: https://ng-native.com/guide/getting-started\nLibrary installation: https://native.neuralui.org/en/installation\n"},{"id":"references/layout-accessibility","source":"skills/neural-native/references/layout-accessibility.md","text":"# Layout, accessibility and localization\n\nUse native primitives and the app's safe-area shell. `SafeAreaProvider` supplies insets; `SafeAreaView` applies them. Respect all needed edges in landscape, not just the top inset in portrait. Let collection content scroll inside a bounded layout, and leave deliberate padding/gaps between labels, fields, cards and buttons.\n\n`ScrollView`'s `contentContainerStyle` controls content padding/gap. When a focused field must not consume the first tap on another control, choose `keyboardShouldPersistTaps=\"handled\"` for that flow and verify the actual renderer behavior. Avoid focusing a search input on opening every selection popup if that unnecessarily summons the mobile keyboard.\n\nGive Neural buttons visible labels and icon actions useful accessible names through their declared inputs. Use native `text` for readable content. Keep selection visible without relying on color alone, and preserve reduced-motion behavior when styling transitions.\n\nTranslate the component's exposed action/search/empty/error/close labels and date locale. Keep option IDs and stored values independent of language. Preserve prerelease names such as Beta/Alpha as product/version terms rather than translating a package version.\n\nExercise each changed flow at a narrow width, both orientations, enlarged system text and light/dark themes. Check keyboard dismissal, scrolling, focus and return from overlays. Browser preview checks help catch clipping and action failures; they do not verify native VoiceOver/TalkBack announcements, touch exploration or native module availability. Report these as separate checks, with observed evidence rather than an accessibility certification.\n"},{"id":"references/navigation","source":"skills/neural-native/references/navigation.md","text":"# Navigation and composed screens\n\n`NeuNavComponent` is a selection/navigation control, not an application router. Supply `NeuNavItem[]`, maintain the `value` model and handle `navigate` when the app needs a navigation side effect. Do not perform the same navigation in both valueChange and navigate.\n\nThe [navigation example](../examples/navigation.ts) changes real screen content through owned state. It is an in-memory example, not a claim that a native router or persisted history has been configured.\n\nFor an actual application stack, follow Angular Native's routing documentation and the generated app configuration. Neural emits actions and state; the app owns routes, back behavior and persistence. Do not transplant Web v2 routing providers, a browser URL strategy or a Web dock into a native app without checking the framework contract.\n\nKeep a bottom navigation bar full-width in its intended layout, with readable labels and a clear selected state. Apply bottom safe-area insets at the app shell; do not add identical insets to both the shell and every nested screen. Provide distinct useful content for each destination.\n\nFramework source: https://ng-native.com\n"},{"id":"references/theming","source":"skills/neural-native/references/theming.md","text":"# Native themes and tokens\n\nWrap a screen or app in `NeuThemeComponent` from `@neural-ui/native/theme`. `scheme` is `system`, `light` or `dark`. `tokens` is `Partial<NeuTokens>` from `@neural-ui/native/foundation`; `resolvedTokens` exposes the resolved read-only theme.\n\nThe generated [token contract](api/tokens.md) lists all 28 public `NeuTokens` properties. Numeric radius, spacing, fontSize and duration are native values, not CSS strings. Optional semantic text inks resolve from theme surfaces when omitted. Light and dark defaults are recorded in the generated API snapshot.\n\n```ts\nimport type { NeuTokens } from '@neural-ui/native/foundation';\nconst brand = { accent: '#3b5bdb', onAccent: '#ffffff', radius: 16 } satisfies Partial<NeuTokens>;\n```\n\nBind `[tokens]=\"brand\"` to `neu-theme`. Fixed overrides apply in both modes, so use mode-specific values where a brand color needs different readable ink in dark mode. The [theme example](../examples/theme.ts) demonstrates a mode switch with a readable palette in each mode.\n\nUse supported native styles and resolved `--neu-*` theme variables, such as `color: var(--neu-text)` or `background-color: var(--neu-surface)`. Do not copy the Web v2 catalogue's hundreds of CSS tokens or assume each is a Native override. Component-specific styles still belong to the actual renderer; browser DOM CSS and arbitrary layout features may not map to iOS/Android.\n\nPreserve safe-area and text-scaling behavior when changing density. Customizing a theme does not justify changing a control's data or action contract.\n"},{"id":"references/versioning","source":"skills/neural-native/references/versioning.md","text":"# Versions, maintenance and optional MCP\n\nThis skill release is 0.1.1 and its verified package baseline is `@neural-ui/native@0.1.0-beta.5`, Angular Native 0.19.2 and Angular 22.2.2. Beta APIs can change before 1.0. The installed package and lockfile are the contract for an existing application.\n\nUse `neural-ui-mcp@0.2.3` for this Native baseline and Web Core 2.0.4. MCP 0.2.2 retains Native beta.2; use that release for applications that still require the older contract. MCP 0.1.0 only understands Web and cannot answer Native requests.\n\nUse an explicitly selected Native call:\n\n```json\n{\"library\":\"native\",\"version\":\"0.1.0-beta.5\",\"entrypoint\":\"@neural-ui/native/input\",\"symbol\":\"NeuInputComponent\"}\n```\n\nThis is an input for `get_api`. `list_components`, `search_documentation`, `get_example` and `validate_usage` use the same `library`/`version` fields. Native example IDs are forms, collections, navigation, overlays, theme and haptics. Resources use `neural-native://docs/` or `neural-native://examples/`; Web resources retain `neural-ui://`.\n\nThe server is local stdio and read-only. It does not install dependencies, inspect user files, execute supplied code, modify projects or certify a build. The skill also works without MCP using its packaged references.\n\nFor maintainers, update the exact dependency and reviewed source/integrity record, regenerate the declaration-derived API, review removed/changed bindings and token defaults, adapt examples and rerun compilation, browser and MCP consumer tests. Do not silently serve another version under the existing baseline. Keep native device validation separate from Web preview results.\n"}],"examples":[{"id":"examples/collections","source":"skills/neural-native/examples/collections.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuOption } from '@neural-ui/native';\nimport { NeuDataViewComponent } from '@neural-ui/native/data-view';\n\n@Component({\n selector: 'native-collection-example',\n imports: [Text, View, NeuDataViewComponent],\n template: `\n <view class=\"content\">\n <text class=\"heading\">The people behind it.</text>\n <text class=\"muted\">Find a teammate, change the order or refresh this local list.</text>\n <neu-data-view [items]=\"people\" [(query)]=\"query\" [(descending)]=\"descending\"\n searchLabel=\"Search people\" sortLabel=\"Reverse name order\" refreshLabel=\"Refresh local list\"\n emptyLabel=\"No people match your search\" (selected)=\"select($event)\" (refresh)=\"refresh()\" />\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .heading { font-size: 26px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeCollectionsExample {\n readonly query = signal('');\n readonly descending = signal(false);\n readonly feedback = signal('Choose a person to see their name.');\n readonly people: readonly NeuOption[] = [\n { id: 'ada', label: 'Ada Lovelace', description: 'Product designer' },\n { id: 'grace', label: 'Grace Hopper', description: 'Mobile engineer' },\n { id: 'linus', label: 'Linus Torvalds', description: 'Platform engineer' },\n ];\n select(id: string): void {\n this.feedback.set(`Selected: ${this.people.find(person => person.id === id)?.label ?? id}`);\n }\n refresh(): void {\n this.query.set('');\n this.feedback.set('Local list refreshed. No server request was made.');\n }\n}\n"},{"id":"examples/forms","source":"skills/neural-native/examples/forms.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuOption } from '@neural-ui/native';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\nimport { NeuCheckboxComponent } from '@neural-ui/native/checkbox';\nimport { NeuInputComponent } from '@neural-ui/native/input';\nimport { NeuSelectComponent } from '@neural-ui/native/select';\n\n@Component({\n selector: 'native-profile-example',\n imports: [Text, View, NeuButtonComponent, NeuCheckboxComponent, NeuInputComponent, NeuSelectComponent],\n template: `\n <view class=\"content\">\n <text class=\"eyebrow\">YOUR WORKSPACE</text>\n <text class=\"heading\">Make it yours.</text>\n <text class=\"muted\">A name and a team to help everyone find you.</text>\n <neu-input label=\"Full name\" [(value)]=\"name\" [required]=\"true\" hint=\"Visible to your teammates\" />\n <neu-select label=\"Team\" [options]=\"teams\" [(value)]=\"team\" closeLabel=\"Close teams\" />\n <neu-checkbox label=\"Send me product updates\" [(checked)]=\"updates\" />\n <neu-button label=\"Save profile\" [fullWidth]=\"true\" (pressed)=\"save()\" />\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .eyebrow { font-size: 12px; color: var(--neu-muted); }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeFormsExample {\n readonly name = signal('Ada Lovelace');\n readonly team = signal('design');\n readonly updates = signal(false);\n readonly feedback = signal('Changes stay in this example.');\n readonly teams: readonly NeuOption[] = [\n { id: 'design', label: 'Design', description: 'Product interfaces' },\n { id: 'engineering', label: 'Engineering', description: 'Application development' },\n ];\n save(): void {\n this.feedback.set(this.name().trim() ? `Saved locally: ${this.name().trim()}` : 'Enter your name.');\n }\n}\n"},{"id":"examples/haptics","source":"skills/neural-native/examples/haptics.ts","text":"import { Component, inject, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuHaptics } from '@neural-ui/native/foundation';\nimport { NeuSwitchComponent } from '@neural-ui/native/switch';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\n\n@Component({\n selector: 'native-haptics-example',\n imports: [Text, View, NeuSwitchComponent, NeuButtonComponent],\n template: `\n <view class=\"content\">\n <neu-switch label=\"Touch feedback\"\n [checked]=\"haptics.enabled()\"\n (checkedChange)=\"haptics.enabled.set($event)\"\n [haptic]=\"false\" />\n <neu-button label=\"Test feedback\" [haptic]=\"false\"\n [disabled]=\"!haptics.enabled()\" (pressed)=\"testFeedback()\" />\n <text>{{ feedback() }}</text>\n </view>\n `,\n styles: `.content { padding: 24px; gap: 16px; }`,\n})\nexport class NativeHapticsExample {\n readonly haptics = inject(NeuHaptics);\n readonly feedback = signal('Feedback is optional.');\n\n testFeedback(): void {\n this.feedback.set(this.haptics.play('success')\n ? 'Native feedback requested.'\n : 'Native feedback is unavailable or disabled.');\n }\n}\n"},{"id":"examples/navigation","source":"skills/neural-native/examples/navigation.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuCardComponent } from '@neural-ui/native/card';\nimport { NeuNavComponent, type NeuNavItem } from '@neural-ui/native/nav';\n\n@Component({\n selector: 'native-navigation-example',\n imports: [Text, View, NeuCardComponent, NeuNavComponent],\n template: `\n <view class=\"screen\">\n <view class=\"body\">\n @switch (destination()) {\n @case ('projects') {\n <text class=\"heading\">Room for the next idea.</text>\n <neu-card title=\"Mobile launch\" description=\"Design review ready\">\n <text class=\"muted\">Three screens to review with your team.</text>\n </neu-card>\n }\n @case ('account') {\n <text class=\"heading\">Your workspace profile.</text>\n <neu-card title=\"Ada Lovelace\" description=\"Product designer\">\n <text class=\"muted\">Design team · Notifications enabled</text>\n </neu-card>\n }\n @default {\n <text class=\"heading\">A good day to make something.</text>\n <neu-card title=\"Today\" description=\"Your team is in sync\">\n <text class=\"muted\">Two reviews complete. One new idea to explore.</text>\n </neu-card>\n }\n }\n </view>\n <neu-nav label=\"Workspace destinations\" [items]=\"destinations\" [(value)]=\"destination\" />\n </view>\n `,\n styles: `\n :host, .screen { flex: 1; }\n .body { flex: 1; padding: 20px; gap: 20px; }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 15px; color: var(--neu-muted); }\n `,\n})\nexport class NativeNavigationExample {\n readonly destination = signal('home');\n readonly destinations: readonly NeuNavItem[] = [\n { id: 'home', label: 'Home' },\n { id: 'projects', label: 'Projects' },\n { id: 'account', label: 'Account' },\n ];\n}\n"},{"id":"examples/overlays","source":"skills/neural-native/examples/overlays.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\nimport { NeuModalComponent, NeuModalFooterDirective } from '@neural-ui/native/modal';\n\n@Component({\n selector: 'native-overlay-example',\n imports: [Text, View, NeuButtonComponent, NeuModalComponent, NeuModalFooterDirective],\n template: `\n <view class=\"content\">\n <text class=\"heading\">One place for your team.</text>\n <text class=\"muted\">A short explanation, with an explicit way back.</text>\n <neu-button label=\"About this workspace\" (pressed)=\"open.set(true)\" />\n <text class=\"muted\">{{ feedback() }}</text>\n <neu-modal title=\"Product workspace\" [(open)]=\"open\" closeLabel=\"Close workspace details\"\n (closed)=\"feedback.set('Workspace details closed.')\">\n <text class=\"message\">A shared place for your team's plans and documents.</text>\n <ng-template neuModalFooter>\n <neu-button label=\"Got it\" size=\"sm\" (pressed)=\"open.set(false)\" />\n </ng-template>\n </neu-modal>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .heading { font-size: 26px; font-weight: 700; color: var(--neu-text); }\n .message { font-size: 16px; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeOverlaysExample {\n readonly open = signal(false);\n readonly feedback = signal('Details are closed.');\n}\n"},{"id":"examples/theme","source":"skills/neural-native/examples/theme.ts","text":"import { Component, computed, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuTokens } from '@neural-ui/native/foundation';\nimport { NeuThemeComponent } from '@neural-ui/native/theme';\nimport { NeuSwitchComponent } from '@neural-ui/native/switch';\nimport { NeuCardComponent } from '@neural-ui/native/card';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\n\n@Component({\n selector: 'native-theme-example',\n imports: [Text, View, NeuThemeComponent, NeuSwitchComponent, NeuCardComponent, NeuButtonComponent],\n template: `\n <neu-theme [scheme]=\"dark() ? 'dark' : 'light'\" [tokens]=\"brand()\">\n <view class=\"content\">\n <text class=\"heading\">A little more you.</text>\n <neu-switch label=\"Dark appearance\" [(checked)]=\"dark\" />\n <neu-card title=\"Neural, with your palette\" description=\"Shared tokens, real controls\">\n <view class=\"card-content\">\n <text class=\"muted\">Readable surfaces and controls in both appearances.</text>\n <neu-button label=\"Try the brand color\" (pressed)=\"feedback.set('Brand action pressed.')\" />\n </view>\n </neu-card>\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n </neu-theme>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; background-color: var(--neu-canvas); }\n .card-content { gap: 16px; }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeThemeExample {\n readonly dark = signal(false);\n readonly feedback = signal('Switch appearance to compare the palette.');\n readonly brand = computed(() => ({\n accent: this.dark() ? '#b9b1ff' : '#5941c6',\n onAccent: this.dark() ? '#23164b' : '#ffffff',\n radius: 16,\n } satisfies Partial<NeuTokens>));\n}\n"}]}
|
|
1
|
+
{"schemaVersion":1,"api":{"schemaVersion":1,"package":"@neural-ui/native","version":"0.1.0-beta.6","entrypoints":{"@neural-ui/native":{"types":"./dist/index.d.ts","sha256":"5b19365dec13edadd0d640fd1b9bdb49d3623437d2bda6c77e173c20b22b63c6","symbols":[{"name":"formatMask","kind":"FunctionDeclaration","declaration":"export declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};"},{"name":"NEU_CHECK_ICON","kind":"VariableDeclaration","declaration":"NEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\""},{"name":"NEU_DARK_TOKENS","kind":"VariableDeclaration","declaration":"NEU_DARK_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_FILE_PICKER","kind":"VariableDeclaration","declaration":"NEU_FILE_PICKER: InjectionToken<NeuFilePicker>"},{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_LIGHT_TOKENS","kind":"VariableDeclaration","declaration":"NEU_LIGHT_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_PLUS_ICON","kind":"VariableDeclaration","declaration":"NEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\""},{"name":"NEU_TABS","kind":"VariableDeclaration","declaration":"NEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>"},{"name":"NEU_THEME","kind":"VariableDeclaration","declaration":"NEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>"},{"name":"NeuAccordionComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-accordion","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"}],"members":[]},{"name":"NeuAlertComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-alert","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuAlertVariant>"},{"name":"showIcon","alias":"showIcon","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"visible","alias":"visible","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closable","alias":"closable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"visible","alias":"visibleChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAlertVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuAlertVariant = 'soft' | 'outline';"},{"name":"NeuAutocompleteComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-autocomplete","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"minLength","alias":"minLength","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAvatarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uri","alias":"uri","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]},{"name":"NeuAvatarGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar-group","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"moreLabel","alias":"moreLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]},{"name":"NeuBadgeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-badge","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuBottomSheetComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-bottom-sheet","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuBottomSheetHeight","kind":"TypeAliasDeclaration","declaration":"export type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';"},{"name":"NeuButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"accessibilityLabel","alias":"accessibilityLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]},{"name":"NeuButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuCalendarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-calendar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"month","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"firstDay","alias":"firstDay","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"events","alias":"events","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>"},{"name":"showAgenda","alias":"showAgenda","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"editable","alias":"editable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"agendaLabel","alias":"agendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAgendaLabel","alias":"emptyAgendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hasEventsLabel","alias":"hasEventsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addEventLabel","alias":"addEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"editEventLabel","alias":"editEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"deleteEventLabel","alias":"deleteEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"monthChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"eventCreateRequested","alias":"eventCreateRequested","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"eventEditRequested","alias":"eventEditRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"eventDeleteRequested","alias":"eventDeleteRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCalendarEvent","kind":"InterfaceDeclaration","declaration":"export interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}"},{"name":"NeuCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-card","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<\"tonal\" | \"surface\" | \"outlined\">"}],"outputs":[],"members":[]},{"name":"NeuCardFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCardHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCarouselComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-carousel","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"preview","alias":"preview","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuImageViewerLabels>"},{"name":"loop","alias":"loop","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplay","alias":"autoplay","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplayInterval","alias":"autoplayInterval","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"pauseLabel","alias":"pauseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"playLabel","alias":"playLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuCascadeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-cascade-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"backLabel","alias":"backLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"rootLabel","alias":"rootLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCheckboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-checkbox","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuChipComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-chip","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"selected","alias":"selected","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selectable","alias":"selectable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removable","alias":"removable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selectedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"removed","alias":"removed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuColorScheme","kind":"TypeAliasDeclaration","declaration":"export type NeuColorScheme = 'system' | 'light' | 'dark';"},{"name":"NeuConfirmDialogComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-confirm-dialog","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"confirmLabel","alias":"confirmLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"intent","alias":"intent","required":false,"type":"import(\"@angular/core\").InputSignal<\"danger\" | \"default\">"},{"name":"busy","alias":"busy","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeOnConfirm","alias":"closeOnConfirm","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"confirmed","alias":"confirmed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuContextMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-context-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionsLabel","alias":"actionsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-data-view","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> | undefined>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descending","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"sortLabel","alias":"sortLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"refreshLabel","alias":"refreshLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descendingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"refresh","alias":"refresh","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}"},{"name":"NeuDataViewItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuDataViewItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuDateInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-date-input","inputs":[{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDividerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-divider","inputs":[{"name":"orientation","alias":"orientation","required":false,"type":"import(\"@angular/core\").InputSignal<\"horizontal\" | \"vertical\">"}],"outputs":[],"members":[]},{"name":"NeuEmptyStateComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-empty-state","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuFile","kind":"InterfaceDeclaration","declaration":"export interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}"},{"name":"NeuFilePicker","kind":"InterfaceDeclaration","declaration":"export interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}"},{"name":"NeuFilterBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-filter-bar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]},{"name":"NeuFormFieldComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-form-field","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuGalleryCaptionDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryCaption]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-gallery","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"layout","alias":"layout","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryLayout>"},{"name":"columns","alias":"columns","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"aspectRatio","alias":"aspectRatio","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showCaptions","alias":"showCaptions","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuGalleryItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}"},{"name":"NeuGalleryItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryLayout","kind":"TypeAliasDeclaration","declaration":"export type NeuGalleryLayout = 'grid' | 'mosaic';"},{"name":"NeuGalleryViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuIconButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-icon-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]},{"name":"NeuImageItem","kind":"InterfaceDeclaration","declaration":"export interface NeuImageItem {\n readonly id: string;\n readonly uri: string;\n readonly label: string;\n}"},{"name":"NeuImageViewerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-image-viewer","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomLabel","alias":"zoomLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomOutLabel","alias":"zoomOutLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"errorLabel","alias":"errorLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuImageViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"},{"name":"NeuInlineEditorComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-inline-editor","inputs":[{"name":"editing","alias":"editing","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"saveLabel","alias":"saveLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"editing","alias":"editingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"saved","alias":"saved","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input","inputs":[{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"email-address\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputMaskComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-mask","inputs":[{"name":"mask","alias":"mask","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputOtpComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-otp","inputs":[{"name":"length","alias":"length","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuInputTagsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-tags","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-listbox","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"appearance","alias":"appearance","required":false,"type":"import(\"@angular/core\").InputSignal<\"cards\" | \"plain\">"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> | undefined>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}"},{"name":"NeuListboxItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuListboxItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"showTrigger","alias":"showTrigger","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuMeterGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-meter-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuModalComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-modal","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<\"native\" | \"action\" | \"backdrop\">"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(reason?: 'native' | 'action' | 'backdrop'): void;"]},{"name":"NeuModalFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuModalHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuNavComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-nav","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNavItem","kind":"InterfaceDeclaration","declaration":"export interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuNotificationCenterComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-notification-center","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"readIds","alias":"readIds","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"markAllLabel","alias":"markAllLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"unreadLabel","alias":"unreadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"readIds","alias":"readIdsChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNumberInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-number-input","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuOption","kind":"InterfaceDeclaration","declaration":"export interface NeuOption {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly disabled?: boolean;\n}"},{"name":"NeuPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-panel","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"collapsed","alias":"collapsed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"collapsible","alias":"collapsible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"collapsed","alias":"collapsedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuPanelFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPanelHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelHeader]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPasswordComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-password","inputs":[{"name":"revealed","alias":"revealed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hideLabel","alias":"hideLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"revealed","alias":"revealedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuPickListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-pick-list","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"selectedLabel","alias":"selectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"availableLabel","alias":"availableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"upLabel","alias":"upLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"downLabel","alias":"downLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptySelectedLabel","alias":"emptySelectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAvailableLabel","alias":"emptyAvailableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuPopoverComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-popover","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissLabel","alias":"dismissLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuProgressBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-progress-bar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuRadioGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-radio","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuRatingComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-rating","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearable","alias":"clearable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-select","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"values","alias":"values","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"searchable","alias":"searchable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchPlaceholder","alias":"searchPlaceholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"values","alias":"valuesChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectItemContext","kind":"TypeAliasDeclaration","declaration":"export type NeuSelectItemContext = NeuListboxItemContext;"},{"name":"NeuSelectItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSelectSelectedContext","kind":"InterfaceDeclaration","declaration":"export interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}"},{"name":"NeuSelectSelectedDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectSelected]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSidebarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-sidebar","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSize","kind":"TypeAliasDeclaration","declaration":"export type NeuSize = 'sm' | 'md' | 'lg';"},{"name":"NeuSkeletonAnimation","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonAnimation = 'pulse' | 'none';"},{"name":"NeuSkeletonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-skeleton","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"lines","alias":"lines","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonVariant>"},{"name":"width","alias":"width","required":false,"type":"import(\"@angular/core\").InputSignal<string | number | undefined>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"lastLineWidth","alias":"lastLineWidth","required":false,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"animation","alias":"animation","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>"}],"outputs":[],"members":[]},{"name":"NeuSkeletonVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonVariant = 'text' | 'rect' | 'circle';"},{"name":"NeuSliderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-slider","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showButtons","alias":"showButtons","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSpeedDialAction","kind":"InterfaceDeclaration","declaration":"export interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuSpeedDialComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-speed-dial","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuSpinnerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-spinner","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<\"small\" | \"large\">"},{"name":"active","alias":"active","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuStatsCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stats-card","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":true,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"change","alias":"change","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]},{"name":"NeuStepperComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stepper","inputs":[{"name":"steps","alias":"steps","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"activeStep","alias":"activeStep","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"linear","alias":"linear","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"completed","alias":"completed","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"finishLabel","alias":"finishLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"activeStep","alias":"activeStepChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"finished","alias":"finished","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["goTo(index: number): void;"]},{"name":"NeuSwitchComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-switch","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTabPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tab-panel","inputs":[{"name":"id","alias":"id","required":true,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuTabsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tabs","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tabs","alias":"tabs","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignal<boolean>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]},{"name":"NeuTextareaComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-textarea","inputs":[{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuThemeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-theme","inputs":[{"name":"scheme","alias":"scheme","required":false,"type":"import(\"@angular/core\").InputSignal<NeuColorScheme>"},{"name":"tokens","alias":"tokens","required":false,"type":"import(\"@angular/core\").InputSignal<Partial<NeuTokens>>"}],"outputs":[],"members":["readonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;"]},{"name":"NeuTimelineComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-timeline","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"completedLabel","alias":"completedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"pendingLabel","alias":"pendingLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>"}],"outputs":[],"members":[]},{"name":"NeuToastComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toast","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"duration","alias":"duration","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuToggleButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toggle-button-group","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTokens","kind":"InterfaceDeclaration","declaration":"export interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}"},{"name":"NeuTone","kind":"TypeAliasDeclaration","declaration":"export type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';"},{"name":"NeuToolbarAction","kind":"InterfaceDeclaration","declaration":"export interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuToolbarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toolbar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuTreeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuTreeNode","kind":"InterfaceDeclaration","declaration":"export interface NeuTreeNode extends NeuOption {\n readonly children?: readonly NeuTreeNode[];\n}"},{"name":"NeuTreeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuUpload","kind":"TypeAliasDeclaration","declaration":"export type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;"},{"name":"NeuUploaderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-uploader","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"files","alias":"files","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"types","alias":"types","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxFiles","alias":"maxFiles","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"maxBytes","alias":"maxBytes","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"chooseLabel","alias":"chooseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uploadLabel","alias":"uploadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"stateLabels","alias":"stateLabels","required":false,"type":"import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" | \"selected\" | \"uploading\" | \"complete\", string>>>"},{"name":"upload","alias":"upload","required":false,"type":"import(\"@angular/core\").InputSignal<NeuUpload | undefined>"}],"outputs":[{"name":"files","alias":"filesChange","type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>"},{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<NeuFile>"},{"name":"rejected","alias":"rejected","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuUploadItem","kind":"InterfaceDeclaration","declaration":"export interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}"},{"name":"NeuVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';"},{"name":"NeuVirtualListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-virtual-list","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"estimatedItemHeight","alias":"estimatedItemHeight","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"endReached","alias":"endReached","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["scrollToIndex(index: number): void;","scrollToTop(): void;"]},{"name":"NeuVirtualListItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}"},{"name":"NeuVirtualListItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuVirtualListItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/accordion":{"types":"./dist/accordion/index.d.ts","sha256":"6d40566b1f55b7cc26c95e7bfb9f00bae1eea4efdf7dfa15a0374c4466181027","symbols":[{"name":"NeuAccordionComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-accordion","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"}],"members":[]}]},"@neural-ui/native/alert":{"types":"./dist/alert/index.d.ts","sha256":"0d96b9612039eb646f5ef32d5bf691c9fbb61ef4c6d295f33c86b4c7e1dcd40b","symbols":[{"name":"NeuAlertComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-alert","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuAlertVariant>"},{"name":"showIcon","alias":"showIcon","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"visible","alias":"visible","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closable","alias":"closable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"visible","alias":"visibleChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuAlertVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuAlertVariant = 'soft' | 'outline';"}]},"@neural-ui/native/autocomplete":{"types":"./dist/autocomplete/index.d.ts","sha256":"68c26f2a6e9b79f2f060698da02a51b8c3ec9c75187bf025e9d54eaaae6b7813","symbols":[{"name":"NeuAutocompleteComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-autocomplete","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"minLength","alias":"minLength","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/avatar":{"types":"./dist/avatar/index.d.ts","sha256":"95dfeda449ed2fb1210356c6bb8da140e5a5a94540485f87a4b4d8e1cb2e932e","symbols":[{"name":"NeuAvatarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uri","alias":"uri","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]}]},"@neural-ui/native/avatar-group":{"types":"./dist/avatar-group/index.d.ts","sha256":"c41b5cc6fa6928d374e6633851cabc379950e9e643cc9dc48488d911f109754a","symbols":[{"name":"NeuAvatarGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-avatar-group","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"moreLabel","alias":"moreLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"}],"outputs":[],"members":[]}]},"@neural-ui/native/badge":{"types":"./dist/badge/index.d.ts","sha256":"a0ec29f932461a78f66408d256f876f612a378fc2fe175aa227e4d603d3ad3b5","symbols":[{"name":"NeuBadgeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-badge","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/bottom-sheet":{"types":"./dist/bottom-sheet/index.d.ts","sha256":"9769afb627e2817bf6ce8fd60dacc78d819f10c6f4680a476bb14d356627a592","symbols":[{"name":"NeuBottomSheetComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-bottom-sheet","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuBottomSheetHeight","kind":"TypeAliasDeclaration","declaration":"export type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';"}]},"@neural-ui/native/button":{"types":"./dist/button/index.d.ts","sha256":"86c073df766369e08e0cf8f3ced994229259d2fd212f4e0d0442f4abcc1440fe","symbols":[{"name":"NeuButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"accessibilityLabel","alias":"accessibilityLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]}]},"@neural-ui/native/button-group":{"types":"./dist/button-group/index.d.ts","sha256":"c96273281aa7fd7fa526c9591d8cf54ac4bf12e4f81174acaf2e5cee250a2c57","symbols":[{"name":"NeuButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-button-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/calendar":{"types":"./dist/calendar/index.d.ts","sha256":"393a45c2b6f69615ee5ec034f1b3989f628be005b93934ac9ac428d89d8dcccf","symbols":[{"name":"NeuCalendarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-calendar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"month","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"firstDay","alias":"firstDay","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"events","alias":"events","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>"},{"name":"showAgenda","alias":"showAgenda","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"editable","alias":"editable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"agendaLabel","alias":"agendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAgendaLabel","alias":"emptyAgendaLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hasEventsLabel","alias":"hasEventsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addEventLabel","alias":"addEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"editEventLabel","alias":"editEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"deleteEventLabel","alias":"deleteEventLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"month","alias":"monthChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"eventCreateRequested","alias":"eventCreateRequested","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"eventEditRequested","alias":"eventEditRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"eventDeleteRequested","alias":"eventDeleteRequested","type":"import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuCalendarEvent","kind":"InterfaceDeclaration","declaration":"export interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}"}]},"@neural-ui/native/card":{"types":"./dist/card/index.d.ts","sha256":"0c145d4c22fe342ebe92399aea8a440e6e7ee0ce16ee54d548ec5bfce475a1ee","symbols":[{"name":"NeuCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-card","inputs":[{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<\"tonal\" | \"surface\" | \"outlined\">"}],"outputs":[],"members":[]},{"name":"NeuCardFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuCardHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuCardHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/carousel":{"types":"./dist/carousel/index.d.ts","sha256":"4931ab1dc6b3acdf222fe094d65b14b73d9f81226fac51692124e32b8bba1427","symbols":[{"name":"NeuCarouselComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-carousel","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"preview","alias":"preview","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuImageViewerLabels>"},{"name":"loop","alias":"loop","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplay","alias":"autoplay","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"autoplayInterval","alias":"autoplayInterval","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"pauseLabel","alias":"pauseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"playLabel","alias":"playLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]}]},"@neural-ui/native/cascade-select":{"types":"./dist/cascade-select/index.d.ts","sha256":"56dd0a5a45588d436e415b0264d6dd0f8b26bbd09f7bd03d3b97537676e38459","symbols":[{"name":"NeuCascadeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-cascade-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"backLabel","alias":"backLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"rootLabel","alias":"rootLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/checkbox":{"types":"./dist/checkbox/index.d.ts","sha256":"453d7d5858643cc8718ac8e7260cb691a1e6b97a24ef6011945a298afdf88a69","symbols":[{"name":"NeuCheckboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-checkbox","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/chip":{"types":"./dist/chip/index.d.ts","sha256":"ca37662c4250ab32a42769254dfc220dac65f075b0418294f915ab761d5f4008","symbols":[{"name":"NeuChipComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-chip","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"selected","alias":"selected","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selectable","alias":"selectable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removable","alias":"removable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selectedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"removed","alias":"removed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/confirm-dialog":{"types":"./dist/confirm-dialog/index.d.ts","sha256":"4e1029b3d350bf46371f00d3a65fa6144664b71dc55a6daa38894d75265c4f86","symbols":[{"name":"NeuConfirmDialogComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-confirm-dialog","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"confirmLabel","alias":"confirmLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"intent","alias":"intent","required":false,"type":"import(\"@angular/core\").InputSignal<\"danger\" | \"default\">"},{"name":"busy","alias":"busy","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeOnConfirm","alias":"closeOnConfirm","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"confirmed","alias":"confirmed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/context-menu":{"types":"./dist/context-menu/index.d.ts","sha256":"77e1555f2b4cee2d3164f5d403383b9bb5aadfda25a714a8f67bf31ca68729e0","symbols":[{"name":"NeuContextMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-context-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionsLabel","alias":"actionsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/data-view":{"types":"./dist/data-view/index.d.ts","sha256":"89bbff4f1680816b9b69085f3744394e3c1efe26b3ef22e637a9a0c5e47889d4","symbols":[{"name":"NeuDataViewComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-data-view","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> | undefined>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descending","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"sortLabel","alias":"sortLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"refreshLabel","alias":"refreshLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"descending","alias":"descendingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"refresh","alias":"refresh","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuDataViewItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}"},{"name":"NeuDataViewItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuDataViewItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/date-input":{"types":"./dist/date-input/index.d.ts","sha256":"f63a0b5969c1d7b9289d6be50cd3eee025fe4e7127a3de44ff39a5c4bbd9bcea","symbols":[{"name":"NeuDateInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-date-input","inputs":[{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"locale","alias":"locale","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearLabel","alias":"previousYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearLabel","alias":"nextYearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousYearsLabel","alias":"previousYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextYearsLabel","alias":"nextYearsLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/divider":{"types":"./dist/divider/index.d.ts","sha256":"b7f31d5aa559bf544f5ac879dd8a8272ac073f6231631dadb965410119340017","symbols":[{"name":"NeuDividerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-divider","inputs":[{"name":"orientation","alias":"orientation","required":false,"type":"import(\"@angular/core\").InputSignal<\"horizontal\" | \"vertical\">"}],"outputs":[],"members":[]}]},"@neural-ui/native/empty-state":{"types":"./dist/empty-state/index.d.ts","sha256":"966ff23d04587f76cb85a013f40bb8c94249941ef576234bfe039129bd1ea00e","symbols":[{"name":"NeuEmptyStateComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-empty-state","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/filter-bar":{"types":"./dist/filter-bar/index.d.ts","sha256":"d48a15ef7336d22ea13446f4334f2689b627731575a576a8ba4f9590f2c8706f","symbols":[{"name":"NeuFilterBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-filter-bar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"query","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"query","alias":"queryChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]}]},"@neural-ui/native/form-field":{"types":"./dist/form-field/index.d.ts","sha256":"c4d880fdf381d4c203fbcb01afab0fbea23375d3d76afa29a5bd955095b93c5a","symbols":[{"name":"NeuFormFieldComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-form-field","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]}]},"@neural-ui/native/foundation":{"types":"./dist/foundation/index.d.ts","sha256":"75500ce10ca61cd1e1ff88f59f325a981fc7d156deeff2ca40346699d60c7609","symbols":[{"name":"NEU_CHECK_ICON","kind":"VariableDeclaration","declaration":"NEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\""},{"name":"NEU_DARK_TOKENS","kind":"VariableDeclaration","declaration":"NEU_DARK_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_LIGHT_TOKENS","kind":"VariableDeclaration","declaration":"NEU_LIGHT_TOKENS: Readonly<NeuTokens>"},{"name":"NEU_PLUS_ICON","kind":"VariableDeclaration","declaration":"NEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\""},{"name":"NEU_THEME","kind":"VariableDeclaration","declaration":"NEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>"},{"name":"NeuColorScheme","kind":"TypeAliasDeclaration","declaration":"export type NeuColorScheme = 'system' | 'light' | 'dark';"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuSize","kind":"TypeAliasDeclaration","declaration":"export type NeuSize = 'sm' | 'md' | 'lg';"},{"name":"NeuTokens","kind":"InterfaceDeclaration","declaration":"export interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}"},{"name":"NeuTone","kind":"TypeAliasDeclaration","declaration":"export type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';"},{"name":"NeuVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';"}]},"@neural-ui/native/gallery":{"types":"./dist/gallery/index.d.ts","sha256":"17510c5d94a2a6d1e8a9ad3216832318e51cc6aec035c566e9621ec2c1270c03","symbols":[{"name":"NeuGalleryCaptionDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryCaption]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-gallery","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"viewerLabels","alias":"viewerLabels","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"layout","alias":"layout","required":false,"type":"import(\"@angular/core\").InputSignal<NeuGalleryLayout>"},{"name":"columns","alias":"columns","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"aspectRatio","alias":"aspectRatio","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showCaptions","alias":"showCaptions","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuGalleryItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}"},{"name":"NeuGalleryItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuGalleryItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuGalleryLayout","kind":"TypeAliasDeclaration","declaration":"export type NeuGalleryLayout = 'grid' | 'mosaic';"},{"name":"NeuGalleryViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"}]},"@neural-ui/native/haptics":{"types":"./dist/haptics/index.d.ts","sha256":"401fe22b083895b314c1828337b7d254087d5624fd62fefe39a31be0fd09201f","symbols":[{"name":"NEU_HAPTICS_DRIVER","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>"},{"name":"NEU_HAPTICS_OPTIONS","kind":"VariableDeclaration","declaration":"NEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>"},{"name":"NEU_NATIVE_HAPTICS","kind":"VariableDeclaration","declaration":"NEU_NATIVE_HAPTICS: InjectionToken<NeuNativeHaptics | null>"},{"name":"NeuHapticFeedback","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';"},{"name":"NeuHapticImpact","kind":"TypeAliasDeclaration","declaration":"export type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';"},{"name":"NeuHaptics","kind":"ClassDeclaration","members":["readonly enabled: import(\"@angular/core\").WritableSignal<boolean>;","get available(): boolean;","play(feedback?: NeuHapticFeedback | false): boolean;"]},{"name":"NeuHapticsDriver","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}"},{"name":"NeuHapticsOptions","kind":"InterfaceDeclaration","declaration":"export interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}"},{"name":"NeuNativeHaptics","kind":"InterfaceDeclaration","declaration":"export interface NeuNativeHaptics {\n impactAsync(style: NeuHapticImpact): Promise<void>;\n notificationAsync(type: \"success\" | \"warning\" | \"error\"): Promise<void>;\n selectionAsync(): Promise<void>;\n}"},{"name":"provideNeuHaptics","kind":"FunctionDeclaration","declaration":"export declare function provideNeuHaptics(options?: NeuHapticsOptions): EnvironmentProviders;"}]},"@neural-ui/native/icon-button":{"types":"./dist/icon-button/index.d.ts","sha256":"00b6064424b83f52fb3e0713c3a1609c0be6ab205e60254467413abad57ec0af","symbols":[{"name":"NeuIconButtonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-icon-button","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuVariant>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"loading","alias":"loading","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"pressed","alias":"pressed","type":"import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>"}],"members":[]}]},"@neural-ui/native/image-viewer":{"types":"./dist/image-viewer/index.d.ts","sha256":"1208faefec9c30fe41bfc9d9063d53fdb28399513a4e9e7abb6a7065a3951540","symbols":[{"name":"NeuImageViewerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-image-viewer","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>"},{"name":"index","alias":"index","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomLabel","alias":"zoomLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"zoomOutLabel","alias":"zoomOutLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"errorLabel","alias":"errorLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"index","alias":"indexChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(): void;"]},{"name":"NeuImageViewerLabels","kind":"InterfaceDeclaration","declaration":"export interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}"}]},"@neural-ui/native/inline-editor":{"types":"./dist/inline-editor/index.d.ts","sha256":"69b936053d472e06c807cd9ff5e60c398c146174212a409db3e7d6eb124832c3","symbols":[{"name":"NeuInlineEditorComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-inline-editor","inputs":[{"name":"editing","alias":"editing","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"saveLabel","alias":"saveLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"cancelLabel","alias":"cancelLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"editing","alias":"editingChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"saved","alias":"saved","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"cancelled","alias":"cancelled","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input":{"types":"./dist/input/index.d.ts","sha256":"bbc6d97552ff3aacf52d5093a43572f742147268aa241a2fc20f318b25c61924","symbols":[{"name":"NeuInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input","inputs":[{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"email-address\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-mask":{"types":"./dist/input-mask/index.d.ts","sha256":"c93bd7115d7ee102f64ca5f4caf38262524370f46b12acdab6e0be349c013f4e","symbols":[{"name":"formatMask","kind":"FunctionDeclaration","declaration":"export declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};"},{"name":"NeuInputMaskComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-mask","inputs":[{"name":"mask","alias":"mask","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"keyboardType","alias":"keyboardType","required":false,"type":"import(\"@angular/core\").InputSignal<\"default\" | \"numeric\" | \"phone-pad\">"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-otp":{"types":"./dist/input-otp/index.d.ts","sha256":"3a4b8b2265dbeea20d7aeefdea29b25629e074aad2cc4ef71ab01e9f4909b8cd","symbols":[{"name":"NeuInputOtpComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-otp","inputs":[{"name":"length","alias":"length","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/input-tags":{"types":"./dist/input-tags/index.d.ts","sha256":"dafce233b09859287454c54b3dd6707179e75d68321df6df0dae52e3a2750fa3","symbols":[{"name":"NeuInputTagsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-input-tags","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/listbox":{"types":"./dist/listbox/index.d.ts","sha256":"3a1162b2c663b9abfa90c173cf64ba6ca0afafcbf67f5c605bd624b543a92a49","symbols":[{"name":"NeuListboxComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-listbox","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"appearance","alias":"appearance","required":false,"type":"import(\"@angular/core\").InputSignal<\"cards\" | \"plain\">"},{"name":"itemTemplate","alias":"itemTemplate","required":false,"type":"import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> | undefined>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuListboxItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}"},{"name":"NeuListboxItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuListboxItem]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/menu":{"types":"./dist/menu/index.d.ts","sha256":"558b078748fb6601ce8937c2d55d61c0587b95865f94749a56a5dce755810039","symbols":[{"name":"NeuMenuComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-menu","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"showTrigger","alias":"showTrigger","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/meter-group":{"types":"./dist/meter-group/index.d.ts","sha256":"0bed2508ba0f330e6386242dcd2e26e922d294a6839ce17ca6acfeb976059818","symbols":[{"name":"NeuMeterGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-meter-group","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/modal":{"types":"./dist/modal/index.d.ts","sha256":"82b2cda7dca107a8c0bd3054b4471d2c91a5bd67f5e3cbd053d4a5330b2bc3c5","symbols":[{"name":"NeuModalComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-modal","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissible","alias":"dismissible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showCloseButton","alias":"showCloseButton","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"closed","alias":"closed","type":"import(\"@angular/core\").OutputEmitterRef<\"native\" | \"action\" | \"backdrop\">"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["close(reason?: 'native' | 'action' | 'backdrop'): void;"]},{"name":"NeuModalFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuModalHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuModalHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/nav":{"types":"./dist/nav/index.d.ts","sha256":"7212e849aa6f6bfaead99ae6582c798af1d356057b8ba40270dc2998d5ffb897","symbols":[{"name":"NeuNavComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-nav","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuNavItem","kind":"InterfaceDeclaration","declaration":"export interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}"}]},"@neural-ui/native/notification-center":{"types":"./dist/notification-center/index.d.ts","sha256":"c38ca548051f12c6a38dd4b92b87c36a747bd2bf5ffa8b53fdb74ac2abe9904f","symbols":[{"name":"NeuNotificationCenterComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-notification-center","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"readIds","alias":"readIds","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"markAllLabel","alias":"markAllLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"unreadLabel","alias":"unreadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"readIds","alias":"readIdsChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/number-input":{"types":"./dist/number-input/index.d.ts","sha256":"53de296ce1ae25475316c124a3e20916db6cb0ae1b1df5c6c39895b5f6550c79","symbols":[{"name":"NeuNumberInputComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-number-input","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/panel":{"types":"./dist/panel/index.d.ts","sha256":"14153a8e4973de84ddb2417af6834dd6dcbea851379fc840c5f84e91f1c02fcf","symbols":[{"name":"NeuPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-panel","inputs":[{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"collapsed","alias":"collapsed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"collapsible","alias":"collapsible","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"collapsed","alias":"collapsedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]},{"name":"NeuPanelFooterDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelFooter]","inputs":[],"outputs":[],"members":[]},{"name":"NeuPanelHeaderDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"[neuPanelHeader]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/password":{"types":"./dist/password/index.d.ts","sha256":"157e2768d0fee7e3dca4a4ce17d15952eccbf42b3b541dc182b97e5bad45b3ae","symbols":[{"name":"NeuPasswordComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-password","inputs":[{"name":"revealed","alias":"revealed","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hideLabel","alias":"hideLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"revealed","alias":"revealedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/pick-list":{"types":"./dist/pick-list/index.d.ts","sha256":"0752d5559e6403f846b8634926ef23be9d672df4ca77fbe2aa4b6955136aa8e6","symbols":[{"name":"NeuPickListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-pick-list","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"selectedLabel","alias":"selectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"availableLabel","alias":"availableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"upLabel","alias":"upLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"downLabel","alias":"downLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"addLabel","alias":"addLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptySelectedLabel","alias":"emptySelectedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyAvailableLabel","alias":"emptyAvailableLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/popover":{"types":"./dist/popover/index.d.ts","sha256":"aba539bb90e74ff18392ac2852d845121804b03eac6f2bd8a7668ee723e107d2","symbols":[{"name":"NeuPopoverComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-popover","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"title","alias":"title","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"dismissLabel","alias":"dismissLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"}],"members":[]}]},"@neural-ui/native/progress-bar":{"types":"./dist/progress-bar/index.d.ts","sha256":"fc460379bee23b746ed8b2affdd94ded7ded20b1d080e483f123172c530df23f","symbols":[{"name":"NeuProgressBarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-progress-bar","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/radio":{"types":"./dist/radio/index.d.ts","sha256":"023111b324e07f1106b8c48ca62bfc00a5b14e07225ef3584b6edd953fc9ab37","symbols":[{"name":"NeuRadioGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-radio","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/rating":{"types":"./dist/rating/index.d.ts","sha256":"f95db2c1e5b2957533778f236591c7e8aa2caf29fbb90d93b308ea2bca9b1167","symbols":[{"name":"NeuRatingComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-rating","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearable","alias":"clearable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"clearLabel","alias":"clearLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/select":{"types":"./dist/select/index.d.ts","sha256":"8bebc9cd1c16d4b452aa3e83a6e1477b18f35328f48cfe0a3d8dd9db186f1cf9","symbols":[{"name":"NeuSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-select","inputs":[{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"values","alias":"values","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"searchable","alias":"searchable","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"searchLabel","alias":"searchLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"searchPlaceholder","alias":"searchPlaceholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"values","alias":"valuesChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]},{"name":"NeuSelectItemContext","kind":"TypeAliasDeclaration","declaration":"export type NeuSelectItemContext = NeuListboxItemContext;"},{"name":"NeuSelectItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectItem]","inputs":[],"outputs":[],"members":[]},{"name":"NeuSelectSelectedContext","kind":"InterfaceDeclaration","declaration":"export interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}"},{"name":"NeuSelectSelectedDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuSelectSelected]","inputs":[],"outputs":[],"members":[]}]},"@neural-ui/native/sidebar":{"types":"./dist/sidebar/index.d.ts","sha256":"6e10e61e3270c2bd5ede8f8973792339fbd5e07fdc4ebd12a0ac51db60304130","symbols":[{"name":"NeuSidebarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-sidebar","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"title","alias":"title","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"fullWidth","alias":"fullWidth","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"navigate","alias":"navigate","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"opened","alias":"opened","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/skeleton":{"types":"./dist/skeleton/index.d.ts","sha256":"780843e163a1b9db406e643856f041f06b678fa64c44cc847fdc10874b3cf8c6","symbols":[{"name":"NeuSkeletonAnimation","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonAnimation = 'pulse' | 'none';"},{"name":"NeuSkeletonComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-skeleton","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"lines","alias":"lines","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"variant","alias":"variant","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonVariant>"},{"name":"width","alias":"width","required":false,"type":"import(\"@angular/core\").InputSignal<string | number | undefined>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number | undefined>"},{"name":"borderRadius","alias":"borderRadius","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"gap","alias":"gap","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"lastLineWidth","alias":"lastLineWidth","required":false,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"animation","alias":"animation","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>"}],"outputs":[],"members":[]},{"name":"NeuSkeletonVariant","kind":"TypeAliasDeclaration","declaration":"export type NeuSkeletonVariant = 'text' | 'rect' | 'circle';"}]},"@neural-ui/native/slider":{"types":"./dist/slider/index.d.ts","sha256":"f7f68892924699ad3bf7f5b768bb79e4e1cec05235c65fd59db1e09d4643c8eb","symbols":[{"name":"NeuSliderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-slider","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"min","alias":"min","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"max","alias":"max","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"step","alias":"step","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"showButtons","alias":"showButtons","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"increaseLabel","alias":"increaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"decreaseLabel","alias":"decreaseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/speed-dial":{"types":"./dist/speed-dial/index.d.ts","sha256":"825fb916a6e93b8960ee6a5aa4707092c40887cac81623e8f339c37b45ca05e4","symbols":[{"name":"NeuSpeedDialAction","kind":"InterfaceDeclaration","declaration":"export interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuSpeedDialComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-speed-dial","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>"},{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/spinner":{"types":"./dist/spinner/index.d.ts","sha256":"22cb3f20b7a2499038891762db8990124409d78dde8c66e4f0533c736b114bbe","symbols":[{"name":"NeuSpinnerComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-spinner","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<\"small\" | \"large\">"},{"name":"active","alias":"active","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"showLabel","alias":"showLabel","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/stats-card":{"types":"./dist/stats-card/index.d.ts","sha256":"93f80538d09192b5b1eed844145631650ad28b4bc45db61fc6bdd2f2e29317ab","symbols":[{"name":"NeuStatsCardComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stats-card","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":true,"type":"import(\"@angular/core\").InputSignal<string | number>"},{"name":"change","alias":"change","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"description","alias":"description","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"svg","alias":"svg","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[],"members":[]}]},"@neural-ui/native/stepper":{"types":"./dist/stepper/index.d.ts","sha256":"ededf2ea8550e1f1f113f11f210b56475aae9283e526b7e97609460db66185d7","symbols":[{"name":"NeuStepperComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-stepper","inputs":[{"name":"steps","alias":"steps","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"activeStep","alias":"activeStep","required":false,"type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"linear","alias":"linear","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"completed","alias":"completed","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"previousLabel","alias":"previousLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nextLabel","alias":"nextLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"finishLabel","alias":"finishLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"activeStep","alias":"activeStepChange","type":"import(\"@angular/core\").ModelSignal<number>"},{"name":"finished","alias":"finished","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["goTo(index: number): void;"]}]},"@neural-ui/native/switch":{"types":"./dist/switch/index.d.ts","sha256":"2ac7220d88270898f14938c5480cf72519cb30c37de867bc3e26b321e76822b2","symbols":[{"name":"NeuSwitchComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-switch","inputs":[{"name":"haptic","alias":"haptic","required":false,"type":"import(\"@angular/core\").InputSignal<false | NeuHapticFeedback>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"labelPosition","alias":"labelPosition","required":false,"type":"import(\"@angular/core\").InputSignal<\"left\" | \"right\">"},{"name":"size","alias":"size","required":false,"type":"import(\"@angular/core\").InputSignal<NeuSize>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"checked","alias":"checked","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"checked","alias":"checkedChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/tabs":{"types":"./dist/tabs/index.d.ts","sha256":"99929f6d14993eab62015f75c5cd6834348f39969b84d12b34b8d1c87a2421cb","symbols":[{"name":"NEU_TABS","kind":"VariableDeclaration","declaration":"NEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>"},{"name":"NeuTabPanelComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tab-panel","inputs":[{"name":"id","alias":"id","required":true,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[],"members":[]},{"name":"NeuTabsComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tabs","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tabs","alias":"tabs","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignal<boolean>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"}],"members":[]}]},"@neural-ui/native/textarea":{"types":"./dist/textarea/index.d.ts","sha256":"8fa47f1a74dfcc12843518b057f1939899ed7adf34dda541f944a952f71e0f28","symbols":[{"name":"NeuTextareaComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-textarea","inputs":[{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxLength","alias":"maxLength","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<number | undefined, number | undefined>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/theme":{"types":"./dist/theme/index.d.ts","sha256":"e912c95c6bd86cb6522af7a505580f24806823fef8b9415f40578b3835c9e45b","symbols":[{"name":"NeuThemeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-theme","inputs":[{"name":"scheme","alias":"scheme","required":false,"type":"import(\"@angular/core\").InputSignal<NeuColorScheme>"},{"name":"tokens","alias":"tokens","required":false,"type":"import(\"@angular/core\").InputSignal<Partial<NeuTokens>>"}],"outputs":[],"members":["readonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;"]}]},"@neural-ui/native/timeline":{"types":"./dist/timeline/index.d.ts","sha256":"eaa9deccfe12247c88aa486e59d4194d6c1f24b20d3ec4ec5e4ccd7e02517ada","symbols":[{"name":"NeuTimelineComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-timeline","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"completedLabel","alias":"completedLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"pendingLabel","alias":"pendingLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>"}],"outputs":[],"members":[]}]},"@neural-ui/native/toast":{"types":"./dist/toast/index.d.ts","sha256":"0b40ce99ddbd825688892f2b267a0e93f6186d38ab813744aee4598587b2a47e","symbols":[{"name":"NeuToastComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toast","inputs":[{"name":"open","alias":"open","required":false,"type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"message","alias":"message","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"duration","alias":"duration","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actionLabel","alias":"actionLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"open","alias":"openChange","type":"import(\"@angular/core\").ModelSignal<boolean>"},{"name":"action","alias":"action","type":"import(\"@angular/core\").OutputEmitterRef<void>"},{"name":"dismissed","alias":"dismissed","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/toggle-button-group":{"types":"./dist/toggle-button-group/index.d.ts","sha256":"d845761cf7b67ab5e648678ebc7e24ebd67dc31927d04b46e4130256184309ad","symbols":[{"name":"NeuToggleButtonGroupComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toggle-button-group","inputs":[{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"options","alias":"options","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"tone","alias":"tone","required":false,"type":"import(\"@angular/core\").InputSignal<NeuTone>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/toolbar":{"types":"./dist/toolbar/index.d.ts","sha256":"f494436e45ff1a79d231fbc06ad9cd7c32cc36526c60400a9e6ec99e5b4535d2","symbols":[{"name":"NeuToolbarAction","kind":"InterfaceDeclaration","declaration":"export interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}"},{"name":"NeuToolbarComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-toolbar","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"actions","alias":"actions","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"}],"outputs":[{"name":"activated","alias":"activated","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]}]},"@neural-ui/native/tree":{"types":"./dist/tree/index.d.ts","sha256":"8786a8448d4f651a0ca65f57b59207fa251e65afe910c7eb15ab6fa35ea8294a","symbols":[{"name":"NeuTreeComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"expanded","alias":"expanded","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"expanded","alias":"expandedChange","type":"import(\"@angular/core\").ModelSignal<readonly string[]>"},{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/tree-select":{"types":"./dist/tree-select/index.d.ts","sha256":"9b9d49c460676bf099f8ab2c56998bf2331388803df620d43fa211ffb6165388","symbols":[{"name":"NeuTreeSelectComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-tree-select","inputs":[{"name":"nodes","alias":"nodes","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>"},{"name":"leafOnly","alias":"leafOnly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"placeholder","alias":"placeholder","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"closeLabel","alias":"closeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"expandLabel","alias":"expandLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"value","alias":"value","required":false,"type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"label","alias":"label","required":true,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"readonly","alias":"readonly","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"invalid","alias":"invalid","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"touched","alias":"touched","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"hint","alias":"hint","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"required","alias":"required","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"requiredLabel","alias":"requiredLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"error","alias":"error","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"value","alias":"valueChange","type":"import(\"@angular/core\").ModelSignal<string>"},{"name":"touch","alias":"touch","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":[]}]},"@neural-ui/native/uploader":{"types":"./dist/uploader/index.d.ts","sha256":"facd99fc0133547fe4fc7356047fd0fbff076a6072535ddc1b9066c942e7b703","symbols":[{"name":"NEU_FILE_PICKER","kind":"VariableDeclaration","declaration":"NEU_FILE_PICKER: InjectionToken<NeuFilePicker>"},{"name":"NeuFile","kind":"InterfaceDeclaration","declaration":"export interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}"},{"name":"NeuFilePicker","kind":"InterfaceDeclaration","declaration":"export interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}"},{"name":"NeuUpload","kind":"TypeAliasDeclaration","declaration":"export type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;"},{"name":"NeuUploaderComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-uploader","inputs":[{"name":"label","alias":"label","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"files","alias":"files","required":false,"type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"types","alias":"types","required":false,"type":"import(\"@angular/core\").InputSignal<readonly string[]>"},{"name":"multiple","alias":"multiple","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"maxFiles","alias":"maxFiles","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"maxBytes","alias":"maxBytes","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"chooseLabel","alias":"chooseLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"uploadLabel","alias":"uploadLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"removeLabel","alias":"removeLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"},{"name":"stateLabels","alias":"stateLabels","required":false,"type":"import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" | \"selected\" | \"uploading\" | \"complete\", string>>>"},{"name":"upload","alias":"upload","required":false,"type":"import(\"@angular/core\").InputSignal<NeuUpload | undefined>"}],"outputs":[{"name":"files","alias":"filesChange","type":"import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>"},{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>"},{"name":"completed","alias":"completed","type":"import(\"@angular/core\").OutputEmitterRef<NeuFile>"},{"name":"rejected","alias":"rejected","type":"import(\"@angular/core\").OutputEmitterRef<string>"}],"members":[]},{"name":"NeuUploadItem","kind":"InterfaceDeclaration","declaration":"export interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}"}]},"@neural-ui/native/virtual-list":{"types":"./dist/virtual-list/index.d.ts","sha256":"0b32397ea878681b0dc5d384900482deac9309b402299bf350d7a6a610568701","symbols":[{"name":"NeuVirtualListComponent","kind":"ClassDeclaration","angularKind":"component","selector":"neu-virtual-list","inputs":[{"name":"items","alias":"items","required":false,"type":"import(\"@angular/core\").InputSignal<readonly NeuOption[]>"},{"name":"disabled","alias":"disabled","required":false,"type":"import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>"},{"name":"estimatedItemHeight","alias":"estimatedItemHeight","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"height","alias":"height","required":false,"type":"import(\"@angular/core\").InputSignal<number>"},{"name":"emptyLabel","alias":"emptyLabel","required":false,"type":"import(\"@angular/core\").InputSignal<string>"}],"outputs":[{"name":"selected","alias":"selected","type":"import(\"@angular/core\").OutputEmitterRef<string>"},{"name":"endReached","alias":"endReached","type":"import(\"@angular/core\").OutputEmitterRef<void>"}],"members":["scrollToIndex(index: number): void;","scrollToTop(): void;"]},{"name":"NeuVirtualListItemContext","kind":"InterfaceDeclaration","declaration":"export interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}"},{"name":"NeuVirtualListItemDirective","kind":"ClassDeclaration","angularKind":"directive","selector":"ng-template[neuVirtualListItem]","inputs":[],"outputs":[],"members":[]}]}},"tokens":[{"name":"accent","type":"string","optional":false,"category":"theme","default":"#006ee6","darkDefault":"#b5c4ff"},{"name":"onAccent","type":"string","optional":false,"category":"theme","default":"#ffffff","darkDefault":"#172955"},{"name":"surface","type":"string","optional":false,"category":"theme","default":"#ffffff","darkDefault":"#1b2230"},{"name":"canvas","type":"string","optional":false,"category":"theme","default":"#f4f5f7","darkDefault":"#111722"},{"name":"text","type":"string","optional":false,"category":"theme","default":"#172033","darkDefault":"#edf1fa"},{"name":"muted","type":"string","optional":false,"category":"theme","default":"#596477","darkDefault":"#b4bed0"},{"name":"border","type":"string","optional":false,"category":"theme","default":"#a5afbf","darkDefault":"#6c7a92"},{"name":"tonal","type":"string","optional":false,"category":"theme","default":"#eff6ff","darkDefault":"#293756"},{"name":"danger","type":"string","optional":false,"category":"theme","default":"#dc2626","darkDefault":"#ffb4ab"},{"name":"success","type":"string","optional":false,"category":"theme","default":"#15803d","darkDefault":"#8fdeb1"},{"name":"warning","type":"string","optional":false,"category":"theme","default":"#f59e0b","darkDefault":"#efd48f"},{"name":"warningText","type":"string","optional":false,"category":"theme","default":"#92400e","darkDefault":"#efd48f"},{"name":"onWarning","type":"string","optional":false,"category":"theme","default":"#111827","darkDefault":"#111722"},{"name":"info","type":"string","optional":false,"category":"theme","default":"#0064d1","darkDefault":"#7dd3fc"},{"name":"accentText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"dangerText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"successText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"infoText","type":"string","optional":true,"category":"theme","default":"resolved from theme surfaces","darkDefault":"resolved from theme surfaces"},{"name":"radius","type":"number","optional":false,"category":"theme","default":12,"darkDefault":12},{"name":"spacing","type":"number","optional":false,"category":"theme","default":16,"darkDefault":16},{"name":"fontSize","type":"number","optional":false,"category":"theme","default":16,"darkDefault":16},{"name":"duration","type":"number","optional":false,"category":"theme","default":120,"darkDefault":120},{"name":"surfaceBorder","type":"string","optional":true,"category":"theme","default":"#e1e6ed","darkDefault":"#354052"},{"name":"divider","type":"string","optional":true,"category":"theme","default":"#e7ebf0","darkDefault":"#303b4c"},{"name":"surfaceSecondary","type":"string","optional":true,"category":"theme","default":"#eef1f5","darkDefault":"#222d3f"},{"name":"mediaCanvas","type":"string","optional":true,"category":"theme","default":"#111722","darkDefault":"#111722"},{"name":"mediaText","type":"string","optional":true,"category":"theme","default":"#edf1fa","darkDefault":"#edf1fa"},{"name":"mediaBarStyle","type":"\"light\" | \"dark\"","optional":true,"category":"theme","default":"light","darkDefault":"light"}],"assets":{"dist/foundation/index.js":"72b4ff3cc18a00dd2fb94ba592695514694d07ed884a5d9f0e1f8eefcb011eed","dist/foundation/index.d.ts":"75500ce10ca61cd1e1ff88f59f325a981fc7d156deeff2ca40346699d60c7609"}},"documents":[{"id":"references/api/accordion","source":"skills/neural-native/references/api/accordion.md","text":"# @neural-ui/native/accordion\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAccordionComponent\n\nSelector: `neu-accordion`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n"},{"id":"references/api/alert","source":"skills/neural-native/references/api/alert.md","text":"# @neural-ui/native/alert\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAlertComponent\n\nSelector: `neu-alert`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuAlertVariant>` |\n| showIcon | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| visible | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| visibleChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAlertVariant\n\n```typescript\nexport type NeuAlertVariant = 'soft' | 'outline';\n```\n"},{"id":"references/api/autocomplete","source":"skills/neural-native/references/api/autocomplete.md","text":"# @neural-ui/native/autocomplete\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAutocompleteComponent\n\nSelector: `neu-autocomplete`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| minLength | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/avatar-group","source":"skills/neural-native/references/api/avatar-group.md","text":"# @neural-ui/native/avatar-group\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAvatarGroupComponent\n\nSelector: `neu-avatar-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| moreLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/avatar","source":"skills/neural-native/references/api/avatar.md","text":"# @neural-ui/native/avatar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuAvatarComponent\n\nSelector: `neu-avatar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| uri | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/badge","source":"skills/neural-native/references/api/badge.md","text":"# @neural-ui/native/badge\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuBadgeComponent\n\nSelector: `neu-badge`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/bottom-sheet","source":"skills/neural-native/references/api/bottom-sheet.md","text":"# @neural-ui/native/bottom-sheet\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuBottomSheetComponent\n\nSelector: `neu-bottom-sheet`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| height | no | `import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuBottomSheetHeight\n\n```typescript\nexport type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';\n```\n"},{"id":"references/api/button-group","source":"skills/neural-native/references/api/button-group.md","text":"# @neural-ui/native/button-group\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuButtonGroupComponent\n\nSelector: `neu-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/button","source":"skills/neural-native/references/api/button.md","text":"# @neural-ui/native/button\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuButtonComponent\n\nSelector: `neu-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| accessibilityLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n"},{"id":"references/api/calendar","source":"skills/neural-native/references/api/calendar.md","text":"# @neural-ui/native/calendar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCalendarComponent\n\nSelector: `neu-calendar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| month | no | `import(\"@angular/core\").ModelSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| firstDay | no | `import(\"@angular/core\").InputSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| events | no | `import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>` |\n| showAgenda | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| editable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| agendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAgendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hasEventsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| editEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| deleteEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| monthChange | `import(\"@angular/core\").ModelSignal<string>` |\n| eventCreateRequested | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| eventEditRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| eventDeleteRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCalendarEvent\n\n```typescript\nexport interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}\n```\n"},{"id":"references/api/card","source":"skills/neural-native/references/api/card.md","text":"# @neural-ui/native/card\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCardComponent\n\nSelector: `neu-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<\"tonal\" \\| \"surface\" \\| \"outlined\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardFooterDirective\n\nSelector: `[neuCardFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardHeaderDirective\n\nSelector: `[neuCardHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/carousel","source":"skills/neural-native/references/api/carousel.md","text":"# @neural-ui/native/carousel\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCarouselComponent\n\nSelector: `neu-carousel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| preview | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuImageViewerLabels>` |\n| loop | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplay | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplayInterval | no | `import(\"@angular/core\").InputSignal<number>` |\n| pauseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| playLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n"},{"id":"references/api/cascade-select","source":"skills/neural-native/references/api/cascade-select.md","text":"# @neural-ui/native/cascade-select\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCascadeSelectComponent\n\nSelector: `neu-cascade-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| backLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| rootLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/checkbox","source":"skills/neural-native/references/api/checkbox.md","text":"# @neural-ui/native/checkbox\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuCheckboxComponent\n\nSelector: `neu-checkbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/chip","source":"skills/neural-native/references/api/chip.md","text":"# @neural-ui/native/chip\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuChipComponent\n\nSelector: `neu-chip`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| selected | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selectable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selectedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| removed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/confirm-dialog","source":"skills/neural-native/references/api/confirm-dialog.md","text":"# @neural-ui/native/confirm-dialog\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuConfirmDialogComponent\n\nSelector: `neu-confirm-dialog`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| confirmLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| intent | no | `import(\"@angular/core\").InputSignal<\"danger\" \\| \"default\">` |\n| busy | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeOnConfirm | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| confirmed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/context-menu","source":"skills/neural-native/references/api/context-menu.md","text":"# @neural-ui/native/context-menu\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuContextMenuComponent\n\nSelector: `neu-context-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/core","source":"skills/neural-native/references/api/core.md","text":"# @neural-ui/native\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## formatMask\n\n```typescript\nexport declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};\n```\n\n## NEU_CHECK_ICON\n\n```typescript\nNEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\"\n```\n\n## NEU_DARK_TOKENS\n\n```typescript\nNEU_DARK_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_FILE_PICKER\n\n```typescript\nNEU_FILE_PICKER: InjectionToken<NeuFilePicker>\n```\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_LIGHT_TOKENS\n\n```typescript\nNEU_LIGHT_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_PLUS_ICON\n\n```typescript\nNEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\"\n```\n\n## NEU_TABS\n\n```typescript\nNEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>\n```\n\n## NEU_THEME\n\n```typescript\nNEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>\n```\n\n## NeuAccordionComponent\n\nSelector: `neu-accordion`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n\n## NeuAlertComponent\n\nSelector: `neu-alert`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuAlertVariant>` |\n| showIcon | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| visible | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| visibleChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAlertVariant\n\n```typescript\nexport type NeuAlertVariant = 'soft' | 'outline';\n```\n\n## NeuAutocompleteComponent\n\nSelector: `neu-autocomplete`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| minLength | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuAvatarComponent\n\nSelector: `neu-avatar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| uri | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuAvatarGroupComponent\n\nSelector: `neu-avatar-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly uri?: string;\n readonly tone?: NeuTone;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| moreLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuBadgeComponent\n\nSelector: `neu-badge`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuBottomSheetComponent\n\nSelector: `neu-bottom-sheet`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| height | no | `import(\"@angular/core\").InputSignal<NeuBottomSheetHeight>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuBottomSheetHeight\n\n```typescript\nexport type NeuBottomSheetHeight = 'auto' | 'sm' | 'md' | 'lg' | 'full';\n```\n\n## NeuButtonComponent\n\nSelector: `neu-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| accessibilityLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n\n## NeuButtonGroupComponent\n\nSelector: `neu-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuCalendarComponent\n\nSelector: `neu-calendar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| month | no | `import(\"@angular/core\").ModelSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| firstDay | no | `import(\"@angular/core\").InputSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| events | no | `import(\"@angular/core\").InputSignal<readonly NeuCalendarEvent[]>` |\n| showAgenda | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| editable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| agendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAgendaLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hasEventsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| editEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| deleteEventLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| monthChange | `import(\"@angular/core\").ModelSignal<string>` |\n| eventCreateRequested | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| eventEditRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| eventDeleteRequested | `import(\"@angular/core\").OutputEmitterRef<NeuCalendarEvent>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCalendarEvent\n\n```typescript\nexport interface NeuCalendarEvent extends NeuOption {\n readonly date: string;\n}\n```\n\n## NeuCardComponent\n\nSelector: `neu-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<\"tonal\" \\| \"surface\" \\| \"outlined\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardFooterDirective\n\nSelector: `[neuCardFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCardHeaderDirective\n\nSelector: `[neuCardHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuCarouselComponent\n\nSelector: `neu-carousel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| preview | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuImageViewerLabels>` |\n| loop | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplay | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| autoplayInterval | no | `import(\"@angular/core\").InputSignal<number>` |\n| pauseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| playLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuCascadeSelectComponent\n\nSelector: `neu-cascade-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| backLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| rootLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuCheckboxComponent\n\nSelector: `neu-checkbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuChipComponent\n\nSelector: `neu-chip`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| selected | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selectable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selectedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| removed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuColorScheme\n\n```typescript\nexport type NeuColorScheme = 'system' | 'light' | 'dark';\n```\n\n## NeuConfirmDialogComponent\n\nSelector: `neu-confirm-dialog`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| confirmLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| intent | no | `import(\"@angular/core\").InputSignal<\"danger\" \\| \"default\">` |\n| busy | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeOnConfirm | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| confirmed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuContextMenuComponent\n\nSelector: `neu-context-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewComponent\n\nSelector: `neu-data-view`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> \\| undefined>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| descending | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| sortLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| refreshLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n| descendingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| refresh | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewItemContext\n\n```typescript\nexport interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}\n```\n\n## NeuDataViewItemDirective\n\nSelector: `ng-template[neuDataViewItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuDateInputComponent\n\nSelector: `neu-date-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDividerComponent\n\nSelector: `neu-divider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| orientation | no | `import(\"@angular/core\").InputSignal<\"horizontal\" \\| \"vertical\">` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuEmptyStateComponent\n\nSelector: `neu-empty-state`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuFile\n\n```typescript\nexport interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}\n```\n\n## NeuFilePicker\n\n```typescript\nexport interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}\n```\n\n## NeuFilterBarComponent\n\nSelector: `neu-filter-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n\n## NeuFormFieldComponent\n\nSelector: `neu-form-field`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryCaptionDirective\n\nSelector: `ng-template[neuGalleryCaption]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryComponent\n\nSelector: `neu-gallery`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| layout | no | `import(\"@angular/core\").InputSignal<NeuGalleryLayout>` |\n| columns | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| aspectRatio | no | `import(\"@angular/core\").InputSignal<number>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| showCaptions | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuGalleryItemContext\n\n```typescript\nexport interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}\n```\n\n## NeuGalleryItemDirective\n\nSelector: `ng-template[neuGalleryItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryLayout\n\n```typescript\nexport type NeuGalleryLayout = 'grid' | 'mosaic';\n```\n\n## NeuGalleryViewerLabels\n\n```typescript\nexport interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuIconButtonComponent\n\nSelector: `neu-icon-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| svg | yes | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n\n## NeuImageItem\n\n```typescript\nexport interface NeuImageItem {\n readonly id: string;\n readonly uri: string;\n readonly label: string;\n}\n```\n\n## NeuImageViewerComponent\n\nSelector: `neu-image-viewer`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomOutLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| errorLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuImageViewerLabels\n\n```typescript\nexport interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n\n## NeuInlineEditorComponent\n\nSelector: `neu-inline-editor`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| editing | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| saveLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| editingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| saved | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputComponent\n\nSelector: `neu-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"email-address\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputMaskComponent\n\nSelector: `neu-input-mask`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| mask | yes | `import(\"@angular/core\").InputSignal<string>` |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputOtpComponent\n\nSelector: `neu-input-otp`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| length | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| completed | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuInputTagsComponent\n\nSelector: `neu-input-tags`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxComponent\n\nSelector: `neu-listbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| appearance | no | `import(\"@angular/core\").InputSignal<\"cards\" \\| \"plain\">` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> \\| undefined>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxItemContext\n\n```typescript\nexport interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}\n```\n\n## NeuListboxItemDirective\n\nSelector: `ng-template[neuListboxItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuMenuComponent\n\nSelector: `neu-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| showTrigger | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuMeterGroupComponent\n\nSelector: `neu-meter-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalComponent\n\nSelector: `neu-modal`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<\"native\" \\| \"action\" \\| \"backdrop\">` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(reason?: 'native' | 'action' | 'backdrop'): void;\n```\n\n## NeuModalFooterDirective\n\nSelector: `ng-template[neuModalFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalHeaderDirective\n\nSelector: `ng-template[neuModalHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuNavComponent\n\nSelector: `neu-nav`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNavItem\n\n```typescript\nexport interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuNotificationCenterComponent\n\nSelector: `neu-notification-center`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| readIds | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| markAllLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| unreadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| readIdsChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNumberInputComponent\n\nSelector: `neu-number-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuOption\n\n```typescript\nexport interface NeuOption {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly disabled?: boolean;\n}\n```\n\n## NeuPanelComponent\n\nSelector: `neu-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| collapsed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| collapsible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| collapsedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuPanelFooterDirective\n\nSelector: `[neuPanelFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPanelHeaderDirective\n\nSelector: `[neuPanelHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPasswordComponent\n\nSelector: `neu-password`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| revealed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| showLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hideLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| revealedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuPickListComponent\n\nSelector: `neu-pick-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| selectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| availableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| upLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| downLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptySelectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAvailableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuPopoverComponent\n\nSelector: `neu-popover`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| dismissLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuProgressBarComponent\n\nSelector: `neu-progress-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuRadioGroupComponent\n\nSelector: `neu-radio`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuRatingComponent\n\nSelector: `neu-rating`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectComponent\n\nSelector: `neu-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| values | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| searchable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchPlaceholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valuesChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectItemContext\n\n```typescript\nexport type NeuSelectItemContext = NeuListboxItemContext;\n```\n\n## NeuSelectItemDirective\n\nSelector: `ng-template[neuSelectItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSelectSelectedContext\n\n```typescript\nexport interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}\n```\n\n## NeuSelectSelectedDirective\n\nSelector: `ng-template[neuSelectSelected]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSidebarComponent\n\nSelector: `neu-sidebar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSize\n\n```typescript\nexport type NeuSize = 'sm' | 'md' | 'lg';\n```\n\n## NeuSkeletonAnimation\n\n```typescript\nexport type NeuSkeletonAnimation = 'pulse' | 'none';\n```\n\n## NeuSkeletonComponent\n\nSelector: `neu-skeleton`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| lines | no | `import(\"@angular/core\").InputSignal<number>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuSkeletonVariant>` |\n| width | no | `import(\"@angular/core\").InputSignal<string \\| number \\| undefined>` |\n| height | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| lastLineWidth | no | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| animation | no | `import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSkeletonVariant\n\n```typescript\nexport type NeuSkeletonVariant = 'text' | 'rect' | 'circle';\n```\n\n## NeuSliderComponent\n\nSelector: `neu-slider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| showButtons | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSpeedDialAction\n\n```typescript\nexport interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuSpeedDialComponent\n\nSelector: `neu-speed-dial`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuSpinnerComponent\n\nSelector: `neu-spinner`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| size | no | `import(\"@angular/core\").InputSignal<\"small\" \\| \"large\">` |\n| active | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showLabel | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuStatsCardComponent\n\nSelector: `neu-stats-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | yes | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| change | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuStepperComponent\n\nSelector: `neu-stepper`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| steps | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| activeStep | no | `import(\"@angular/core\").ModelSignal<number>` |\n| linear | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| completed | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| finishLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| activeStepChange | `import(\"@angular/core\").ModelSignal<number>` |\n| finished | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\ngoTo(index: number): void;\n```\n\n## NeuSwitchComponent\n\nSelector: `neu-switch`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTabPanelComponent\n\nSelector: `neu-tab-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| id | yes | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuTabsComponent\n\nSelector: `neu-tabs`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| tabs | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n\n## NeuTextareaComponent\n\nSelector: `neu-textarea`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuThemeComponent\n\nSelector: `neu-theme`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| scheme | no | `import(\"@angular/core\").InputSignal<NeuColorScheme>` |\n| tokens | no | `import(\"@angular/core\").InputSignal<Partial<NeuTokens>>` |\n\n| Output | Type |\n| --- | --- |\n\nSupported imperative members:\n\n```typescript\nreadonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;\n```\n\n## NeuTimelineComponent\n\nSelector: `neu-timeline`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| completedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| pendingLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuToastComponent\n\nSelector: `neu-toast`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| duration | no | `import(\"@angular/core\").InputSignal<number>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuToggleButtonGroupComponent\n\nSelector: `neu-toggle-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTokens\n\n```typescript\nexport interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}\n```\n\n## NeuTone\n\n```typescript\nexport type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';\n```\n\n## NeuToolbarAction\n\n```typescript\nexport interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuToolbarComponent\n\nSelector: `neu-toolbar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuTreeComponent\n\nSelector: `neu-tree`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuTreeNode\n\n```typescript\nexport interface NeuTreeNode extends NeuOption {\n readonly children?: readonly NeuTreeNode[];\n}\n```\n\n## NeuTreeSelectComponent\n\nSelector: `neu-tree-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuUpload\n\n```typescript\nexport type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;\n```\n\n## NeuUploaderComponent\n\nSelector: `neu-uploader`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| files | no | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| types | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxFiles | no | `import(\"@angular/core\").InputSignal<number>` |\n| maxBytes | no | `import(\"@angular/core\").InputSignal<number>` |\n| chooseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| uploadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| stateLabels | no | `import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" \\| \"selected\" \\| \"uploading\" \\| \"complete\", string>>>` |\n| upload | no | `import(\"@angular/core\").InputSignal<NeuUpload \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| filesChange | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>` |\n| completed | `import(\"@angular/core\").OutputEmitterRef<NeuFile>` |\n| rejected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuUploadItem\n\n```typescript\nexport interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}\n```\n\n## NeuVariant\n\n```typescript\nexport type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';\n```\n\n## NeuVirtualListComponent\n\nSelector: `neu-virtual-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| estimatedItemHeight | no | `import(\"@angular/core\").InputSignal<number>` |\n| height | no | `import(\"@angular/core\").InputSignal<number>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| endReached | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nscrollToIndex(index: number): void;\nscrollToTop(): void;\n```\n\n## NeuVirtualListItemContext\n\n```typescript\nexport interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}\n```\n\n## NeuVirtualListItemDirective\n\nSelector: `ng-template[neuVirtualListItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/data-view","source":"skills/neural-native/references/api/data-view.md","text":"# @neural-ui/native/data-view\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDataViewComponent\n\nSelector: `neu-data-view`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuDataViewItemContext> \\| undefined>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| descending | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| sortLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| refreshLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n| descendingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| refresh | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuDataViewItemContext\n\n```typescript\nexport interface NeuDataViewItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n}\n```\n\n## NeuDataViewItemDirective\n\nSelector: `ng-template[neuDataViewItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/date-input","source":"skills/neural-native/references/api/date-input.md","text":"# @neural-ui/native/date-input\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDateInputComponent\n\nSelector: `neu-date-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| min | no | `import(\"@angular/core\").InputSignal<string>` |\n| max | no | `import(\"@angular/core\").InputSignal<string>` |\n| locale | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextYearsLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/divider","source":"skills/neural-native/references/api/divider.md","text":"# @neural-ui/native/divider\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuDividerComponent\n\nSelector: `neu-divider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| orientation | no | `import(\"@angular/core\").InputSignal<\"horizontal\" \\| \"vertical\">` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/empty-state","source":"skills/neural-native/references/api/empty-state.md","text":"# @neural-ui/native/empty-state\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuEmptyStateComponent\n\nSelector: `neu-empty-state`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/filter-bar","source":"skills/neural-native/references/api/filter-bar.md","text":"# @neural-ui/native/filter-bar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuFilterBarComponent\n\nSelector: `neu-filter-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| query | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| queryChange | `import(\"@angular/core\").ModelSignal<string>` |\n"},{"id":"references/api/form-field","source":"skills/neural-native/references/api/form-field.md","text":"# @neural-ui/native/form-field\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuFormFieldComponent\n\nSelector: `neu-form-field`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/foundation","source":"skills/neural-native/references/api/foundation.md","text":"# @neural-ui/native/foundation\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_CHECK_ICON\n\n```typescript\nNEU_CHECK_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5 12 4 4 10-10\\\"/></svg>\"\n```\n\n## NEU_DARK_TOKENS\n\n```typescript\nNEU_DARK_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_LIGHT_TOKENS\n\n```typescript\nNEU_LIGHT_TOKENS: Readonly<NeuTokens>\n```\n\n## NEU_PLUS_ICON\n\n```typescript\nNEU_PLUS_ICON = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M12 5v14M5 12h14\\\"/></svg>\"\n```\n\n## NEU_THEME\n\n```typescript\nNEU_THEME: InjectionToken<Signal<Readonly<NeuTokens>>>\n```\n\n## NeuColorScheme\n\n```typescript\nexport type NeuColorScheme = 'system' | 'light' | 'dark';\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuSize\n\n```typescript\nexport type NeuSize = 'sm' | 'md' | 'lg';\n```\n\n## NeuTokens\n\n```typescript\nexport interface NeuTokens {\n accent: string;\n onAccent: string;\n surface: string;\n canvas: string;\n text: string;\n muted: string;\n border: string;\n tonal: string;\n danger: string;\n success: string;\n warning: string;\n warningText: string;\n onWarning: string;\n info: string;\n accentText?: string;\n dangerText?: string;\n successText?: string;\n infoText?: string;\n radius: number;\n spacing: number;\n fontSize: number;\n duration: number;\n surfaceBorder?: string;\n divider?: string;\n surfaceSecondary?: string;\n mediaCanvas?: string;\n mediaText?: string;\n mediaBarStyle?: \"light\" | \"dark\";\n}\n```\n\n## NeuTone\n\n```typescript\nexport type NeuTone = 'neutral' | 'brand' | 'accent' | 'success' | 'info' | 'warning' | 'danger';\n```\n\n## NeuVariant\n\n```typescript\nexport type NeuVariant = 'solid' | 'tonal' | 'outline' | 'text';\n```\n"},{"id":"references/api/gallery","source":"skills/neural-native/references/api/gallery.md","text":"# @neural-ui/native/gallery\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuGalleryCaptionDirective\n\nSelector: `ng-template[neuGalleryCaption]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryComponent\n\nSelector: `neu-gallery`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| viewerLabels | no | `import(\"@angular/core\").InputSignal<NeuGalleryViewerLabels>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| layout | no | `import(\"@angular/core\").InputSignal<NeuGalleryLayout>` |\n| columns | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| aspectRatio | no | `import(\"@angular/core\").InputSignal<number>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| showCaptions | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuGalleryItemContext\n\n```typescript\nexport interface NeuGalleryItemContext {\n readonly $implicit: NeuImageItem;\n readonly index: number;\n readonly aspectRatio: number;\n readonly borderRadius: number;\n}\n```\n\n## NeuGalleryItemDirective\n\nSelector: `ng-template[neuGalleryItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuGalleryLayout\n\n```typescript\nexport type NeuGalleryLayout = 'grid' | 'mosaic';\n```\n\n## NeuGalleryViewerLabels\n\n```typescript\nexport interface NeuGalleryViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n"},{"id":"references/api/haptics","source":"skills/neural-native/references/api/haptics.md","text":"# @neural-ui/native/haptics\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_HAPTICS_DRIVER\n\n```typescript\nNEU_HAPTICS_DRIVER: InjectionToken<NeuHapticsDriver | null>\n```\n\n## NEU_HAPTICS_OPTIONS\n\n```typescript\nNEU_HAPTICS_OPTIONS: InjectionToken<NeuHapticsOptions>\n```\n\n## NEU_NATIVE_HAPTICS\n\n```typescript\nNEU_NATIVE_HAPTICS: InjectionToken<NeuNativeHaptics | null>\n```\n\n## NeuHapticFeedback\n\n```typescript\nexport type NeuHapticFeedback = 'press' | 'selection' | NeuHapticImpact | 'success' | 'warning' | 'error';\n```\n\n## NeuHapticImpact\n\n```typescript\nexport type NeuHapticImpact = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';\n```\n\n## NeuHaptics\n\nSupported imperative members:\n\n```typescript\nreadonly enabled: import(\"@angular/core\").WritableSignal<boolean>;\nget available(): boolean;\nplay(feedback?: NeuHapticFeedback | false): boolean;\n```\n\n## NeuHapticsDriver\n\n```typescript\nexport interface NeuHapticsDriver {\n available(): boolean;\n play(feedback: Exclude<NeuHapticFeedback, \"press\">): void | Promise<void>;\n}\n```\n\n## NeuHapticsOptions\n\n```typescript\nexport interface NeuHapticsOptions {\n enabled?: boolean;\n minimumIntervalMs?: number;\n pressStyle?: NeuHapticImpact;\n}\n```\n\n## NeuNativeHaptics\n\n```typescript\nexport interface NeuNativeHaptics {\n impactAsync(style: NeuHapticImpact): Promise<void>;\n notificationAsync(type: \"success\" | \"warning\" | \"error\"): Promise<void>;\n selectionAsync(): Promise<void>;\n}\n```\n\n## provideNeuHaptics\n\n```typescript\nexport declare function provideNeuHaptics(options?: NeuHapticsOptions): EnvironmentProviders;\n```\n"},{"id":"references/api/icon-button","source":"skills/neural-native/references/api/icon-button.md","text":"# @neural-ui/native/icon-button\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuIconButtonComponent\n\nSelector: `neu-icon-button`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| svg | yes | `import(\"@angular/core\").InputSignal<string>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuVariant>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| loading | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| pressed | `import(\"@angular/core\").OutputEmitterRef<import(\"@ng-native/components\").TouchEvent>` |\n"},{"id":"references/api/image-viewer","source":"skills/neural-native/references/api/image-viewer.md","text":"# @neural-ui/native/image-viewer\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuImageViewerComponent\n\nSelector: `neu-image-viewer`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuImageItem[]>` |\n| index | no | `import(\"@angular/core\").ModelSignal<number>` |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| zoomOutLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| errorLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| indexChange | `import(\"@angular/core\").ModelSignal<number>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(): void;\n```\n\n## NeuImageViewerLabels\n\n```typescript\nexport interface NeuImageViewerLabels {\n readonly label?: string;\n readonly closeLabel?: string;\n readonly previousLabel?: string;\n readonly nextLabel?: string;\n readonly zoomLabel?: string;\n readonly zoomOutLabel?: string;\n readonly errorLabel?: string;\n}\n```\n"},{"id":"references/api/index","source":"skills/neural-native/references/api/index.md","text":"# Public API — @neural-ui/native@0.1.0-beta.6\n\nGenerated from the installed npm declarations, filtered by the reviewed upstream support policy. Read only the relevant entrypoint. Angular metadata and private implementation methods are excluded.\n\n| Entrypoint | Exports |\n| --- | ---: |\n| [@neural-ui/native](core.md) | 123 |\n| [@neural-ui/native/accordion](accordion.md) | 1 |\n| [@neural-ui/native/alert](alert.md) | 2 |\n| [@neural-ui/native/autocomplete](autocomplete.md) | 1 |\n| [@neural-ui/native/avatar](avatar.md) | 1 |\n| [@neural-ui/native/avatar-group](avatar-group.md) | 1 |\n| [@neural-ui/native/badge](badge.md) | 1 |\n| [@neural-ui/native/bottom-sheet](bottom-sheet.md) | 2 |\n| [@neural-ui/native/button](button.md) | 1 |\n| [@neural-ui/native/button-group](button-group.md) | 1 |\n| [@neural-ui/native/calendar](calendar.md) | 2 |\n| [@neural-ui/native/card](card.md) | 3 |\n| [@neural-ui/native/carousel](carousel.md) | 1 |\n| [@neural-ui/native/cascade-select](cascade-select.md) | 1 |\n| [@neural-ui/native/checkbox](checkbox.md) | 1 |\n| [@neural-ui/native/chip](chip.md) | 1 |\n| [@neural-ui/native/confirm-dialog](confirm-dialog.md) | 1 |\n| [@neural-ui/native/context-menu](context-menu.md) | 1 |\n| [@neural-ui/native/data-view](data-view.md) | 3 |\n| [@neural-ui/native/date-input](date-input.md) | 1 |\n| [@neural-ui/native/divider](divider.md) | 1 |\n| [@neural-ui/native/empty-state](empty-state.md) | 1 |\n| [@neural-ui/native/filter-bar](filter-bar.md) | 1 |\n| [@neural-ui/native/form-field](form-field.md) | 1 |\n| [@neural-ui/native/foundation](foundation.md) | 17 |\n| [@neural-ui/native/gallery](gallery.md) | 6 |\n| [@neural-ui/native/haptics](haptics.md) | 10 |\n| [@neural-ui/native/icon-button](icon-button.md) | 1 |\n| [@neural-ui/native/image-viewer](image-viewer.md) | 2 |\n| [@neural-ui/native/inline-editor](inline-editor.md) | 1 |\n| [@neural-ui/native/input](input.md) | 1 |\n| [@neural-ui/native/input-mask](input-mask.md) | 2 |\n| [@neural-ui/native/input-otp](input-otp.md) | 1 |\n| [@neural-ui/native/input-tags](input-tags.md) | 1 |\n| [@neural-ui/native/listbox](listbox.md) | 3 |\n| [@neural-ui/native/menu](menu.md) | 1 |\n| [@neural-ui/native/meter-group](meter-group.md) | 1 |\n| [@neural-ui/native/modal](modal.md) | 3 |\n| [@neural-ui/native/nav](nav.md) | 2 |\n| [@neural-ui/native/notification-center](notification-center.md) | 1 |\n| [@neural-ui/native/number-input](number-input.md) | 1 |\n| [@neural-ui/native/panel](panel.md) | 3 |\n| [@neural-ui/native/password](password.md) | 1 |\n| [@neural-ui/native/pick-list](pick-list.md) | 1 |\n| [@neural-ui/native/popover](popover.md) | 1 |\n| [@neural-ui/native/progress-bar](progress-bar.md) | 1 |\n| [@neural-ui/native/radio](radio.md) | 1 |\n| [@neural-ui/native/rating](rating.md) | 1 |\n| [@neural-ui/native/select](select.md) | 5 |\n| [@neural-ui/native/sidebar](sidebar.md) | 1 |\n| [@neural-ui/native/skeleton](skeleton.md) | 3 |\n| [@neural-ui/native/slider](slider.md) | 1 |\n| [@neural-ui/native/speed-dial](speed-dial.md) | 2 |\n| [@neural-ui/native/spinner](spinner.md) | 1 |\n| [@neural-ui/native/stats-card](stats-card.md) | 1 |\n| [@neural-ui/native/stepper](stepper.md) | 1 |\n| [@neural-ui/native/switch](switch.md) | 1 |\n| [@neural-ui/native/tabs](tabs.md) | 3 |\n| [@neural-ui/native/textarea](textarea.md) | 1 |\n| [@neural-ui/native/theme](theme.md) | 1 |\n| [@neural-ui/native/timeline](timeline.md) | 1 |\n| [@neural-ui/native/toast](toast.md) | 1 |\n| [@neural-ui/native/toggle-button-group](toggle-button-group.md) | 1 |\n| [@neural-ui/native/toolbar](toolbar.md) | 2 |\n| [@neural-ui/native/tree](tree.md) | 1 |\n| [@neural-ui/native/tree-select](tree-select.md) | 1 |\n| [@neural-ui/native/uploader](uploader.md) | 6 |\n| [@neural-ui/native/virtual-list](virtual-list.md) | 3 |\n\n[Public design tokens](tokens.md)\n"},{"id":"references/api/inline-editor","source":"skills/neural-native/references/api/inline-editor.md","text":"# @neural-ui/native/inline-editor\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInlineEditorComponent\n\nSelector: `neu-inline-editor`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| editing | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| saveLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| cancelLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| editingChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| saved | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| cancelled | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-mask","source":"skills/neural-native/references/api/input-mask.md","text":"# @neural-ui/native/input-mask\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## formatMask\n\n```typescript\nexport declare function formatMask(value: string, mask: string): {\n raw: string;\n display: string;\n};\n```\n\n## NeuInputMaskComponent\n\nSelector: `neu-input-mask`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| mask | yes | `import(\"@angular/core\").InputSignal<string>` |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-otp","source":"skills/neural-native/references/api/input-otp.md","text":"# @neural-ui/native/input-otp\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputOtpComponent\n\nSelector: `neu-input-otp`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| length | no | `import(\"@angular/core\").InputSignal<number>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| completed | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input-tags","source":"skills/neural-native/references/api/input-tags.md","text":"# @neural-ui/native/input-tags\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputTagsComponent\n\nSelector: `neu-input-tags`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/input","source":"skills/neural-native/references/api/input.md","text":"# @neural-ui/native/input\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuInputComponent\n\nSelector: `neu-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| keyboardType | no | `import(\"@angular/core\").InputSignal<\"default\" \\| \"email-address\" \\| \"numeric\" \\| \"phone-pad\">` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/listbox","source":"skills/neural-native/references/api/listbox.md","text":"# @neural-ui/native/listbox\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuListboxComponent\n\nSelector: `neu-listbox`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| appearance | no | `import(\"@angular/core\").InputSignal<\"cards\" \\| \"plain\">` |\n| itemTemplate | no | `import(\"@angular/core\").InputSignal<TemplateRef<NeuListboxItemContext> \\| undefined>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuListboxItemContext\n\n```typescript\nexport interface NeuListboxItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly selected: boolean;\n readonly disabled: boolean;\n}\n```\n\n## NeuListboxItemDirective\n\nSelector: `ng-template[neuListboxItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/menu","source":"skills/neural-native/references/api/menu.md","text":"# @neural-ui/native/menu\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuMenuComponent\n\nSelector: `neu-menu`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| showTrigger | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/meter-group","source":"skills/neural-native/references/api/meter-group.md","text":"# @neural-ui/native/meter-group\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuMeterGroupComponent\n\nSelector: `neu-meter-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly value: number;\n})[]>` |\n| max | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/modal","source":"skills/neural-native/references/api/modal.md","text":"# @neural-ui/native/modal\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuModalComponent\n\nSelector: `neu-modal`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| dismissible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showCloseButton | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| closed | `import(\"@angular/core\").OutputEmitterRef<\"native\" \\| \"action\" \\| \"backdrop\">` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nclose(reason?: 'native' | 'action' | 'backdrop'): void;\n```\n\n## NeuModalFooterDirective\n\nSelector: `ng-template[neuModalFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuModalHeaderDirective\n\nSelector: `ng-template[neuModalHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/nav","source":"skills/neural-native/references/api/nav.md","text":"# @neural-ui/native/nav\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNavComponent\n\nSelector: `neu-nav`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuNavItem[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuNavItem\n\n```typescript\nexport interface NeuNavItem extends NeuOption {\n readonly svg?: string;\n}\n```\n"},{"id":"references/api/notification-center","source":"skills/neural-native/references/api/notification-center.md","text":"# @neural-ui/native/notification-center\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNotificationCenterComponent\n\nSelector: `neu-notification-center`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| readIds | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| markAllLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| unreadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| readIdsChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/number-input","source":"skills/neural-native/references/api/number-input.md","text":"# @neural-ui/native/number-input\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuNumberInputComponent\n\nSelector: `neu-number-input`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/panel","source":"skills/neural-native/references/api/panel.md","text":"# @neural-ui/native/panel\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPanelComponent\n\nSelector: `neu-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| collapsed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| collapsible | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| collapsedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n## NeuPanelFooterDirective\n\nSelector: `[neuPanelFooter]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuPanelHeaderDirective\n\nSelector: `[neuPanelHeader]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/password","source":"skills/neural-native/references/api/password.md","text":"# @neural-ui/native/password\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPasswordComponent\n\nSelector: `neu-password`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| revealed | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| showLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| hideLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| revealedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/pick-list","source":"skills/neural-native/references/api/pick-list.md","text":"# @neural-ui/native/pick-list\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPickListComponent\n\nSelector: `neu-pick-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| selectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| availableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| upLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| downLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| addLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptySelectedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyAvailableLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/popover","source":"skills/neural-native/references/api/popover.md","text":"# @neural-ui/native/popover\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuPopoverComponent\n\nSelector: `neu-popover`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| title | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| dismissLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n"},{"id":"references/api/progress-bar","source":"skills/neural-native/references/api/progress-bar.md","text":"# @neural-ui/native/progress-bar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuProgressBarComponent\n\nSelector: `neu-progress-bar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/radio","source":"skills/neural-native/references/api/radio.md","text":"# @neural-ui/native/radio\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuRadioGroupComponent\n\nSelector: `neu-radio`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/rating","source":"skills/neural-native/references/api/rating.md","text":"# @neural-ui/native/rating\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuRatingComponent\n\nSelector: `neu-rating`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| clearLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/select","source":"skills/neural-native/references/api/select.md","text":"# @neural-ui/native/select\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSelectComponent\n\nSelector: `neu-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| values | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| searchable | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| searchLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| searchPlaceholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valuesChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\n## NeuSelectItemContext\n\n```typescript\nexport type NeuSelectItemContext = NeuListboxItemContext;\n```\n\n## NeuSelectItemDirective\n\nSelector: `ng-template[neuSelectItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSelectSelectedContext\n\n```typescript\nexport interface NeuSelectSelectedContext {\n readonly $implicit: readonly NeuOption[];\n readonly value: string;\n readonly values: readonly string[];\n readonly placeholder: string;\n}\n```\n\n## NeuSelectSelectedDirective\n\nSelector: `ng-template[neuSelectSelected]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/sidebar","source":"skills/neural-native/references/api/sidebar.md","text":"# @neural-ui/native/sidebar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSidebarComponent\n\nSelector: `neu-sidebar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| title | yes | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| fullWidth | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| navigate | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| opened | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/skeleton","source":"skills/neural-native/references/api/skeleton.md","text":"# @neural-ui/native/skeleton\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSkeletonAnimation\n\n```typescript\nexport type NeuSkeletonAnimation = 'pulse' | 'none';\n```\n\n## NeuSkeletonComponent\n\nSelector: `neu-skeleton`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| lines | no | `import(\"@angular/core\").InputSignal<number>` |\n| variant | no | `import(\"@angular/core\").InputSignal<NeuSkeletonVariant>` |\n| width | no | `import(\"@angular/core\").InputSignal<string \\| number \\| undefined>` |\n| height | no | `import(\"@angular/core\").InputSignal<number \\| undefined>` |\n| borderRadius | no | `import(\"@angular/core\").InputSignal<number>` |\n| gap | no | `import(\"@angular/core\").InputSignal<number>` |\n| lastLineWidth | no | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| animation | no | `import(\"@angular/core\").InputSignal<NeuSkeletonAnimation>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuSkeletonVariant\n\n```typescript\nexport type NeuSkeletonVariant = 'text' | 'rect' | 'circle';\n```\n"},{"id":"references/api/slider","source":"skills/neural-native/references/api/slider.md","text":"# @neural-ui/native/slider\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSliderComponent\n\nSelector: `neu-slider`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<number>` |\n| min | no | `import(\"@angular/core\").InputSignal<number>` |\n| max | no | `import(\"@angular/core\").InputSignal<number>` |\n| step | no | `import(\"@angular/core\").InputSignal<number>` |\n| showButtons | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| increaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| decreaseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<number>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/speed-dial","source":"skills/neural-native/references/api/speed-dial.md","text":"# @neural-ui/native/speed-dial\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSpeedDialAction\n\n```typescript\nexport interface NeuSpeedDialAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuSpeedDialComponent\n\nSelector: `neu-speed-dial`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuSpeedDialAction[]>` |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/spinner","source":"skills/neural-native/references/api/spinner.md","text":"# @neural-ui/native/spinner\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSpinnerComponent\n\nSelector: `neu-spinner`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| size | no | `import(\"@angular/core\").InputSignal<\"small\" \\| \"large\">` |\n| active | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| showLabel | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/stats-card","source":"skills/neural-native/references/api/stats-card.md","text":"# @neural-ui/native/stats-card\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuStatsCardComponent\n\nSelector: `neu-stats-card`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| value | yes | `import(\"@angular/core\").InputSignal<string \\| number>` |\n| change | no | `import(\"@angular/core\").InputSignal<string>` |\n| description | no | `import(\"@angular/core\").InputSignal<string>` |\n| svg | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/stepper","source":"skills/neural-native/references/api/stepper.md","text":"# @neural-ui/native/stepper\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuStepperComponent\n\nSelector: `neu-stepper`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| steps | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| activeStep | no | `import(\"@angular/core\").ModelSignal<number>` |\n| linear | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| completed | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| previousLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| nextLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| finishLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| activeStepChange | `import(\"@angular/core\").ModelSignal<number>` |\n| finished | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\ngoTo(index: number): void;\n```\n"},{"id":"references/api/switch","source":"skills/neural-native/references/api/switch.md","text":"# @neural-ui/native/switch\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuSwitchComponent\n\nSelector: `neu-switch`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| haptic | no | `import(\"@angular/core\").InputSignal<false \\| NeuHapticFeedback>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| labelPosition | no | `import(\"@angular/core\").InputSignal<\"left\" \\| \"right\">` |\n| size | no | `import(\"@angular/core\").InputSignal<NeuSize>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| checked | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| checkedChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tabs","source":"skills/neural-native/references/api/tabs.md","text":"# @neural-ui/native/tabs\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_TABS\n\n```typescript\nNEU_TABS: InjectionToken<{\n value: Signal<string>;\n tabs?: Signal<readonly NeuOption[]>;\n}>\n```\n\n## NeuTabPanelComponent\n\nSelector: `neu-tab-panel`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| id | yes | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n\n## NeuTabsComponent\n\nSelector: `neu-tabs`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| tabs | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignal<boolean>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n"},{"id":"references/api/textarea","source":"skills/neural-native/references/api/textarea.md","text":"# @neural-ui/native/textarea\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTextareaComponent\n\nSelector: `neu-textarea`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxLength | no | `import(\"@angular/core\").InputSignalWithTransform<number \\| undefined, number \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/theme","source":"skills/neural-native/references/api/theme.md","text":"# @neural-ui/native/theme\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuThemeComponent\n\nSelector: `neu-theme`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| scheme | no | `import(\"@angular/core\").InputSignal<NeuColorScheme>` |\n| tokens | no | `import(\"@angular/core\").InputSignal<Partial<NeuTokens>>` |\n\n| Output | Type |\n| --- | --- |\n\nSupported imperative members:\n\n```typescript\nreadonly resolvedTokens: import(\"@angular/core\").Signal<Readonly<NeuTokens>>;\n```\n"},{"id":"references/api/timeline","source":"skills/neural-native/references/api/timeline.md","text":"# @neural-ui/native/timeline\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTimelineComponent\n\nSelector: `neu-timeline`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| completedLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| pendingLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| items | no | `import(\"@angular/core\").InputSignal<readonly (NeuOption & {\n readonly date?: string;\n readonly done?: boolean;\n})[]>` |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/api/toast","source":"skills/neural-native/references/api/toast.md","text":"# @neural-ui/native/toast\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToastComponent\n\nSelector: `neu-toast`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| open | no | `import(\"@angular/core\").ModelSignal<boolean>` |\n| message | yes | `import(\"@angular/core\").InputSignal<string>` |\n| duration | no | `import(\"@angular/core\").InputSignal<number>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| actionLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| openChange | `import(\"@angular/core\").ModelSignal<boolean>` |\n| action | `import(\"@angular/core\").OutputEmitterRef<void>` |\n| dismissed | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/toggle-button-group","source":"skills/neural-native/references/api/toggle-button-group.md","text":"# @neural-ui/native/toggle-button-group\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToggleButtonGroupComponent\n\nSelector: `neu-toggle-button-group`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| options | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| tone | no | `import(\"@angular/core\").InputSignal<NeuTone>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tokens","source":"skills/neural-native/references/api/tokens.md","text":"# Native theme tokens\n\nGenerated from @neural-ui/native@0.1.0-beta.6, NeuTokens and the literal light/dark defaults.\nApply typed overrides through neu-theme. Optional semantic inks resolve from surfaces when not supplied; these are not the Web v2 CSS token catalogue.\n\n| Token | Type | Optional | Light default | Dark default |\n| --- | --- | --- | --- | --- |\n| `accent` | `string` | no | `#006ee6` | `#b5c4ff` |\n| `onAccent` | `string` | no | `#ffffff` | `#172955` |\n| `surface` | `string` | no | `#ffffff` | `#1b2230` |\n| `canvas` | `string` | no | `#f4f5f7` | `#111722` |\n| `text` | `string` | no | `#172033` | `#edf1fa` |\n| `muted` | `string` | no | `#596477` | `#b4bed0` |\n| `border` | `string` | no | `#a5afbf` | `#6c7a92` |\n| `tonal` | `string` | no | `#eff6ff` | `#293756` |\n| `danger` | `string` | no | `#dc2626` | `#ffb4ab` |\n| `success` | `string` | no | `#15803d` | `#8fdeb1` |\n| `warning` | `string` | no | `#f59e0b` | `#efd48f` |\n| `warningText` | `string` | no | `#92400e` | `#efd48f` |\n| `onWarning` | `string` | no | `#111827` | `#111722` |\n| `info` | `string` | no | `#0064d1` | `#7dd3fc` |\n| `accentText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `dangerText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `successText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `infoText` | `string` | yes | `resolved from theme surfaces` | `resolved from theme surfaces` |\n| `radius` | `number` | no | `12` | `12` |\n| `spacing` | `number` | no | `16` | `16` |\n| `fontSize` | `number` | no | `16` | `16` |\n| `duration` | `number` | no | `120` | `120` |\n| `surfaceBorder` | `string` | yes | `#e1e6ed` | `#354052` |\n| `divider` | `string` | yes | `#e7ebf0` | `#303b4c` |\n| `surfaceSecondary` | `string` | yes | `#eef1f5` | `#222d3f` |\n| `mediaCanvas` | `string` | yes | `#111722` | `#111722` |\n| `mediaText` | `string` | yes | `#edf1fa` | `#edf1fa` |\n| `mediaBarStyle` | `\"light\" \\| \"dark\"` | yes | `light` | `light` |\n"},{"id":"references/api/toolbar","source":"skills/neural-native/references/api/toolbar.md","text":"# @neural-ui/native/toolbar\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuToolbarAction\n\n```typescript\nexport interface NeuToolbarAction extends NeuOption {\n readonly svg?: string;\n}\n```\n\n## NeuToolbarComponent\n\nSelector: `neu-toolbar`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| actions | no | `import(\"@angular/core\").InputSignal<readonly NeuToolbarAction[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n\n| Output | Type |\n| --- | --- |\n| activated | `import(\"@angular/core\").OutputEmitterRef<string>` |\n"},{"id":"references/api/tree-select","source":"skills/neural-native/references/api/tree-select.md","text":"# @neural-ui/native/tree-select\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTreeSelectComponent\n\nSelector: `neu-tree-select`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| placeholder | no | `import(\"@angular/core\").InputSignal<string>` |\n| closeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| label | yes | `import(\"@angular/core\").InputSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| invalid | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| touched | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| hint | no | `import(\"@angular/core\").InputSignal<string>` |\n| required | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| requiredLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| error | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/tree","source":"skills/neural-native/references/api/tree.md","text":"# @neural-ui/native/tree\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuTreeComponent\n\nSelector: `neu-tree`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| nodes | no | `import(\"@angular/core\").InputSignal<readonly NeuTreeNode[]>` |\n| expanded | no | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| value | no | `import(\"@angular/core\").ModelSignal<string>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| readonly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| leafOnly | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| expandLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| expandedChange | `import(\"@angular/core\").ModelSignal<readonly string[]>` |\n| valueChange | `import(\"@angular/core\").ModelSignal<string>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| touch | `import(\"@angular/core\").OutputEmitterRef<void>` |\n"},{"id":"references/api/uploader","source":"skills/neural-native/references/api/uploader.md","text":"# @neural-ui/native/uploader\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NEU_FILE_PICKER\n\n```typescript\nNEU_FILE_PICKER: InjectionToken<NeuFilePicker>\n```\n\n## NeuFile\n\n```typescript\nexport interface NeuFile {\n readonly uri: string;\n readonly name: string;\n readonly size?: number;\n readonly mimeType?: string;\n}\n```\n\n## NeuFilePicker\n\n```typescript\nexport interface NeuFilePicker {\n pick(options: {\n type: readonly string[];\n multiple: boolean;\n }): Promise<readonly NeuFile[] | null>;\n}\n```\n\n## NeuUpload\n\n```typescript\nexport type NeuUpload = (file: NeuFile, progress: (percent: number) => void, signal: AbortSignal) => Promise<void>;\n```\n\n## NeuUploaderComponent\n\nSelector: `neu-uploader`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| label | no | `import(\"@angular/core\").InputSignal<string>` |\n| files | no | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| types | no | `import(\"@angular/core\").InputSignal<readonly string[]>` |\n| multiple | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| maxFiles | no | `import(\"@angular/core\").InputSignal<number>` |\n| maxBytes | no | `import(\"@angular/core\").InputSignal<number>` |\n| chooseLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| uploadLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| removeLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n| stateLabels | no | `import(\"@angular/core\").InputSignal<Readonly<Record<\"error\" \\| \"selected\" \\| \"uploading\" \\| \"complete\", string>>>` |\n| upload | no | `import(\"@angular/core\").InputSignal<NeuUpload \\| undefined>` |\n\n| Output | Type |\n| --- | --- |\n| filesChange | `import(\"@angular/core\").ModelSignal<readonly NeuUploadItem[]>` |\n| selected | `import(\"@angular/core\").OutputEmitterRef<readonly NeuFile[]>` |\n| completed | `import(\"@angular/core\").OutputEmitterRef<NeuFile>` |\n| rejected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n\n## NeuUploadItem\n\n```typescript\nexport interface NeuUploadItem {\n readonly id: string;\n readonly file: NeuFile;\n readonly state: \"selected\" | \"uploading\" | \"complete\" | \"error\";\n readonly progress: number;\n readonly error?: string;\n}\n```\n"},{"id":"references/api/virtual-list","source":"skills/neural-native/references/api/virtual-list.md","text":"# @neural-ui/native/virtual-list\n\nVerified against @neural-ui/native@0.1.0-beta.6. Generated; do not edit.\n\nTypes below are package contracts, not complete application examples. Referenced Angular/internal declaration types do not authorize imports from internal entrypoints.\n\n## NeuVirtualListComponent\n\nSelector: `neu-virtual-list`\n\n| Input | Required | Type |\n| --- | --- | --- |\n| items | no | `import(\"@angular/core\").InputSignal<readonly NeuOption[]>` |\n| disabled | no | `import(\"@angular/core\").InputSignalWithTransform<boolean, unknown>` |\n| estimatedItemHeight | no | `import(\"@angular/core\").InputSignal<number>` |\n| height | no | `import(\"@angular/core\").InputSignal<number>` |\n| emptyLabel | no | `import(\"@angular/core\").InputSignal<string>` |\n\n| Output | Type |\n| --- | --- |\n| selected | `import(\"@angular/core\").OutputEmitterRef<string>` |\n| endReached | `import(\"@angular/core\").OutputEmitterRef<void>` |\n\nSupported imperative members:\n\n```typescript\nscrollToIndex(index: number): void;\nscrollToTop(): void;\n```\n\n## NeuVirtualListItemContext\n\n```typescript\nexport interface NeuVirtualListItemContext {\n readonly $implicit: NeuOption;\n readonly index: number;\n readonly disabled: boolean;\n}\n```\n\n## NeuVirtualListItemDirective\n\nSelector: `ng-template[neuVirtualListItem]`\n\n| Input | Required | Type |\n| --- | --- | --- |\n\n| Output | Type |\n| --- | --- |\n"},{"id":"references/components","source":"skills/neural-native/references/components.md","text":"# Components and public contracts\n\nUse the generated [API index](api/index.md); it contains 67 typed entrypoints for the 64 component entries plus the root, theme and foundation. Native barrel exports duplicate many secondary exports; prefer secondary imports for discovery and application code.\n\nRead the specific contract before using a binding. Common differences from Neural Web:\n\n| Concern | Native contract |\n| --- | --- |\n| Action | `NeuButtonComponent`, `neu-button`, required `label`, output `pressed` |\n| Text control | `neu-input`, inherited `value`/`valueChange`, label, hint, required, disabled, readonly and validation inputs |\n| Checkbox or Switch | `checked`/`checkedChange`, not a string `value` |\n| Modal | Required `title`, `open`/`openChange`, `closed`, platform presentation events |\n| Collections | `NeuOption` uses stable `id`, `label`, optional `description` and `disabled` |\n| Data View | `items`, `query`, `descending`, `selected` and `refresh`; no Web Table row API |\n\nThe API references merge inherited input/output declarations; a binding absent from the derived class's own metadata may still be public. The references do not expose protected methods or Angular `ɵ` metadata. They do not authorize importing an internal physical file such as `@neural-ui/native/dist/foundation/mobile.js`.\n\nLoad collection states explicitly: loading, error, empty, populated, selected and disabled. Refresh emits an application request; provide real data loading or clearly explain an in-memory demonstration. Match the surrounding description to what the example actually does.\n\nSee [collections example](../examples/collections.ts), [forms](forms.md) and [customization](customization.md).\n"},{"id":"references/customization","source":"skills/neural-native/references/customization.md","text":"# Projection and typed templates\n\nChoose the customization API actually exported by the component; Web's similarly named directives do not apply.\n\n- Card and Panel accept projected content and their exported header/footer marker directives. Use native `view`/`text` inside them.\n- Modal and Bottom Sheet project body content and export `NeuModalHeaderDirective`/`NeuModalFooterDirective` or their Bottom Sheet counterparts for `ng-template` slots. Keep title and close semantics accessible.\n- Data View exports `NeuDataViewItemDirective` and `NeuDataViewItemContext`; Select exports item/selected directives and contexts. Listbox, Gallery and Virtual List have their own contracts. Read the corresponding [API entry](api/index.md) before choosing context fields.\n\nFor Select, the selected-template context contains the selected option array as `$implicit`, plus `value`, `values` and `placeholder`. Its item template uses the Listbox item context. Do not assume an undocumented `row`, `record`, `onSelect` or Web template variable.\n\nThe [overlay example](../examples/overlays.ts) uses a real `neuModalFooter` slot and application-owned `open` state. The supplied footer button closes the requested state; native presentation completion is a separate event. `dismissed` is an iOS native completion event and does not mean Android has failed when it is absent.\n\nAvoid placing a second large modal/calendar over a constrained modal body unless the flow and the actual platform presentation support it. Verify overflow and dismissal on the target device, not only in the browser preview.\n"},{"id":"references/forms","source":"skills/neural-native/references/forms.md","text":"# Forms and owned state\n\nUse writable signals in the application. An input's `value` model owns text; Checkbox/Switch use `checked`. Single Select uses string `value`; multiple Select uses `values: readonly string[]`. Keep option IDs stable when translating labels.\n\n```html\n<neu-input label=\"Full name\" [(value)]=\"name\" [required]=\"true\" />\n<neu-select label=\"Team\" [options]=\"teams\" [(value)]=\"team\" />\n<neu-checkbox label=\"Product updates\" [(checked)]=\"updates\" />\n<neu-button label=\"Save profile\" (pressed)=\"save()\" />\n```\n\nImport every component used; see the complete [forms example](../examples/forms.ts). `pressed` requests an action, while the application validates and saves. Do not attach a Web `click` handler to a Native Neural component in place of its declared output.\n\nAngular Signal Forms is optional. If used, import `FormField` from the matching `@angular/forms/signals` release and bind `[formField]` to the actual form tree field. Let that form own the control; do not also bind its `value`/`checked` model or a second form owner. Run strict Angular template checking for the actual field types. Classic CVA assumptions and Web Neural examples are not substitutes for checking the Native control.\n\nNeural's `NeuFormFieldComponent` arranges projected content and messages. It is not Angular's `FormField` directive. Apply the accessible name and requirement to the projected control itself.\n\nLocalize exposed hint, error, empty, search and action labels. Check date/number contracts for supported formats instead of storing translated display strings as canonical values.\n"},{"id":"references/haptics","source":"skills/neural-native/references/haptics.md","text":"# Optional native haptic feedback\n\nAvailable from `@neural-ui/native@0.1.0-beta.5`. Feedback is off unless the application opts in. Ordinary component imports do not load the optional adapter.\n\nFor a native app, install the compatible module and rebuild the application:\n\n```sh\nnpx expo install expo-haptics\n```\n\nAdd the provider to the existing Angular Native `mount()` options, preserving the template's other providers and native renderer setup:\n\n```ts\nimport { provideNeuHaptics } from '@neural-ui/native/haptics';\n\n// In the existing mount options:\nproviders: [provideNeuHaptics({\n enabled: true,\n pressStyle: 'light',\n minimumIntervalMs: 80,\n})]\n```\n\nInject `NeuHaptics` from the optional entry or from `@neural-ui/native/foundation`. Its public members are `enabled`, `available` and `play()`. `enabled` is a writable signal and supports runtime opt-out without recreating controls. `available` detects the linked native module, not the presence or state of a vibration motor. `play()` returns whether a request was dispatched; it does not confirm physical vibration.\n\nButton and internal pressable actions use the configured press style. Checkbox, Switch, Radio and Slider request a selection tick for user value changes. Disabled/readonly controls, programmatic model changes, an already-selected radio and a slider already at its bound do not request an extra selection tick. The global interval coalesces rapid calls.\n\nButton, IconButton, Checkbox, Switch, Radio and Slider expose `haptic`. Use `[haptic]=\"false\"` to silence a control, `press` to inherit the configured press style, or `selection`, `light`, `medium`, `heavy`, `soft`, `rigid`, `success`, `warning` or `error`. Do not invent this input for other component APIs merely because their internal actions can use the shared service.\n\nExplicit operation feedback belongs to the application. Call `play('success')` only after a real operation succeeds. Silence a button's ordinary press feedback when its handler explicitly requests a notification pulse, avoiding two requests for one tap. Haptics complement visible feedback and accessible state.\n\nThe [preference example](../examples/haptics.ts) runs safely without the adapter; it reports an unavailable request instead of pretending the web preview vibrated. Native applications opt in through the provider above. The browser test checks fallback behavior, not physical output. Emulators/simulators can verify calls into a real native module; physical sensation needs hardware.\n\nPublic contracts: [haptics](api/haptics.md), [foundation](api/foundation.md).\nPublished guide: https://native.neuralui.org/en/haptics\n"},{"id":"references/installation","source":"skills/neural-native/references/installation.md","text":"# Installation and renderer boundary\n\nReviewed: Neural Native `0.1.0-beta.6`, Angular Native `0.21.0`, Angular `22.2.2`, TypeScript `6.0.3`. Use the app's generated tooling and lockfile.\n\nFor a new app, follow the official template:\n\n```sh\nnpx create-expo-app@latest my-neural-app --template @ng-native/template@0.21.0\ncd my-neural-app\nnpm install --save-exact @neural-ui/native@0.1.0-beta.6\n```\n\nIn an existing compatible app only the last command is needed. Keep `@ng-native/components`, `device`, `fabric`, `icons` and the app's other framework packages aligned to the same compatible release. The package requires `react-native-svg` 15.15.4. Its published README's tested application baseline is Expo 57.0.27 / React Native 0.86.3; additional native modules must exist in the Expo/runtime or development build.\n\nThere is no Neural global CSS stylesheet or mandatory Web provider to install. Compose `neu-theme` and the controls in the generated `App`; preserve its exported name and bootstrapping. Run the template's `npm start` workflow and open its compatible native host.\n\n`@ng-native/web` 0.21.0 is a browser host for previews using `mount` and its Vite plugin. Use it for rapid interaction feedback, while retaining actual device verification for safe areas, native presentations, file selection and accessibility. Do not import `@angular/platform-browser` bootstrap as a substitute for the native app entry point.\n\nUse the skill's [forms example](../examples/forms.ts) inside the app's screen/safe-area shell. Wrap the app with `SafeAreaProvider` and use `SafeAreaView` for content that must respect insets.\n\nOfficial setup: https://ng-native.com/guide/getting-started\nLibrary installation: https://native.neuralui.org/en/installation\n"},{"id":"references/layout-accessibility","source":"skills/neural-native/references/layout-accessibility.md","text":"# Layout, accessibility and localization\n\nUse native primitives and the app's safe-area shell. `SafeAreaProvider` supplies insets; `SafeAreaView` applies them. Respect all needed edges in landscape, not just the top inset in portrait. Let collection content scroll inside a bounded layout, and leave deliberate padding/gaps between labels, fields, cards and buttons.\n\n`ScrollView`'s `contentContainerStyle` controls content padding/gap. When a focused field must not consume the first tap on another control, choose `keyboardShouldPersistTaps=\"handled\"` for that flow and verify the actual renderer behavior. Avoid focusing a search input on opening every selection popup if that unnecessarily summons the mobile keyboard.\n\nGive Neural buttons visible labels and icon actions useful accessible names through their declared inputs. Use native `text` for readable content. Keep selection visible without relying on color alone, and preserve reduced-motion behavior when styling transitions.\n\nAngular Native's `aria-live` and `accessibilityLiveRegion` announce updates on Android. iOS does not support those live regions: inject `Accessibility` from `@ng-native/device` and call `announce(message)` when an important application change is not conveyed by a focus change. Announce the change once rather than from every render. Verify spoken feedback with the platform screen reader; neither browser output nor a simulator screenshot proves it was spoken.\n\nTranslate the component's exposed action/search/empty/error/close labels and date locale. Keep option IDs and stored values independent of language. Preserve prerelease names such as Beta/Alpha as product/version terms rather than translating a package version.\n\nExercise each changed flow at a narrow width, both orientations, enlarged system text and light/dark themes. Check keyboard dismissal, scrolling, focus and return from overlays. Browser preview checks help catch clipping and action failures; they do not verify native VoiceOver/TalkBack announcements, touch exploration or native module availability. Report these as separate checks, with observed evidence rather than an accessibility certification.\n"},{"id":"references/navigation","source":"skills/neural-native/references/navigation.md","text":"# Navigation and composed screens\n\n`NeuNavComponent` is a selection/navigation control, not an application router. Supply `NeuNavItem[]`, maintain the `value` model and handle `navigate` when the app needs a navigation side effect. Do not perform the same navigation in both valueChange and navigate.\n\nThe [navigation example](../examples/navigation.ts) changes real screen content through owned state. It is an in-memory example, not a claim that a native router or persisted history has been configured.\n\nFor an actual application stack, follow Angular Native's routing documentation and the generated app configuration. Neural emits actions and state; the app owns routes, back behavior and persistence. Do not transplant Web v2 routing providers, a browser URL strategy or a Web dock into a native app without checking the framework contract.\n\nKeep a bottom navigation bar full-width in its intended layout, with readable labels and a clear selected state. Apply bottom safe-area insets at the app shell; do not add identical insets to both the shell and every nested screen. Provide distinct useful content for each destination.\n\nFramework source: https://ng-native.com\n"},{"id":"references/theming","source":"skills/neural-native/references/theming.md","text":"# Native themes and tokens\n\nWrap a screen or app in `NeuThemeComponent` from `@neural-ui/native/theme`. `scheme` is `system`, `light` or `dark`. `tokens` is `Partial<NeuTokens>` from `@neural-ui/native/foundation`; `resolvedTokens` exposes the resolved read-only theme.\n\nThe generated [token contract](api/tokens.md) lists all 28 public `NeuTokens` properties. Numeric radius, spacing, fontSize and duration are native values, not CSS strings. Optional semantic text inks resolve from theme surfaces when omitted. Light and dark defaults are recorded in the generated API snapshot.\n\n```ts\nimport type { NeuTokens } from '@neural-ui/native/foundation';\nconst brand = { accent: '#3b5bdb', onAccent: '#ffffff', radius: 16 } satisfies Partial<NeuTokens>;\n```\n\nBind `[tokens]=\"brand\"` to `neu-theme`. Fixed overrides apply in both modes, so use mode-specific values where a brand color needs different readable ink in dark mode. The [theme example](../examples/theme.ts) demonstrates a mode switch with a readable palette in each mode.\n\nUse supported native styles and resolved `--neu-*` theme variables, such as `color: var(--neu-text)` or `background-color: var(--neu-surface)`. Do not copy the Web v2 catalogue's hundreds of CSS tokens or assume each is a Native override. Component-specific styles still belong to the actual renderer; browser DOM CSS and arbitrary layout features may not map to iOS/Android.\n\nPreserve safe-area and text-scaling behavior when changing density. Customizing a theme does not justify changing a control's data or action contract.\n"},{"id":"references/versioning","source":"skills/neural-native/references/versioning.md","text":"# Versions, maintenance and optional MCP\n\nThis skill release is 0.1.2 and its verified package baseline is `@neural-ui/native@0.1.0-beta.6`, Angular Native 0.21.0 and Angular 22.2.2. Beta APIs can change before 1.0. The installed package and lockfile are the contract for an existing application.\n\nUse `neural-ui-mcp@0.2.3` for this Native baseline and Web Core 2.0.4. MCP 0.2.2 retains Native beta.2; use that release for applications that still require the older contract. MCP 0.1.0 only understands Web and cannot answer Native requests.\n\nUse an explicitly selected Native call:\n\n```json\n{\"library\":\"native\",\"version\":\"0.1.0-beta.6\",\"entrypoint\":\"@neural-ui/native/input\",\"symbol\":\"NeuInputComponent\"}\n```\n\nThis is an input for `get_api`. `list_components`, `search_documentation`, `get_example` and `validate_usage` use the same `library`/`version` fields. Native example IDs are forms, collections, navigation, overlays, theme and haptics. Resources use `neural-native://docs/` or `neural-native://examples/`; Web resources retain `neural-ui://`.\n\nThe server is local stdio and read-only. It does not install dependencies, inspect user files, execute supplied code, modify projects or certify a build. The skill also works without MCP using its packaged references.\n\nFor maintainers, update the exact dependency and reviewed source/integrity record, regenerate the declaration-derived API, review removed/changed bindings and token defaults, adapt examples and rerun compilation, browser and MCP consumer tests. Do not silently serve another version under the existing baseline. Keep native device validation separate from Web preview results.\n"}],"examples":[{"id":"examples/collections","source":"skills/neural-native/examples/collections.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuOption } from '@neural-ui/native';\nimport { NeuDataViewComponent } from '@neural-ui/native/data-view';\n\n@Component({\n selector: 'native-collection-example',\n imports: [Text, View, NeuDataViewComponent],\n template: `\n <view class=\"content\">\n <text class=\"heading\">The people behind it.</text>\n <text class=\"muted\">Find a teammate, change the order or refresh this local list.</text>\n <neu-data-view [items]=\"people\" [(query)]=\"query\" [(descending)]=\"descending\"\n searchLabel=\"Search people\" sortLabel=\"Reverse name order\" refreshLabel=\"Refresh local list\"\n emptyLabel=\"No people match your search\" (selected)=\"select($event)\" (refresh)=\"refresh()\" />\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .heading { font-size: 26px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeCollectionsExample {\n readonly query = signal('');\n readonly descending = signal(false);\n readonly feedback = signal('Choose a person to see their name.');\n readonly people: readonly NeuOption[] = [\n { id: 'ada', label: 'Ada Lovelace', description: 'Product designer' },\n { id: 'grace', label: 'Grace Hopper', description: 'Mobile engineer' },\n { id: 'linus', label: 'Linus Torvalds', description: 'Platform engineer' },\n ];\n select(id: string): void {\n this.feedback.set(`Selected: ${this.people.find(person => person.id === id)?.label ?? id}`);\n }\n refresh(): void {\n this.query.set('');\n this.feedback.set('Local list refreshed. No server request was made.');\n }\n}\n"},{"id":"examples/forms","source":"skills/neural-native/examples/forms.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuOption } from '@neural-ui/native';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\nimport { NeuCheckboxComponent } from '@neural-ui/native/checkbox';\nimport { NeuInputComponent } from '@neural-ui/native/input';\nimport { NeuSelectComponent } from '@neural-ui/native/select';\n\n@Component({\n selector: 'native-profile-example',\n imports: [Text, View, NeuButtonComponent, NeuCheckboxComponent, NeuInputComponent, NeuSelectComponent],\n template: `\n <view class=\"content\">\n <text class=\"eyebrow\">YOUR WORKSPACE</text>\n <text class=\"heading\">Make it yours.</text>\n <text class=\"muted\">A name and a team to help everyone find you.</text>\n <neu-input label=\"Full name\" [(value)]=\"name\" [required]=\"true\" hint=\"Visible to your teammates\" />\n <neu-select label=\"Team\" [options]=\"teams\" [(value)]=\"team\" closeLabel=\"Close teams\" />\n <neu-checkbox label=\"Send me product updates\" [(checked)]=\"updates\" />\n <neu-button label=\"Save profile\" [fullWidth]=\"true\" (pressed)=\"save()\" />\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .eyebrow { font-size: 12px; color: var(--neu-muted); }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeFormsExample {\n readonly name = signal('Ada Lovelace');\n readonly team = signal('design');\n readonly updates = signal(false);\n readonly feedback = signal('Changes stay in this example.');\n readonly teams: readonly NeuOption[] = [\n { id: 'design', label: 'Design', description: 'Product interfaces' },\n { id: 'engineering', label: 'Engineering', description: 'Application development' },\n ];\n save(): void {\n this.feedback.set(this.name().trim() ? `Saved locally: ${this.name().trim()}` : 'Enter your name.');\n }\n}\n"},{"id":"examples/haptics","source":"skills/neural-native/examples/haptics.ts","text":"import { Component, inject, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuHaptics } from '@neural-ui/native/foundation';\nimport { NeuSwitchComponent } from '@neural-ui/native/switch';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\n\n@Component({\n selector: 'native-haptics-example',\n imports: [Text, View, NeuSwitchComponent, NeuButtonComponent],\n template: `\n <view class=\"content\">\n <neu-switch label=\"Touch feedback\"\n [checked]=\"haptics.enabled()\"\n (checkedChange)=\"haptics.enabled.set($event)\"\n [haptic]=\"false\" />\n <neu-button label=\"Test feedback\" [haptic]=\"false\"\n [disabled]=\"!haptics.enabled()\" (pressed)=\"testFeedback()\" />\n <text>{{ feedback() }}</text>\n </view>\n `,\n styles: `.content { padding: 24px; gap: 16px; }`,\n})\nexport class NativeHapticsExample {\n readonly haptics = inject(NeuHaptics);\n readonly feedback = signal('Feedback is optional.');\n\n testFeedback(): void {\n this.feedback.set(this.haptics.play('success')\n ? 'Native feedback requested.'\n : 'Native feedback is unavailable or disabled.');\n }\n}\n"},{"id":"examples/navigation","source":"skills/neural-native/examples/navigation.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuCardComponent } from '@neural-ui/native/card';\nimport { NeuNavComponent, type NeuNavItem } from '@neural-ui/native/nav';\n\n@Component({\n selector: 'native-navigation-example',\n imports: [Text, View, NeuCardComponent, NeuNavComponent],\n template: `\n <view class=\"screen\">\n <view class=\"body\">\n @switch (destination()) {\n @case ('projects') {\n <text class=\"heading\">Room for the next idea.</text>\n <neu-card title=\"Mobile launch\" description=\"Design review ready\">\n <text class=\"muted\">Three screens to review with your team.</text>\n </neu-card>\n }\n @case ('account') {\n <text class=\"heading\">Your workspace profile.</text>\n <neu-card title=\"Ada Lovelace\" description=\"Product designer\">\n <text class=\"muted\">Design team · Notifications enabled</text>\n </neu-card>\n }\n @default {\n <text class=\"heading\">A good day to make something.</text>\n <neu-card title=\"Today\" description=\"Your team is in sync\">\n <text class=\"muted\">Two reviews complete. One new idea to explore.</text>\n </neu-card>\n }\n }\n </view>\n <neu-nav label=\"Workspace destinations\" [items]=\"destinations\" [(value)]=\"destination\" />\n </view>\n `,\n styles: `\n :host, .screen { flex: 1; }\n .body { flex: 1; padding: 20px; gap: 20px; }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 15px; color: var(--neu-muted); }\n `,\n})\nexport class NativeNavigationExample {\n readonly destination = signal('home');\n readonly destinations: readonly NeuNavItem[] = [\n { id: 'home', label: 'Home' },\n { id: 'projects', label: 'Projects' },\n { id: 'account', label: 'Account' },\n ];\n}\n"},{"id":"examples/overlays","source":"skills/neural-native/examples/overlays.ts","text":"import { Component, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\nimport { NeuModalComponent, NeuModalFooterDirective } from '@neural-ui/native/modal';\n\n@Component({\n selector: 'native-overlay-example',\n imports: [Text, View, NeuButtonComponent, NeuModalComponent, NeuModalFooterDirective],\n template: `\n <view class=\"content\">\n <text class=\"heading\">One place for your team.</text>\n <text class=\"muted\">A short explanation, with an explicit way back.</text>\n <neu-button label=\"About this workspace\" (pressed)=\"open.set(true)\" />\n <text class=\"muted\">{{ feedback() }}</text>\n <neu-modal title=\"Product workspace\" [(open)]=\"open\" closeLabel=\"Close workspace details\"\n (closed)=\"feedback.set('Workspace details closed.')\">\n <text class=\"message\">A shared place for your team's plans and documents.</text>\n <ng-template neuModalFooter>\n <neu-button label=\"Got it\" size=\"sm\" (pressed)=\"open.set(false)\" />\n </ng-template>\n </neu-modal>\n </view>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; }\n .heading { font-size: 26px; font-weight: 700; color: var(--neu-text); }\n .message { font-size: 16px; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeOverlaysExample {\n readonly open = signal(false);\n readonly feedback = signal('Details are closed.');\n}\n"},{"id":"examples/theme","source":"skills/neural-native/examples/theme.ts","text":"import { Component, computed, signal } from '@angular/core';\nimport { Text, View } from '@ng-native/components';\nimport type { NeuTokens } from '@neural-ui/native/foundation';\nimport { NeuThemeComponent } from '@neural-ui/native/theme';\nimport { NeuSwitchComponent } from '@neural-ui/native/switch';\nimport { NeuCardComponent } from '@neural-ui/native/card';\nimport { NeuButtonComponent } from '@neural-ui/native/button';\n\n@Component({\n selector: 'native-theme-example',\n imports: [Text, View, NeuThemeComponent, NeuSwitchComponent, NeuCardComponent, NeuButtonComponent],\n template: `\n <neu-theme [scheme]=\"dark() ? 'dark' : 'light'\" [tokens]=\"brand()\">\n <view class=\"content\">\n <text class=\"heading\">A little more you.</text>\n <neu-switch label=\"Dark appearance\" [(checked)]=\"dark\" />\n <neu-card title=\"Neural, with your palette\" description=\"Shared tokens, real controls\">\n <view class=\"card-content\">\n <text class=\"muted\">Readable surfaces and controls in both appearances.</text>\n <neu-button label=\"Try the brand color\" (pressed)=\"feedback.set('Brand action pressed.')\" />\n </view>\n </neu-card>\n <text class=\"muted\">{{ feedback() }}</text>\n </view>\n </neu-theme>\n `,\n styles: `\n .content { padding: 20px; gap: 16px; background-color: var(--neu-canvas); }\n .card-content { gap: 16px; }\n .heading { font-size: 28px; font-weight: 700; color: var(--neu-text); }\n .muted { font-size: 14px; color: var(--neu-muted); }\n `,\n})\nexport class NativeThemeExample {\n readonly dark = signal(false);\n readonly feedback = signal('Switch appearance to compare the palette.');\n readonly brand = computed(() => ({\n accent: this.dark() ? '#b9b1ff' : '#5941c6',\n onAccent: this.dark() ? '#23164b' : '#ffffff',\n radius: 16,\n } satisfies Partial<NeuTokens>));\n}\n"}]}
|