@neural-ui/core 1.2.0 → 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.
- package/README.md +56 -88
- package/accordion/package.json +4 -0
- package/alert/package.json +4 -0
- package/autocomplete/package.json +4 -0
- package/avatar/package.json +4 -0
- package/badge/package.json +4 -0
- package/block-ui/package.json +4 -0
- package/breadcrumb/package.json +4 -0
- package/button/package.json +4 -0
- package/card/package.json +4 -0
- package/chart/package.json +4 -0
- package/checkbox/package.json +4 -0
- package/chip/package.json +4 -0
- package/code-block/package.json +4 -0
- package/color-picker/package.json +4 -0
- package/command-palette/package.json +4 -0
- package/confirm-dialog/package.json +4 -0
- package/context-menu/package.json +4 -0
- package/dashboard-grid/package.json +4 -0
- package/date-input/package.json +4 -0
- package/divider/package.json +4 -0
- package/empty-state/package.json +4 -0
- package/fesm2022/neural-ui-core-accordion.mjs +162 -0
- package/fesm2022/neural-ui-core-accordion.mjs.map +1 -0
- package/fesm2022/neural-ui-core-alert.mjs +116 -0
- package/fesm2022/neural-ui-core-alert.mjs.map +1 -0
- package/fesm2022/neural-ui-core-autocomplete.mjs +332 -0
- package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -0
- package/fesm2022/neural-ui-core-avatar.mjs +109 -0
- package/fesm2022/neural-ui-core-avatar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-badge.mjs +54 -0
- package/fesm2022/neural-ui-core-badge.mjs.map +1 -0
- package/fesm2022/neural-ui-core-block-ui.mjs +95 -0
- package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -0
- package/fesm2022/neural-ui-core-breadcrumb.mjs +84 -0
- package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -0
- package/fesm2022/neural-ui-core-button.mjs +125 -0
- package/fesm2022/neural-ui-core-button.mjs.map +1 -0
- package/fesm2022/neural-ui-core-card.mjs +69 -0
- package/fesm2022/neural-ui-core-card.mjs.map +1 -0
- package/fesm2022/neural-ui-core-chart.mjs +287 -0
- package/fesm2022/neural-ui-core-chart.mjs.map +1 -0
- package/fesm2022/neural-ui-core-checkbox.mjs +138 -0
- package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -0
- package/fesm2022/neural-ui-core-chip.mjs +130 -0
- package/fesm2022/neural-ui-core-chip.mjs.map +1 -0
- package/fesm2022/neural-ui-core-code-block.mjs +250 -0
- package/fesm2022/neural-ui-core-code-block.mjs.map +1 -0
- package/fesm2022/neural-ui-core-color-picker.mjs +435 -0
- package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -0
- package/fesm2022/neural-ui-core-command-palette.mjs +235 -0
- package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -0
- package/fesm2022/neural-ui-core-confirm-dialog.mjs +118 -0
- package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -0
- package/fesm2022/neural-ui-core-context-menu.mjs +158 -0
- package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -0
- package/fesm2022/neural-ui-core-dashboard-grid.mjs +144 -0
- package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -0
- package/fesm2022/neural-ui-core-date-input.mjs +1332 -0
- package/fesm2022/neural-ui-core-date-input.mjs.map +1 -0
- package/fesm2022/neural-ui-core-divider.mjs +54 -0
- package/fesm2022/neural-ui-core-divider.mjs.map +1 -0
- package/fesm2022/neural-ui-core-empty-state.mjs +84 -0
- package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -0
- package/fesm2022/neural-ui-core-filter-bar.mjs +118 -0
- package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-icon.mjs +50 -0
- package/fesm2022/neural-ui-core-icon.mjs.map +1 -0
- package/fesm2022/neural-ui-core-image-viewer.mjs +309 -0
- package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -0
- package/fesm2022/neural-ui-core-input-otp.mjs +192 -0
- package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -0
- package/fesm2022/neural-ui-core-input.mjs +320 -0
- package/fesm2022/neural-ui-core-input.mjs.map +1 -0
- package/fesm2022/neural-ui-core-knob.mjs +323 -0
- package/fesm2022/neural-ui-core-knob.mjs.map +1 -0
- package/fesm2022/neural-ui-core-meter-group.mjs +122 -0
- package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -0
- package/fesm2022/neural-ui-core-modal.mjs +156 -0
- package/fesm2022/neural-ui-core-modal.mjs.map +1 -0
- package/fesm2022/neural-ui-core-multiselect.mjs +748 -0
- package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -0
- package/fesm2022/neural-ui-core-nav.mjs +952 -0
- package/fesm2022/neural-ui-core-nav.mjs.map +1 -0
- package/fesm2022/neural-ui-core-notification-center.mjs +264 -0
- package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -0
- package/fesm2022/neural-ui-core-number-input.mjs +331 -0
- package/fesm2022/neural-ui-core-number-input.mjs.map +1 -0
- package/fesm2022/neural-ui-core-pagination.mjs +198 -0
- package/fesm2022/neural-ui-core-pagination.mjs.map +1 -0
- package/fesm2022/neural-ui-core-popover.mjs +207 -0
- package/fesm2022/neural-ui-core-popover.mjs.map +1 -0
- package/fesm2022/neural-ui-core-progress-bar.mjs +105 -0
- package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-radio.mjs +171 -0
- package/fesm2022/neural-ui-core-radio.mjs.map +1 -0
- package/fesm2022/neural-ui-core-rating.mjs +151 -0
- package/fesm2022/neural-ui-core-rating.mjs.map +1 -0
- package/fesm2022/neural-ui-core-select.mjs +638 -0
- package/fesm2022/neural-ui-core-select.mjs.map +1 -0
- package/fesm2022/neural-ui-core-sidebar.mjs +214 -0
- package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-skeleton.mjs +40 -0
- package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -0
- package/fesm2022/neural-ui-core-slider.mjs +146 -0
- package/fesm2022/neural-ui-core-slider.mjs.map +1 -0
- package/fesm2022/neural-ui-core-spinner.mjs +113 -0
- package/fesm2022/neural-ui-core-spinner.mjs.map +1 -0
- package/fesm2022/neural-ui-core-split-button.mjs +252 -0
- package/fesm2022/neural-ui-core-split-button.mjs.map +1 -0
- package/fesm2022/neural-ui-core-splitter.mjs +174 -0
- package/fesm2022/neural-ui-core-splitter.mjs.map +1 -0
- package/fesm2022/neural-ui-core-stats-card.mjs +163 -0
- package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -0
- package/fesm2022/neural-ui-core-stepper.mjs +204 -0
- package/fesm2022/neural-ui-core-stepper.mjs.map +1 -0
- package/fesm2022/neural-ui-core-switch.mjs +111 -0
- package/fesm2022/neural-ui-core-switch.mjs.map +1 -0
- package/fesm2022/neural-ui-core-table.mjs +1860 -0
- package/fesm2022/neural-ui-core-table.mjs.map +1 -0
- package/fesm2022/neural-ui-core-tabs.mjs +246 -0
- package/fesm2022/neural-ui-core-tabs.mjs.map +1 -0
- package/fesm2022/neural-ui-core-textarea.mjs +188 -0
- package/fesm2022/neural-ui-core-textarea.mjs.map +1 -0
- package/fesm2022/neural-ui-core-timeline.mjs +117 -0
- package/fesm2022/neural-ui-core-timeline.mjs.map +1 -0
- package/fesm2022/neural-ui-core-toast.mjs +171 -0
- package/fesm2022/neural-ui-core-toast.mjs.map +1 -0
- package/fesm2022/neural-ui-core-toggle-button-group.mjs +162 -0
- package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -0
- package/fesm2022/neural-ui-core-toolbar.mjs +67 -0
- package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-tooltip.mjs +151 -0
- package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -0
- package/fesm2022/neural-ui-core-url-state.mjs +96 -0
- package/fesm2022/neural-ui-core-url-state.mjs.map +1 -0
- package/fesm2022/neural-ui-core-virtual-list.mjs +126 -0
- package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -0
- package/fesm2022/neural-ui-core.mjs +11 -8544
- package/fesm2022/neural-ui-core.mjs.map +1 -1
- package/filter-bar/package.json +4 -0
- package/icon/package.json +4 -0
- package/image-viewer/package.json +4 -0
- package/input/package.json +4 -0
- package/input-otp/package.json +4 -0
- package/knob/package.json +4 -0
- package/meter-group/package.json +4 -0
- package/modal/package.json +4 -0
- package/multiselect/package.json +4 -0
- package/nav/package.json +4 -0
- package/notification-center/package.json +4 -0
- package/number-input/package.json +4 -0
- package/package.json +252 -5
- package/pagination/package.json +4 -0
- package/popover/package.json +4 -0
- package/progress-bar/package.json +4 -0
- package/radio/package.json +4 -0
- package/rating/package.json +4 -0
- package/select/package.json +4 -0
- package/sidebar/package.json +4 -0
- package/skeleton/package.json +4 -0
- package/slider/package.json +4 -0
- package/spinner/package.json +4 -0
- package/split-button/package.json +4 -0
- package/splitter/package.json +4 -0
- package/stats-card/package.json +4 -0
- package/stepper/package.json +4 -0
- package/styles/_tokens.scss +209 -7
- package/styles.scss +1 -0
- package/switch/package.json +4 -0
- package/table/package.json +4 -0
- package/tabs/package.json +4 -0
- package/textarea/package.json +4 -0
- package/timeline/package.json +4 -0
- package/toast/package.json +4 -0
- package/toggle-button-group/package.json +4 -0
- package/toolbar/package.json +4 -0
- package/tooltip/package.json +4 -0
- package/types/neural-ui-core-accordion.d.ts +55 -0
- package/types/neural-ui-core-alert.d.ts +47 -0
- package/types/neural-ui-core-autocomplete.d.ts +69 -0
- package/types/neural-ui-core-avatar.d.ts +39 -0
- package/types/neural-ui-core-badge.d.ts +36 -0
- package/types/neural-ui-core-block-ui.d.ts +46 -0
- package/types/neural-ui-core-breadcrumb.d.ts +38 -0
- package/types/neural-ui-core-button.d.ts +55 -0
- package/types/neural-ui-core-card.d.ts +37 -0
- package/types/neural-ui-core-chart.d.ts +236 -0
- package/types/neural-ui-core-checkbox.d.ts +33 -0
- package/types/neural-ui-core-chip.d.ts +53 -0
- package/types/neural-ui-core-code-block.d.ts +55 -0
- package/types/neural-ui-core-color-picker.d.ts +55 -0
- package/types/neural-ui-core-command-palette.d.ts +56 -0
- package/types/neural-ui-core-confirm-dialog.d.ts +50 -0
- package/types/neural-ui-core-context-menu.d.ts +66 -0
- package/types/neural-ui-core-dashboard-grid.d.ts +41 -0
- package/types/neural-ui-core-date-input.d.ts +178 -0
- package/types/neural-ui-core-divider.d.ts +20 -0
- package/types/neural-ui-core-empty-state.d.ts +32 -0
- package/types/neural-ui-core-filter-bar.d.ts +49 -0
- package/types/neural-ui-core-icon.d.ts +33 -0
- package/types/neural-ui-core-image-viewer.d.ts +67 -0
- package/types/neural-ui-core-input-otp.d.ts +49 -0
- package/types/neural-ui-core-input.d.ts +86 -0
- package/types/neural-ui-core-knob.d.ts +68 -0
- package/types/neural-ui-core-meter-group.d.ts +52 -0
- package/types/neural-ui-core-modal.d.ts +54 -0
- package/types/neural-ui-core-multiselect.d.ts +129 -0
- package/types/neural-ui-core-nav.d.ts +69 -0
- package/types/neural-ui-core-notification-center.d.ts +60 -0
- package/types/neural-ui-core-number-input.d.ts +63 -0
- package/types/neural-ui-core-pagination.d.ts +30 -0
- package/types/neural-ui-core-popover.d.ts +73 -0
- package/types/neural-ui-core-progress-bar.d.ts +35 -0
- package/types/neural-ui-core-radio.d.ts +51 -0
- package/types/neural-ui-core-rating.d.ts +34 -0
- package/types/neural-ui-core-select.d.ts +161 -0
- package/types/neural-ui-core-sidebar.d.ts +57 -0
- package/types/neural-ui-core-skeleton.d.ts +22 -0
- package/types/neural-ui-core-slider.d.ts +42 -0
- package/types/neural-ui-core-spinner.d.ts +38 -0
- package/types/neural-ui-core-split-button.d.ts +65 -0
- package/types/neural-ui-core-splitter.d.ts +28 -0
- package/types/neural-ui-core-stats-card.d.ts +39 -0
- package/types/neural-ui-core-stepper.d.ts +51 -0
- package/types/neural-ui-core-switch.d.ts +34 -0
- package/types/neural-ui-core-table.d.ts +282 -0
- package/types/neural-ui-core-tabs.d.ts +76 -0
- package/types/neural-ui-core-textarea.d.ts +52 -0
- package/types/neural-ui-core-timeline.d.ts +33 -0
- package/types/neural-ui-core-toast.d.ts +70 -0
- package/types/neural-ui-core-toggle-button-group.d.ts +63 -0
- package/types/neural-ui-core-toolbar.d.ts +36 -0
- package/types/neural-ui-core-tooltip.d.ts +48 -0
- package/types/neural-ui-core-url-state.d.ts +58 -0
- package/types/neural-ui-core-virtual-list.d.ts +60 -0
- package/types/neural-ui-core.d.ts +5 -2107
- package/url-state/package.json +4 -0
- package/virtual-list/package.json +4 -0
package/styles/_tokens.scss
CHANGED
|
@@ -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
|
// ============================================================
|
|
@@ -161,26 +320,28 @@
|
|
|
161
320
|
// Activado con: document.documentElement.setAttribute('data-theme', 'dark')
|
|
162
321
|
// ============================================================
|
|
163
322
|
[data-theme='dark'] {
|
|
164
|
-
// ---- Brand (
|
|
323
|
+
// ---- Brand (mismo azul / same blue, fondos adaptados / adapted backgrounds) ----
|
|
165
324
|
--neu-primary-50: rgba(0, 122, 255, 0.12);
|
|
166
325
|
--neu-primary-100: rgba(0, 122, 255, 0.2);
|
|
167
326
|
|
|
168
|
-
// ---- Fondos ----
|
|
327
|
+
// ---- Fondos / Backgrounds ----
|
|
169
328
|
--neu-bg: #0d1117; // GitHub-dark inspired — fondo base
|
|
170
329
|
--neu-surface: #161b22; // Tarjetas, paneles
|
|
171
330
|
--neu-surface-2: #21262d; // Hover, fondos secundarios
|
|
172
331
|
--neu-surface-3: #30363d; // Separadores, track de switch
|
|
173
332
|
|
|
174
|
-
// ---- Bordes ----
|
|
333
|
+
// ---- Bordes / Borders ----
|
|
175
334
|
--neu-border: rgba(255, 255, 255, 0.08);
|
|
176
335
|
--neu-border-hover: rgba(255, 255, 255, 0.16);
|
|
177
336
|
|
|
178
|
-
// ---- Texto ----
|
|
337
|
+
// ---- Texto / Text ----
|
|
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
|
-
// ---- Semánticos — fondos ajustados a dark ----
|
|
344
|
+
// ---- Semánticos — fondos ajustados a dark / Semantic — backgrounds adjusted for dark mode ----
|
|
184
345
|
--neu-success-bg: rgba(16, 185, 129, 0.15);
|
|
185
346
|
--neu-success-text: #6ee7b7;
|
|
186
347
|
|
|
@@ -193,18 +354,59 @@
|
|
|
193
354
|
--neu-info-bg: rgba(0, 122, 255, 0.15);
|
|
194
355
|
--neu-info-text: #93c5fd;
|
|
195
356
|
|
|
196
|
-
// ---- Sombras (
|
|
357
|
+
// ---- Sombras / Shadows (hidden in dark mode, borders used instead) ----
|
|
197
358
|
--neu-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
198
359
|
--neu-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
199
360
|
--neu-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);
|
|
200
361
|
--neu-shadow-lg: 0 10px 30px rgba(0, 0, 0, 0.5), 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
201
362
|
--neu-shadow-glow: 0 0 20px rgba(0, 122, 255, 0.35);
|
|
202
363
|
|
|
203
|
-
// ---- Tooltip: fondo claro sobre dark
|
|
364
|
+
// ---- Tooltip: fondo claro sobre dark / light bg on dark for contrast ----
|
|
204
365
|
--neu-tooltip-bg: #e6edf3;
|
|
205
366
|
--neu-tooltip-fg: #0d1117;
|
|
206
367
|
--neu-tooltip-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
|
|
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,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 };
|