@neural-ui/core 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +56 -88
  2. package/accordion/package.json +4 -0
  3. package/alert/package.json +4 -0
  4. package/autocomplete/package.json +4 -0
  5. package/avatar/package.json +4 -0
  6. package/badge/package.json +4 -0
  7. package/block-ui/package.json +4 -0
  8. package/breadcrumb/package.json +4 -0
  9. package/button/package.json +4 -0
  10. package/card/package.json +4 -0
  11. package/chart/package.json +4 -0
  12. package/checkbox/package.json +4 -0
  13. package/chip/package.json +4 -0
  14. package/code-block/package.json +4 -0
  15. package/color-picker/package.json +4 -0
  16. package/command-palette/package.json +4 -0
  17. package/confirm-dialog/package.json +4 -0
  18. package/context-menu/package.json +4 -0
  19. package/dashboard-grid/package.json +4 -0
  20. package/date-input/package.json +4 -0
  21. package/divider/package.json +4 -0
  22. package/empty-state/package.json +4 -0
  23. package/fesm2022/neural-ui-core-accordion.mjs +162 -0
  24. package/fesm2022/neural-ui-core-accordion.mjs.map +1 -0
  25. package/fesm2022/neural-ui-core-alert.mjs +116 -0
  26. package/fesm2022/neural-ui-core-alert.mjs.map +1 -0
  27. package/fesm2022/neural-ui-core-autocomplete.mjs +332 -0
  28. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -0
  29. package/fesm2022/neural-ui-core-avatar.mjs +109 -0
  30. package/fesm2022/neural-ui-core-avatar.mjs.map +1 -0
  31. package/fesm2022/neural-ui-core-badge.mjs +54 -0
  32. package/fesm2022/neural-ui-core-badge.mjs.map +1 -0
  33. package/fesm2022/neural-ui-core-block-ui.mjs +95 -0
  34. package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -0
  35. package/fesm2022/neural-ui-core-breadcrumb.mjs +84 -0
  36. package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -0
  37. package/fesm2022/neural-ui-core-button.mjs +125 -0
  38. package/fesm2022/neural-ui-core-button.mjs.map +1 -0
  39. package/fesm2022/neural-ui-core-card.mjs +69 -0
  40. package/fesm2022/neural-ui-core-card.mjs.map +1 -0
  41. package/fesm2022/neural-ui-core-chart.mjs +287 -0
  42. package/fesm2022/neural-ui-core-chart.mjs.map +1 -0
  43. package/fesm2022/neural-ui-core-checkbox.mjs +138 -0
  44. package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -0
  45. package/fesm2022/neural-ui-core-chip.mjs +130 -0
  46. package/fesm2022/neural-ui-core-chip.mjs.map +1 -0
  47. package/fesm2022/neural-ui-core-code-block.mjs +250 -0
  48. package/fesm2022/neural-ui-core-code-block.mjs.map +1 -0
  49. package/fesm2022/neural-ui-core-color-picker.mjs +435 -0
  50. package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -0
  51. package/fesm2022/neural-ui-core-command-palette.mjs +235 -0
  52. package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -0
  53. package/fesm2022/neural-ui-core-confirm-dialog.mjs +118 -0
  54. package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -0
  55. package/fesm2022/neural-ui-core-context-menu.mjs +158 -0
  56. package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -0
  57. package/fesm2022/neural-ui-core-dashboard-grid.mjs +144 -0
  58. package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -0
  59. package/fesm2022/neural-ui-core-date-input.mjs +1332 -0
  60. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -0
  61. package/fesm2022/neural-ui-core-divider.mjs +54 -0
  62. package/fesm2022/neural-ui-core-divider.mjs.map +1 -0
  63. package/fesm2022/neural-ui-core-empty-state.mjs +84 -0
  64. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -0
  65. package/fesm2022/neural-ui-core-filter-bar.mjs +118 -0
  66. package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -0
  67. package/fesm2022/neural-ui-core-icon.mjs +50 -0
  68. package/fesm2022/neural-ui-core-icon.mjs.map +1 -0
  69. package/fesm2022/neural-ui-core-image-viewer.mjs +309 -0
  70. package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -0
  71. package/fesm2022/neural-ui-core-input-otp.mjs +192 -0
  72. package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -0
  73. package/fesm2022/neural-ui-core-input.mjs +320 -0
  74. package/fesm2022/neural-ui-core-input.mjs.map +1 -0
  75. package/fesm2022/neural-ui-core-knob.mjs +323 -0
  76. package/fesm2022/neural-ui-core-knob.mjs.map +1 -0
  77. package/fesm2022/neural-ui-core-meter-group.mjs +122 -0
  78. package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -0
  79. package/fesm2022/neural-ui-core-modal.mjs +156 -0
  80. package/fesm2022/neural-ui-core-modal.mjs.map +1 -0
  81. package/fesm2022/neural-ui-core-multiselect.mjs +748 -0
  82. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -0
  83. package/fesm2022/neural-ui-core-nav.mjs +952 -0
  84. package/fesm2022/neural-ui-core-nav.mjs.map +1 -0
  85. package/fesm2022/neural-ui-core-notification-center.mjs +264 -0
  86. package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -0
  87. package/fesm2022/neural-ui-core-number-input.mjs +331 -0
  88. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -0
  89. package/fesm2022/neural-ui-core-pagination.mjs +198 -0
  90. package/fesm2022/neural-ui-core-pagination.mjs.map +1 -0
  91. package/fesm2022/neural-ui-core-popover.mjs +207 -0
  92. package/fesm2022/neural-ui-core-popover.mjs.map +1 -0
  93. package/fesm2022/neural-ui-core-progress-bar.mjs +105 -0
  94. package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -0
  95. package/fesm2022/neural-ui-core-radio.mjs +171 -0
  96. package/fesm2022/neural-ui-core-radio.mjs.map +1 -0
  97. package/fesm2022/neural-ui-core-rating.mjs +151 -0
  98. package/fesm2022/neural-ui-core-rating.mjs.map +1 -0
  99. package/fesm2022/neural-ui-core-select.mjs +638 -0
  100. package/fesm2022/neural-ui-core-select.mjs.map +1 -0
  101. package/fesm2022/neural-ui-core-sidebar.mjs +214 -0
  102. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -0
  103. package/fesm2022/neural-ui-core-skeleton.mjs +40 -0
  104. package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -0
  105. package/fesm2022/neural-ui-core-slider.mjs +146 -0
  106. package/fesm2022/neural-ui-core-slider.mjs.map +1 -0
  107. package/fesm2022/neural-ui-core-spinner.mjs +113 -0
  108. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -0
  109. package/fesm2022/neural-ui-core-split-button.mjs +252 -0
  110. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -0
  111. package/fesm2022/neural-ui-core-splitter.mjs +174 -0
  112. package/fesm2022/neural-ui-core-splitter.mjs.map +1 -0
  113. package/fesm2022/neural-ui-core-stats-card.mjs +163 -0
  114. package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -0
  115. package/fesm2022/neural-ui-core-stepper.mjs +204 -0
  116. package/fesm2022/neural-ui-core-stepper.mjs.map +1 -0
  117. package/fesm2022/neural-ui-core-switch.mjs +111 -0
  118. package/fesm2022/neural-ui-core-switch.mjs.map +1 -0
  119. package/fesm2022/neural-ui-core-table.mjs +1860 -0
  120. package/fesm2022/neural-ui-core-table.mjs.map +1 -0
  121. package/fesm2022/neural-ui-core-tabs.mjs +246 -0
  122. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -0
  123. package/fesm2022/neural-ui-core-textarea.mjs +188 -0
  124. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -0
  125. package/fesm2022/neural-ui-core-timeline.mjs +117 -0
  126. package/fesm2022/neural-ui-core-timeline.mjs.map +1 -0
  127. package/fesm2022/neural-ui-core-toast.mjs +171 -0
  128. package/fesm2022/neural-ui-core-toast.mjs.map +1 -0
  129. package/fesm2022/neural-ui-core-toggle-button-group.mjs +162 -0
  130. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -0
  131. package/fesm2022/neural-ui-core-toolbar.mjs +67 -0
  132. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -0
  133. package/fesm2022/neural-ui-core-tooltip.mjs +151 -0
  134. package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -0
  135. package/fesm2022/neural-ui-core-url-state.mjs +96 -0
  136. package/fesm2022/neural-ui-core-url-state.mjs.map +1 -0
  137. package/fesm2022/neural-ui-core-virtual-list.mjs +126 -0
  138. package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -0
  139. package/fesm2022/neural-ui-core.mjs +11 -8544
  140. package/fesm2022/neural-ui-core.mjs.map +1 -1
  141. package/filter-bar/package.json +4 -0
  142. package/icon/package.json +4 -0
  143. package/image-viewer/package.json +4 -0
  144. package/input/package.json +4 -0
  145. package/input-otp/package.json +4 -0
  146. package/knob/package.json +4 -0
  147. package/meter-group/package.json +4 -0
  148. package/modal/package.json +4 -0
  149. package/multiselect/package.json +4 -0
  150. package/nav/package.json +4 -0
  151. package/notification-center/package.json +4 -0
  152. package/number-input/package.json +4 -0
  153. package/package.json +252 -5
  154. package/pagination/package.json +4 -0
  155. package/popover/package.json +4 -0
  156. package/progress-bar/package.json +4 -0
  157. package/radio/package.json +4 -0
  158. package/rating/package.json +4 -0
  159. package/select/package.json +4 -0
  160. package/sidebar/package.json +4 -0
  161. package/skeleton/package.json +4 -0
  162. package/slider/package.json +4 -0
  163. package/spinner/package.json +4 -0
  164. package/split-button/package.json +4 -0
  165. package/splitter/package.json +4 -0
  166. package/stats-card/package.json +4 -0
  167. package/stepper/package.json +4 -0
  168. package/styles/_tokens.scss +202 -0
  169. package/styles.scss +1 -0
  170. package/switch/package.json +4 -0
  171. package/table/package.json +4 -0
  172. package/tabs/package.json +4 -0
  173. package/textarea/package.json +4 -0
  174. package/timeline/package.json +4 -0
  175. package/toast/package.json +4 -0
  176. package/toggle-button-group/package.json +4 -0
  177. package/toolbar/package.json +4 -0
  178. package/tooltip/package.json +4 -0
  179. package/types/neural-ui-core-accordion.d.ts +55 -0
  180. package/types/neural-ui-core-alert.d.ts +47 -0
  181. package/types/neural-ui-core-autocomplete.d.ts +69 -0
  182. package/types/neural-ui-core-avatar.d.ts +39 -0
  183. package/types/neural-ui-core-badge.d.ts +36 -0
  184. package/types/neural-ui-core-block-ui.d.ts +46 -0
  185. package/types/neural-ui-core-breadcrumb.d.ts +38 -0
  186. package/types/neural-ui-core-button.d.ts +55 -0
  187. package/types/neural-ui-core-card.d.ts +37 -0
  188. package/types/neural-ui-core-chart.d.ts +236 -0
  189. package/types/neural-ui-core-checkbox.d.ts +33 -0
  190. package/types/neural-ui-core-chip.d.ts +53 -0
  191. package/types/neural-ui-core-code-block.d.ts +55 -0
  192. package/types/neural-ui-core-color-picker.d.ts +55 -0
  193. package/types/neural-ui-core-command-palette.d.ts +56 -0
  194. package/types/neural-ui-core-confirm-dialog.d.ts +50 -0
  195. package/types/neural-ui-core-context-menu.d.ts +66 -0
  196. package/types/neural-ui-core-dashboard-grid.d.ts +41 -0
  197. package/types/neural-ui-core-date-input.d.ts +178 -0
  198. package/types/neural-ui-core-divider.d.ts +20 -0
  199. package/types/neural-ui-core-empty-state.d.ts +32 -0
  200. package/types/neural-ui-core-filter-bar.d.ts +49 -0
  201. package/types/neural-ui-core-icon.d.ts +33 -0
  202. package/types/neural-ui-core-image-viewer.d.ts +67 -0
  203. package/types/neural-ui-core-input-otp.d.ts +49 -0
  204. package/types/neural-ui-core-input.d.ts +86 -0
  205. package/types/neural-ui-core-knob.d.ts +68 -0
  206. package/types/neural-ui-core-meter-group.d.ts +52 -0
  207. package/types/neural-ui-core-modal.d.ts +54 -0
  208. package/types/neural-ui-core-multiselect.d.ts +129 -0
  209. package/types/neural-ui-core-nav.d.ts +69 -0
  210. package/types/neural-ui-core-notification-center.d.ts +60 -0
  211. package/types/neural-ui-core-number-input.d.ts +63 -0
  212. package/types/neural-ui-core-pagination.d.ts +30 -0
  213. package/types/neural-ui-core-popover.d.ts +73 -0
  214. package/types/neural-ui-core-progress-bar.d.ts +35 -0
  215. package/types/neural-ui-core-radio.d.ts +51 -0
  216. package/types/neural-ui-core-rating.d.ts +34 -0
  217. package/types/neural-ui-core-select.d.ts +161 -0
  218. package/types/neural-ui-core-sidebar.d.ts +57 -0
  219. package/types/neural-ui-core-skeleton.d.ts +22 -0
  220. package/types/neural-ui-core-slider.d.ts +42 -0
  221. package/types/neural-ui-core-spinner.d.ts +38 -0
  222. package/types/neural-ui-core-split-button.d.ts +65 -0
  223. package/types/neural-ui-core-splitter.d.ts +28 -0
  224. package/types/neural-ui-core-stats-card.d.ts +39 -0
  225. package/types/neural-ui-core-stepper.d.ts +51 -0
  226. package/types/neural-ui-core-switch.d.ts +34 -0
  227. package/types/neural-ui-core-table.d.ts +282 -0
  228. package/types/neural-ui-core-tabs.d.ts +76 -0
  229. package/types/neural-ui-core-textarea.d.ts +52 -0
  230. package/types/neural-ui-core-timeline.d.ts +33 -0
  231. package/types/neural-ui-core-toast.d.ts +70 -0
  232. package/types/neural-ui-core-toggle-button-group.d.ts +63 -0
  233. package/types/neural-ui-core-toolbar.d.ts +36 -0
  234. package/types/neural-ui-core-tooltip.d.ts +48 -0
  235. package/types/neural-ui-core-url-state.d.ts +58 -0
  236. package/types/neural-ui-core-virtual-list.d.ts +60 -0
  237. package/types/neural-ui-core.d.ts +3 -2105
  238. package/url-state/package.json +4 -0
  239. package/virtual-list/package.json +4 -0
@@ -42,6 +42,8 @@
42
42
  --neu-text-muted: #64748b; // Slate-500
43
43
  --neu-text-disabled: #94a3b8; // Slate-400
44
44
  --neu-text-inverse: #ffffff;
45
+ --neu-knob-display-color: var(--neu-text);
46
+ --neu-knob-label-color: var(--neu-text-muted);
45
47
 
46
48
  --neu-font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
47
49
  --neu-font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
@@ -133,6 +135,17 @@
133
135
  --neu-shadow-lg: 0 10px 30px rgba(15, 23, 42, 0.1), 0 4px 8px rgba(15, 23, 42, 0.04);
134
136
  --neu-shadow-glow: 0 0 20px rgba(0, 122, 255, 0.2);
135
137
 
138
+ // ------------------------------------------------
139
+ // Focus ring — anillo de enfoque accesible
140
+ // Modern browsers (color-mix) auto-adapt on theme change.
141
+ // ------------------------------------------------
142
+ --neu-focus-ring: 0 0 0 3px rgba(0, 122, 255, 0.15);
143
+ --neu-focus-ring-strong: 0 0 0 3px rgba(0, 122, 255, 0.35);
144
+ @supports (color: color-mix(in srgb, red, blue)) {
145
+ --neu-focus-ring: 0 0 0 3px color-mix(in srgb, var(--neu-primary) 25%, transparent);
146
+ --neu-focus-ring-strong: 0 0 0 3px color-mix(in srgb, var(--neu-primary) 50%, transparent);
147
+ }
148
+
136
149
  // ------------------------------------------------
137
150
  // Iconos (Lucide via @ng-icons)
138
151
  // ------------------------------------------------
@@ -154,6 +167,152 @@
154
167
  --neu-toast-bg: var(--neu-surface);
155
168
  --neu-toast-radius: 10px;
156
169
  --neu-toast-shadow: 0 8px 24px rgba(15, 23, 42, 0.12), 0 2px 6px rgba(15, 23, 42, 0.06);
170
+
171
+ // ------------------------------------------------
172
+ // Tabla — density padding (v1.3.0)
173
+ // ------------------------------------------------
174
+ --neu-table-density-compact-padding: 0.375rem 0.625rem;
175
+ --neu-table-density-relaxed-padding: 1.125rem 1.25rem;
176
+
177
+ // ------------------------------------------------
178
+ // Alert (v1.3.0)
179
+ // ------------------------------------------------
180
+ --neu-alert-info-bg: var(--neu-info-bg);
181
+ --neu-alert-info-text: var(--neu-info-text);
182
+ --neu-alert-info-border: rgba(0, 122, 255, 0.2);
183
+
184
+ --neu-alert-success-bg: var(--neu-success-bg);
185
+ --neu-alert-success-text: var(--neu-success-text);
186
+ --neu-alert-success-border: rgba(16, 185, 129, 0.2);
187
+
188
+ --neu-alert-warning-bg: var(--neu-warning-bg);
189
+ --neu-alert-warning-text: var(--neu-warning-text);
190
+ --neu-alert-warning-border: rgba(245, 158, 11, 0.2);
191
+
192
+ --neu-alert-danger-bg: var(--neu-error-bg);
193
+ --neu-alert-danger-text: var(--neu-error-text);
194
+ --neu-alert-danger-border: rgba(239, 68, 68, 0.2);
195
+
196
+ // ------------------------------------------------
197
+ // Popover (v1.3.0)
198
+ // ------------------------------------------------
199
+ --neu-popover-bg: var(--neu-surface);
200
+ --neu-popover-border: var(--neu-border);
201
+ --neu-popover-shadow: var(--neu-shadow-lg);
202
+ --neu-popover-radius: var(--neu-radius-lg);
203
+
204
+ // ------------------------------------------------
205
+ // Context Menu (v1.3.0)
206
+ // ------------------------------------------------
207
+ --neu-context-menu-bg: var(--neu-surface);
208
+ --neu-context-menu-shadow: var(--neu-shadow-lg);
209
+ --neu-context-menu-hover: var(--neu-surface-2);
210
+ --neu-context-menu-radius: var(--neu-radius);
211
+
212
+ // ------------------------------------------------
213
+ // Meter Group (v1.3.0)
214
+ // ------------------------------------------------
215
+ --neu-meter-track-bg: var(--neu-surface-3);
216
+ --neu-meter-radius: var(--neu-radius-full);
217
+
218
+ // ------------------------------------------------
219
+ // Splitter (v1.3.0)
220
+ // ------------------------------------------------
221
+ --neu-splitter-handle-bg: var(--neu-surface-3);
222
+
223
+ // ------------------------------------------------
224
+ // Knob (v1.3.0)
225
+ // ------------------------------------------------
226
+ --neu-knob-track: var(--neu-surface-3);
227
+
228
+ // ------------------------------------------------
229
+ // Color Picker (v1.3.0)
230
+ // ------------------------------------------------
231
+ --neu-color-picker-bg: var(--neu-surface);
232
+ --neu-color-picker-shadow: var(--neu-shadow-lg);
233
+
234
+ // ------------------------------------------------
235
+ // Command Palette (v1.3.0)
236
+ // ------------------------------------------------
237
+ --neu-cmd-bg: var(--neu-surface);
238
+ --neu-cmd-highlight: var(--neu-primary-50);
239
+ --neu-cmd-shadow: var(--neu-shadow-lg);
240
+ --neu-cmd-radius: var(--neu-radius-xl);
241
+
242
+ // ------------------------------------------------
243
+ // Input OTP (v1.3.0)
244
+ // ------------------------------------------------
245
+ --neu-otp-cell-size: 2.75rem;
246
+ --neu-otp-cell-radius: var(--neu-radius);
247
+ --neu-otp-cell-border: var(--neu-border);
248
+ --neu-otp-cell-focus-border: var(--neu-primary);
249
+
250
+ // ------------------------------------------------
251
+ // Number Input (v1.3.0)
252
+ // ------------------------------------------------
253
+ --neu-number-input-btn-size: 2rem;
254
+
255
+ // ------------------------------------------------
256
+ // Block UI (v1.3.0)
257
+ // ------------------------------------------------
258
+ --neu-block-ui-bg: rgba(255, 255, 255, 0.6);
259
+ --neu-block-ui-radius: var(--neu-radius-lg);
260
+
261
+ // ------------------------------------------------
262
+ // Notification Center (v1.3.0)
263
+ // ------------------------------------------------
264
+ --neu-notification-unread-bg: rgba(0, 122, 255, 0.08);
265
+
266
+ // ------------------------------------------------
267
+ // Overlay / Backdrop — fondos semitransparentes de capas / semi-transparent layer backgrounds
268
+ // ------------------------------------------------
269
+ --neu-overlay-bg: rgba(15, 23, 42, 0.45);
270
+ --neu-overlay-bg-soft: rgba(15, 23, 42, 0.35);
271
+
272
+ // ------------------------------------------------
273
+ // Table — badge cell semantic colors / colores semánticos de celda badge
274
+ // ------------------------------------------------
275
+ --neu-table-badge-success-bg: rgba(16, 185, 129, 0.12);
276
+ --neu-table-badge-success-text: #059669;
277
+ --neu-table-badge-warning-bg: rgba(245, 158, 11, 0.12);
278
+ --neu-table-badge-warning-text: #d97706;
279
+ --neu-table-badge-danger-bg: rgba(239, 68, 68, 0.12);
280
+ --neu-table-badge-danger-text: #dc2626;
281
+
282
+ // ------------------------------------------------
283
+ // Alert — dismiss button hover / hover del botón de cierre
284
+ // ------------------------------------------------
285
+ --neu-alert-dismiss-hover-bg: rgb(0 0 0 / 8%);
286
+
287
+ // ------------------------------------------------
288
+ // Split Button — divider on primary variant / separador en variante primary
289
+ // ------------------------------------------------
290
+ --neu-split-button-primary-divider: rgba(255, 255, 255, 0.25);
291
+
292
+ // ------------------------------------------------
293
+ // Image Viewer — dark lightbox overlay (always dark) / overlay lightbox oscuro (siempre oscuro)
294
+ // ------------------------------------------------
295
+ --neu-image-viewer-bg: rgb(0 0 0 / 0.9);
296
+ --neu-image-viewer-muted: rgb(255 255 255 / 0.7);
297
+ --neu-image-viewer-btn-hover: rgb(255 255 255 / 0.15);
298
+ --neu-image-viewer-caption: rgb(255 255 255 / 0.65);
299
+ --neu-image-viewer-arrow-bg: rgb(255 255 255 / 0.12);
300
+ --neu-image-viewer-arrow-hover: rgb(255 255 255 / 0.25);
301
+
302
+ // ------------------------------------------------
303
+ // Code Block — Tokyo Night theme (always dark) / tema Tokyo Night (siempre oscuro)
304
+ // ------------------------------------------------
305
+ --neu-code-block-bg: #1a1b26;
306
+ --neu-code-block-bar-bg: #16161e;
307
+ --neu-code-block-border: rgba(255, 255, 255, 0.06);
308
+ --neu-code-block-text: #cdd6f4;
309
+ --neu-code-block-accent: #7aa2f7;
310
+ --neu-code-block-muted: #565f89;
311
+ --neu-code-block-copy-text: #a9b1d6;
312
+ --neu-code-block-copy-hover-text: #c0caf5;
313
+ --neu-code-block-copy-border: rgba(255, 255, 255, 0.1);
314
+ --neu-code-block-copy-hover-bg: rgba(255, 255, 255, 0.1);
315
+ --neu-code-block-copy-hover-border: rgba(255, 255, 255, 0.2);
157
316
  }
158
317
 
159
318
  // ============================================================
@@ -179,6 +338,8 @@
179
338
  --neu-text: #e6edf3; // Casi blanco — texto principal
180
339
  --neu-text-muted: #8b949e; // Slate-400 equivalent — subtítulos
181
340
  --neu-text-disabled: #484f58; // Elementos deshabilitados
341
+ --neu-knob-display-color: #f8fafc;
342
+ --neu-knob-label-color: #8b949e;
182
343
 
183
344
  // ---- Semánticos — fondos ajustados a dark / Semantic — backgrounds adjusted for dark mode ----
184
345
  --neu-success-bg: rgba(16, 185, 129, 0.15);
@@ -207,4 +368,45 @@
207
368
 
208
369
  // ---- Toast ----
209
370
  --neu-toast-shadow: 0 8px 24px rgba(0, 0, 0, 0.5), 0 2px 6px rgba(0, 0, 0, 0.3);
371
+
372
+ // ---- Alert dark overrides (v1.3.0) ----
373
+ --neu-alert-info-bg: rgba(0, 122, 255, 0.15);
374
+ --neu-alert-info-text: #93c5fd;
375
+ --neu-alert-info-border: rgba(0, 122, 255, 0.3);
376
+
377
+ --neu-alert-success-bg: rgba(16, 185, 129, 0.15);
378
+ --neu-alert-success-text: #6ee7b7;
379
+ --neu-alert-success-border: rgba(16, 185, 129, 0.3);
380
+
381
+ --neu-alert-warning-bg: rgba(245, 158, 11, 0.15);
382
+ --neu-alert-warning-text: #fcd34d;
383
+ --neu-alert-warning-border: rgba(245, 158, 11, 0.3);
384
+
385
+ --neu-alert-danger-bg: rgba(239, 68, 68, 0.15);
386
+ --neu-alert-danger-text: #fca5a5;
387
+ --neu-alert-danger-border: rgba(239, 68, 68, 0.3);
388
+
389
+ // ---- Block UI dark override (v1.3.0) ----
390
+ --neu-block-ui-bg: rgba(13, 17, 23, 0.7);
391
+
392
+ // ---- Notification dark override (v1.3.0) ----
393
+ --neu-notification-unread-bg: rgba(0, 122, 255, 0.18);
394
+
395
+ // ---- Command Palette dark override (v1.3.0) ----
396
+ --neu-cmd-highlight: rgba(0, 122, 255, 0.15);
397
+
398
+ // ---- Overlay dark overrides / Overrides de overlay para modo oscuro ----
399
+ --neu-overlay-bg: rgba(0, 0, 0, 0.65);
400
+ --neu-overlay-bg-soft: rgba(0, 0, 0, 0.5);
401
+
402
+ // ---- Table badge dark overrides / Overrides de badge de tabla para modo oscuro ----
403
+ --neu-table-badge-success-bg: rgba(16, 185, 129, 0.18);
404
+ --neu-table-badge-success-text: #6ee7b7;
405
+ --neu-table-badge-warning-bg: rgba(245, 158, 11, 0.18);
406
+ --neu-table-badge-warning-text: #fcd34d;
407
+ --neu-table-badge-danger-bg: rgba(239, 68, 68, 0.18);
408
+ --neu-table-badge-danger-text: #fca5a5;
409
+
410
+ // ---- Alert dismiss dark override / Override de botón de cierre de alert en oscuro ----
411
+ --neu-alert-dismiss-hover-bg: rgb(255 255 255 / 12%);
210
412
  }
package/styles.scss ADDED
@@ -0,0 +1 @@
1
+ @forward './styles/index';
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-switch.mjs",
3
+ "typings": "../types/neural-ui-core-switch.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-table.mjs",
3
+ "typings": "../types/neural-ui-core-table.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-tabs.mjs",
3
+ "typings": "../types/neural-ui-core-tabs.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-textarea.mjs",
3
+ "typings": "../types/neural-ui-core-textarea.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-timeline.mjs",
3
+ "typings": "../types/neural-ui-core-timeline.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-toast.mjs",
3
+ "typings": "../types/neural-ui-core-toast.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-toggle-button-group.mjs",
3
+ "typings": "../types/neural-ui-core-toggle-button-group.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-toolbar.mjs",
3
+ "typings": "../types/neural-ui-core-toolbar.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/neural-ui-core-tooltip.mjs",
3
+ "typings": "../types/neural-ui-core-tooltip.d.ts"
4
+ }
@@ -0,0 +1,55 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { SafeHtml } from '@angular/platform-browser';
3
+
4
+ interface NeuAccordionItem {
5
+ /** ID único del panel / Unique panel ID */
6
+ id: string;
7
+ /** Título del encabezado / Header title */
8
+ title: string;
9
+ /** Contenido del cuerpo (HTML o texto plano) / Body content (HTML or plain text) */
10
+ content: string;
11
+ /** Inicia expandido / Starts expanded */
12
+ expanded?: boolean;
13
+ /** Deshabilita este panel / Disables this panel */
14
+ disabled?: boolean;
15
+ }
16
+ /**
17
+ * NeuralUI Accordion Component
18
+ *
19
+ * Paneles expandibles / colapsables con animación suave.
20
+ * Soporta modo múltiple (varios abiertos a la vez) o exclusivo. / Supports multiple (several open at once) or exclusive mode.
21
+ *
22
+ * Uso:
23
+ * <neu-accordion [items]="items" />
24
+ * <neu-accordion [items]="items" [multiple]="true" />
25
+ */
26
+ declare class NeuAccordionComponent {
27
+ private readonly _sanitizer;
28
+ /** Lista de paneles / Panel list */
29
+ items: _angular_core.InputSignal<NeuAccordionItem[]>;
30
+ /** Permite varios paneles abiertos a la vez / Allows multiple panels open at once */
31
+ multiple: _angular_core.InputSignal<boolean>;
32
+ /** Borde exterior alrededor del accordion / Outer border around the accordion */
33
+ bordered: _angular_core.InputSignal<boolean>;
34
+ /** Emite el id del panel al abrirse/cerrarse / Emits the panel id on open/close */
35
+ panelToggle: _angular_core.OutputEmitterRef<{
36
+ id: string;
37
+ expanded: boolean;
38
+ }>;
39
+ /**
40
+ * Set de IDs actualmente expandidos.
41
+ * Se inicializa desde los ítems con `expanded: true` en el primer render.
42
+ * Después se vuelve un signal mutable independiente (no se resetea al cambiar items).
43
+ */
44
+ private _expandedInit;
45
+ private readonly _expanded;
46
+ constructor();
47
+ readonly isExpanded: (id: string) => boolean;
48
+ sanitize(html: string): SafeHtml;
49
+ toggle(id: string): void;
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuAccordionComponent, never>;
51
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuAccordionComponent, "neu-accordion", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, { "panelToggle": "panelToggle"; }, never, never, true, never>;
52
+ }
53
+
54
+ export { NeuAccordionComponent };
55
+ export type { NeuAccordionItem };
@@ -0,0 +1,47 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type NeuAlertType = 'info' | 'success' | 'warning' | 'error';
4
+ /**
5
+ * NeuralUI Alert Component
6
+ *
7
+ * Mensaje de alerta contextual con soporte de icono personalizado, slot de acciones y cierre.
8
+ *
9
+ * Uso: <neu-alert type="success">Operación completada</neu-alert>
10
+ * <neu-alert type="error" [closable]="true" (closed)="onClosed()">Error de red</neu-alert>
11
+ */
12
+ declare class NeuAlertComponent {
13
+ /** Tipo semántico / Semantic type */
14
+ readonly type: _angular_core.InputSignal<NeuAlertType>;
15
+ /** Título opcional sobre el mensaje / Optional title above message */
16
+ readonly title: _angular_core.InputSignal<string>;
17
+ /** Icono personalizado. Vacío = usa el icono por defecto del tipo / Custom icon. Empty = use default type icon */
18
+ readonly icon: _angular_core.InputSignal<string>;
19
+ /** Muestra el icono / Shows the icon */
20
+ readonly showIcon: _angular_core.InputSignal<boolean>;
21
+ /** Permite cerrarse / Can be dismissed */
22
+ readonly closable: _angular_core.InputSignal<boolean>;
23
+ /** Variante outline (sin fondo sólido) / Outline variant (no solid background) */
24
+ readonly outline: _angular_core.InputSignal<boolean>;
25
+ /** Aria-label para el botón de cierre / Aria-label for the close button */
26
+ readonly closeLabel: _angular_core.InputSignal<string>;
27
+ /** Emitido cuando se descarta la alerta / Emitted when the alert is dismissed */
28
+ readonly closed: _angular_core.OutputEmitterRef<void>;
29
+ readonly _id: string;
30
+ readonly _dismissed: _angular_core.WritableSignal<boolean>;
31
+ readonly _resolvedIcon: _angular_core.Signal<string>;
32
+ readonly liveRegion: _angular_core.Signal<"assertive" | "polite">;
33
+ readonly hostClasses: _angular_core.Signal<{
34
+ [x: string]: boolean;
35
+ 'neu-alert': boolean;
36
+ 'neu-alert--outline': boolean;
37
+ 'neu-alert--closable': boolean;
38
+ 'neu-alert--with-icon': boolean;
39
+ 'neu-alert--dismissed': boolean;
40
+ }>;
41
+ dismiss(): void;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuAlertComponent, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuAlertComponent, "neu-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "[neu-alert-actions]"], true, never>;
44
+ }
45
+
46
+ export { NeuAlertComponent };
47
+ export type { NeuAlertType };
@@ -0,0 +1,69 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+
4
+ interface NeuAutocompleteOption {
5
+ /** Valor / Value */
6
+ value: unknown;
7
+ /** Texto visible / Display text */
8
+ label: string;
9
+ /** Desactiva la opción / Disables the option */
10
+ disabled?: boolean;
11
+ }
12
+ /**
13
+ * NeuralUI Autocomplete
14
+ *
15
+ * Input con lista de sugerencias filtradas y navegación por teclado.
16
+ * Implementa CVA para uso en formularios reactivos.
17
+ *
18
+ * Uso:
19
+ * <neu-autocomplete
20
+ * [options]="opts"
21
+ * placeholder="Buscar…"
22
+ * [formControl]="selectedCtrl"
23
+ * (optionSelected)="onSelect($event)"
24
+ * />
25
+ */
26
+ declare class NeuAutocompleteComponent implements ControlValueAccessor {
27
+ readonly options: _angular_core.InputSignal<NeuAutocompleteOption[]>;
28
+ readonly placeholder: _angular_core.InputSignal<string>;
29
+ readonly label: _angular_core.InputSignal<string>;
30
+ readonly emptyLabel: _angular_core.InputSignal<string>;
31
+ readonly minLength: _angular_core.InputSignal<number>;
32
+ /** Muestra el label como flotante (true) o estático encima del campo (false) / Shows the label as floating (true) or static above the field (false) */
33
+ readonly floatingLabel: _angular_core.InputSignal<boolean>;
34
+ /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */
35
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
36
+ /** Emitido al seleccionar una opción / Emitted when an option is selected */
37
+ readonly optionSelected: _angular_core.OutputEmitterRef<NeuAutocompleteOption>;
38
+ /** Emitido al cambiar el texto del input / Emitted on query change */
39
+ readonly queryChange: _angular_core.OutputEmitterRef<string>;
40
+ readonly _id: string;
41
+ readonly _listId: string;
42
+ readonly _query: _angular_core.WritableSignal<string>;
43
+ readonly _isOpen: _angular_core.WritableSignal<boolean>;
44
+ readonly _activeIndex: _angular_core.WritableSignal<number>;
45
+ readonly _cvaDisabled: _angular_core.WritableSignal<boolean>;
46
+ readonly _focused: _angular_core.WritableSignal<boolean>;
47
+ private _onChange;
48
+ private _onTouched;
49
+ readonly _filtered: _angular_core.Signal<NeuAutocompleteOption[]>;
50
+ readonly _activeId: _angular_core.Signal<string | null>;
51
+ _optionId(i: number): string;
52
+ private readonly _el;
53
+ onDocClick(e: MouseEvent): void;
54
+ onQueryChange(q: string): void;
55
+ _onFocus(): void;
56
+ _onBlur(): void;
57
+ onKeyDown(e: KeyboardEvent): void;
58
+ selectOption(opt: NeuAutocompleteOption): void;
59
+ clear(): void;
60
+ writeValue(val: unknown): void;
61
+ registerOnChange(fn: (v: unknown) => void): void;
62
+ registerOnTouched(fn: () => void): void;
63
+ setDisabledState(d: boolean): void;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuAutocompleteComponent, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuAutocompleteComponent, "neu-autocomplete", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "optionSelected": "optionSelected"; "queryChange": "queryChange"; }, never, never, true, never>;
66
+ }
67
+
68
+ export { NeuAutocompleteComponent };
69
+ export type { NeuAutocompleteOption };
@@ -0,0 +1,39 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type NeuAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ type NeuAvatarShape = 'circle' | 'square';
5
+ type NeuAvatarColor = 'blue' | 'violet' | 'green' | 'amber' | 'red' | 'slate';
6
+ type NeuAvatarStatus = 'online' | 'offline' | 'busy' | 'away' | '';
7
+ /**
8
+ * NeuAvatar — Avatar circular o cuadrado para foto o iniciales.
9
+ *
10
+ * Uso:
11
+ * <neu-avatar name="Pedro Moreno" />
12
+ * <neu-avatar src="/assets/avatar.jpg" alt="Pedro" size="lg" />
13
+ * <neu-avatar name="PM" size="lg" color="blue" status="online" />
14
+ */
15
+ declare class NeuAvatarComponent {
16
+ /** URL de la imagen. Si falla la carga, muestra las iniciales. / Image URL. If loading fails, shows the initials. */
17
+ src: _angular_core.InputSignal<string>;
18
+ /** Texto alternativo de la imagen. / Image alternative text. */
19
+ alt: _angular_core.InputSignal<string>;
20
+ /** Nombre completo — se usan las iniciales como fallback. / Full name — initials are used as fallback. */
21
+ name: _angular_core.InputSignal<string>;
22
+ /** Tamaño: xs (24) | sm (32) | md (40) | lg (48) | xl (64). Por defecto 'md'. / Size: xs (24) | sm (32) | md (40) | lg (48) | xl (64). Default 'md'. */
23
+ size: _angular_core.InputSignal<NeuAvatarSize>;
24
+ /** Forma: 'circle' (default) o 'square'. / Shape: 'circle' (default) or 'square'. */
25
+ shape: _angular_core.InputSignal<NeuAvatarShape>;
26
+ /** Color de fondo para iniciales. / Background color for initials. */
27
+ color: _angular_core.InputSignal<NeuAvatarColor>;
28
+ /** Indicador de presencia. / Presence indicator. */
29
+ status: _angular_core.InputSignal<NeuAvatarStatus>;
30
+ /** @internal Imagen fallida / Failed image */
31
+ protected readonly imgError: _angular_core.WritableSignal<boolean>;
32
+ protected readonly initials: _angular_core.Signal<string>;
33
+ protected readonly hostClasses: _angular_core.Signal<string[]>;
34
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuAvatarComponent, never>;
35
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuAvatarComponent, "neu-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
36
+ }
37
+
38
+ export { NeuAvatarComponent };
39
+ export type { NeuAvatarColor, NeuAvatarShape, NeuAvatarSize, NeuAvatarStatus };
@@ -0,0 +1,36 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type NeuBadgeVariant = 'default' | 'success' | 'info' | 'warning' | 'danger';
4
+ type NeuBadgeSize = 'sm' | 'md';
5
+ /**
6
+ * NeuralUI Badge Component
7
+ *
8
+ * Etiqueta de estado compacta y semántica. / Compact and semantic status label.
9
+ *
10
+ * Uso: <neu-badge variant="success">Activo</neu-badge>
11
+ * <neu-badge variant="danger" [dot]="true">Error</neu-badge>
12
+ */
13
+ declare class NeuBadgeComponent {
14
+ /** Variante semántica / Semantic variant */
15
+ variant: _angular_core.InputSignal<NeuBadgeVariant>;
16
+ /** Tamaño / Size */
17
+ size: _angular_core.InputSignal<NeuBadgeSize>;
18
+ /** Muestra un punto de color a la izquierda / Shows a colored dot on the left */
19
+ dot: _angular_core.InputSignal<boolean>;
20
+ /** Estilo con solo borde (outline) sin relleno / Border-only style (outline) without fill */
21
+ outline: _angular_core.InputSignal<boolean>;
22
+ /** Estilo completamente redondeado (pill) / Fully rounded style (pill) */
23
+ pill: _angular_core.InputSignal<boolean>;
24
+ readonly hostClasses: _angular_core.Signal<{
25
+ [x: string]: boolean;
26
+ 'neu-badge': boolean;
27
+ 'neu-badge--outline': boolean;
28
+ 'neu-badge--pill': boolean;
29
+ 'neu-badge--dot': boolean;
30
+ }>;
31
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuBadgeComponent, never>;
32
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuBadgeComponent, "neu-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "pill": { "alias": "pill"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
33
+ }
34
+
35
+ export { NeuBadgeComponent };
36
+ export type { NeuBadgeSize, NeuBadgeVariant };
@@ -0,0 +1,46 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * NeuralUI BlockUI Component
5
+ *
6
+ * Superposición que bloquea la interacción de un contenedor mientras está activa.
7
+ *
8
+ * Uso (componente):
9
+ * <div style="position:relative">
10
+ * <neu-block-ui [blocked]="isLoading" message="Cargando..." />
11
+ * <form>...</form>
12
+ * </div>
13
+ *
14
+ * Uso (directiva en el contenedor padre):
15
+ * <div [neuBlockUI]="isLoading">
16
+ * <form>...</form>
17
+ * </div>
18
+ */
19
+ declare class NeuBlockUIComponent {
20
+ /** Activa la superposición / Activates the overlay */
21
+ readonly blocked: _angular_core.InputSignal<boolean>;
22
+ /** Mensaje opcional bajo el spinner / Optional message below the spinner */
23
+ readonly message: _angular_core.InputSignal<string>;
24
+ /** Variante de opacidad del overlay */
25
+ readonly variant: _angular_core.InputSignal<"default" | "light" | "dark">;
26
+ readonly hostClasses: _angular_core.Signal<{
27
+ [x: string]: boolean;
28
+ 'neu-block-ui': boolean;
29
+ }>;
30
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuBlockUIComponent, never>;
31
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuBlockUIComponent, "neu-block-ui", never, { "blocked": { "alias": "blocked"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
32
+ }
33
+ /**
34
+ * Directive [neuBlockUI] — Aplica el efecto BlockUI al elemento host.
35
+ *
36
+ * Uso: <div [neuBlockUI]="loading$ | async">...</div>
37
+ */
38
+ declare class NeuBlockUIDirective {
39
+ readonly neuBlockUI: _angular_core.InputSignal<boolean>;
40
+ private readonly _el;
41
+ constructor();
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuBlockUIDirective, never>;
43
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuBlockUIDirective, "[neuBlockUI]", never, { "neuBlockUI": { "alias": "neuBlockUI"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ }
45
+
46
+ export { NeuBlockUIComponent, NeuBlockUIDirective };
@@ -0,0 +1,38 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ interface NeuBreadcrumbItem {
4
+ /** Etiqueta visible / Visible label */
5
+ label: string;
6
+ /** Ruta interna (RouterLink) / Internal route (RouterLink) */
7
+ route?: string | string[];
8
+ /** URL externa / External URL */
9
+ url?: string;
10
+ /** Icono Lucide opcional / Optional Lucide icon */
11
+ icon?: string;
12
+ }
13
+ /**
14
+ * NeuralUI Breadcrumb Component
15
+ *
16
+ * Ruta de navegación jerárquica. El último elemento se muestra
17
+ * como activo (sin enlace).
18
+ *
19
+ * Uso:
20
+ * <neu-breadcrumb [items]="breadcrumbs" />
21
+ *
22
+ * items = [
23
+ * { label: 'Inicio', route: '/' },
24
+ * { label: 'Componentes', route: '/components' },
25
+ * { label: 'Breadcrumb' },
26
+ * ];
27
+ */
28
+ declare class NeuBreadcrumbComponent {
29
+ /** Lista de ítems de navegación / Navigation item list */
30
+ items: _angular_core.InputSignal<NeuBreadcrumbItem[]>;
31
+ /** Separador personalizable / Customizable separator */
32
+ separator: _angular_core.InputSignal<string>;
33
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuBreadcrumbComponent, never>;
34
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuBreadcrumbComponent, "neu-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
+ }
36
+
37
+ export { NeuBreadcrumbComponent };
38
+ export type { NeuBreadcrumbItem };