@neural-ui/core 1.6.1 → 1.6.2

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 (135) hide show
  1. package/fesm2022/neural-ui-core-accordion.mjs +7 -11
  2. package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
  3. package/fesm2022/neural-ui-core-alert.mjs +14 -25
  4. package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
  5. package/fesm2022/neural-ui-core-autocomplete.mjs +28 -53
  6. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
  7. package/fesm2022/neural-ui-core-avatar.mjs +13 -23
  8. package/fesm2022/neural-ui-core-avatar.mjs.map +1 -1
  9. package/fesm2022/neural-ui-core-badge.mjs +9 -15
  10. package/fesm2022/neural-ui-core-badge.mjs.map +1 -1
  11. package/fesm2022/neural-ui-core-block-ui.mjs +11 -16
  12. package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -1
  13. package/fesm2022/neural-ui-core-breadcrumb.mjs +6 -8
  14. package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/neural-ui-core-button.mjs +16 -29
  16. package/fesm2022/neural-ui-core-button.mjs.map +1 -1
  17. package/fesm2022/neural-ui-core-calendar.mjs +20 -37
  18. package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
  19. package/fesm2022/neural-ui-core-card.mjs +8 -13
  20. package/fesm2022/neural-ui-core-card.mjs.map +1 -1
  21. package/fesm2022/neural-ui-core-chart.mjs +24 -45
  22. package/fesm2022/neural-ui-core-chart.mjs.map +1 -1
  23. package/fesm2022/neural-ui-core-checkbox.mjs +9 -15
  24. package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -1
  25. package/fesm2022/neural-ui-core-chip.mjs +13 -23
  26. package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
  27. package/fesm2022/neural-ui-core-code-block.mjs +17 -31
  28. package/fesm2022/neural-ui-core-code-block.mjs.map +1 -1
  29. package/fesm2022/neural-ui-core-color-picker.mjs +11 -19
  30. package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -1
  31. package/fesm2022/neural-ui-core-command-palette.mjs +11 -16
  32. package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -1
  33. package/fesm2022/neural-ui-core-confirm-dialog.mjs +6 -6
  34. package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -1
  35. package/fesm2022/neural-ui-core-context-menu.mjs +9 -12
  36. package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -1
  37. package/fesm2022/neural-ui-core-dashboard-grid.mjs +7 -11
  38. package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
  39. package/fesm2022/neural-ui-core-date-input.mjs +57 -111
  40. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
  41. package/fesm2022/neural-ui-core-divider.mjs +5 -7
  42. package/fesm2022/neural-ui-core-divider.mjs.map +1 -1
  43. package/fesm2022/neural-ui-core-empty-state.mjs +8 -13
  44. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
  45. package/fesm2022/neural-ui-core-filter-bar.mjs +11 -19
  46. package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -1
  47. package/fesm2022/neural-ui-core-icon.mjs +7 -11
  48. package/fesm2022/neural-ui-core-icon.mjs.map +1 -1
  49. package/fesm2022/neural-ui-core-image-gallery.mjs +13 -23
  50. package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -1
  51. package/fesm2022/neural-ui-core-image-viewer.mjs +14 -22
  52. package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -1
  53. package/fesm2022/neural-ui-core-input-otp.mjs +11 -19
  54. package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -1
  55. package/fesm2022/neural-ui-core-input.mjs +35 -67
  56. package/fesm2022/neural-ui-core-input.mjs.map +1 -1
  57. package/fesm2022/neural-ui-core-kanban.mjs +9 -15
  58. package/fesm2022/neural-ui-core-kanban.mjs.map +1 -1
  59. package/fesm2022/neural-ui-core-knob.mjs +22 -41
  60. package/fesm2022/neural-ui-core-knob.mjs.map +1 -1
  61. package/fesm2022/neural-ui-core-meter-group.mjs +13 -23
  62. package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -1
  63. package/fesm2022/neural-ui-core-modal.mjs +11 -16
  64. package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
  65. package/fesm2022/neural-ui-core-multiselect.mjs +39 -72
  66. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
  67. package/fesm2022/neural-ui-core-nav.mjs +13 -22
  68. package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
  69. package/fesm2022/neural-ui-core-notification-center.mjs +9 -12
  70. package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -1
  71. package/fesm2022/neural-ui-core-number-input.mjs +19 -35
  72. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
  73. package/fesm2022/neural-ui-core-pagination.mjs +9 -15
  74. package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
  75. package/fesm2022/neural-ui-core-popover.mjs +14 -22
  76. package/fesm2022/neural-ui-core-popover.mjs.map +1 -1
  77. package/fesm2022/neural-ui-core-progress-bar.mjs +11 -19
  78. package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -1
  79. package/fesm2022/neural-ui-core-radio.mjs +15 -24
  80. package/fesm2022/neural-ui-core-radio.mjs.map +1 -1
  81. package/fesm2022/neural-ui-core-rating.mjs +8 -13
  82. package/fesm2022/neural-ui-core-rating.mjs.map +1 -1
  83. package/fesm2022/neural-ui-core-rich-text-editor.mjs +28 -53
  84. package/fesm2022/neural-ui-core-rich-text-editor.mjs.map +1 -1
  85. package/fesm2022/neural-ui-core-scheduler-gantt.mjs +22 -41
  86. package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -1
  87. package/fesm2022/neural-ui-core-select.mjs +43 -77
  88. package/fesm2022/neural-ui-core-select.mjs.map +1 -1
  89. package/fesm2022/neural-ui-core-sidebar.mjs +12 -21
  90. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
  91. package/fesm2022/neural-ui-core-skeleton.mjs +7 -11
  92. package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -1
  93. package/fesm2022/neural-ui-core-slider.mjs +13 -23
  94. package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
  95. package/fesm2022/neural-ui-core-spinner.mjs +10 -17
  96. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
  97. package/fesm2022/neural-ui-core-split-button.mjs +15 -27
  98. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
  99. package/fesm2022/neural-ui-core-splitter.mjs +6 -9
  100. package/fesm2022/neural-ui-core-splitter.mjs.map +1 -1
  101. package/fesm2022/neural-ui-core-stats-card.mjs +11 -19
  102. package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -1
  103. package/fesm2022/neural-ui-core-stepper.mjs +8 -13
  104. package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
  105. package/fesm2022/neural-ui-core-switch.mjs +9 -15
  106. package/fesm2022/neural-ui-core-switch.mjs.map +1 -1
  107. package/fesm2022/neural-ui-core-table.mjs +124 -242
  108. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  109. package/fesm2022/neural-ui-core-tabs.mjs +18 -30
  110. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
  111. package/fesm2022/neural-ui-core-textarea.mjs +23 -43
  112. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
  113. package/fesm2022/neural-ui-core-timeline-grid.mjs +12 -21
  114. package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -1
  115. package/fesm2022/neural-ui-core-timeline.mjs +4 -5
  116. package/fesm2022/neural-ui-core-timeline.mjs.map +1 -1
  117. package/fesm2022/neural-ui-core-toast.mjs +8 -10
  118. package/fesm2022/neural-ui-core-toast.mjs.map +1 -1
  119. package/fesm2022/neural-ui-core-toggle-button-group.mjs +10 -17
  120. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
  121. package/fesm2022/neural-ui-core-toolbar.mjs +8 -13
  122. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
  123. package/fesm2022/neural-ui-core-tooltip.mjs +11 -16
  124. package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -1
  125. package/fesm2022/neural-ui-core-tree-table.mjs +30 -57
  126. package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
  127. package/fesm2022/neural-ui-core-tree.mjs +17 -31
  128. package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
  129. package/fesm2022/neural-ui-core-uploader.mjs +47 -91
  130. package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
  131. package/fesm2022/neural-ui-core-url-state.mjs +5 -7
  132. package/fesm2022/neural-ui-core-url-state.mjs.map +1 -1
  133. package/fesm2022/neural-ui-core-virtual-list.mjs +19 -32
  134. package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
  135. package/package.json +6 -6
@@ -48,43 +48,32 @@ function defaultCalendarLabels(locale) {
48
48
  return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;
49
49
  }
50
50
  class NeuCalendarComponent {
51
- events = input([], /* @ts-ignore */
52
- ...(ngDevMode ? [{ debugName: "events" }] : /* istanbul ignore next */ []));
53
- view = input('month', /* @ts-ignore */
54
- ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
55
- selectedDate = input(new Date(), /* @ts-ignore */
56
- ...(ngDevMode ? [{ debugName: "selectedDate" }] : /* istanbul ignore next */ []));
57
- locale = input(defaultCalendarLocale(), /* @ts-ignore */
58
- ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
59
- maxVisibleEvents = input(3, /* @ts-ignore */
60
- ...(ngDevMode ? [{ debugName: "maxVisibleEvents" }] : /* istanbul ignore next */ []));
61
- showHeader = input(true, /* @ts-ignore */
62
- ...(ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []));
63
- labels = input({}, /* @ts-ignore */
64
- ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
51
+ events = input([], ...(ngDevMode ? [{ debugName: "events" }] : /* istanbul ignore next */ []));
52
+ view = input('month', ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
53
+ selectedDate = input(new Date(), ...(ngDevMode ? [{ debugName: "selectedDate" }] : /* istanbul ignore next */ []));
54
+ locale = input(defaultCalendarLocale(), ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
55
+ maxVisibleEvents = input(3, ...(ngDevMode ? [{ debugName: "maxVisibleEvents" }] : /* istanbul ignore next */ []));
56
+ showHeader = input(true, ...(ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []));
57
+ labels = input({}, ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
65
58
  selectedDateChange = output();
66
59
  dateSelect = output();
67
60
  eventClick = output();
68
- _selectedDate = signal(startOfDay(new Date()), /* @ts-ignore */
69
- ...(ngDevMode ? [{ debugName: "_selectedDate" }] : /* istanbul ignore next */ []));
61
+ _selectedDate = signal(startOfDay(new Date()), ...(ngDevMode ? [{ debugName: "_selectedDate" }] : /* istanbul ignore next */ []));
70
62
  resolvedLabels = computed(() => ({
71
63
  ...defaultCalendarLabels(this.locale()),
72
64
  ...this.labels(),
73
- }), /* @ts-ignore */
74
- ...(ngDevMode ? [{ debugName: "resolvedLabels" }] : /* istanbul ignore next */ []));
65
+ }), ...(ngDevMode ? [{ debugName: "resolvedLabels" }] : /* istanbul ignore next */ []));
75
66
  normalizedEvents = computed(() => this.events()
76
67
  .map((event) => ({
77
68
  ...event,
78
69
  start: this.coerceDate(event.start),
79
70
  end: event.end ? this.coerceDate(event.end) : undefined,
80
71
  }))
81
- .sort((a, b) => a.start.getTime() - b.start.getTime()), /* @ts-ignore */
82
- ...(ngDevMode ? [{ debugName: "normalizedEvents" }] : /* istanbul ignore next */ []));
72
+ .sort((a, b) => a.start.getTime() - b.start.getTime()), ...(ngDevMode ? [{ debugName: "normalizedEvents" }] : /* istanbul ignore next */ []));
83
73
  weekdays = computed(() => {
84
74
  const base = startOfWeek(new Date(2026, 0, 5));
85
75
  return Array.from({ length: 7 }, (_, index) => new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)));
86
- }, /* @ts-ignore */
87
- ...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
76
+ }, ...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
88
77
  monthDays = computed(() => {
89
78
  const selected = this._selectedDate();
90
79
  const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);
@@ -93,23 +82,18 @@ class NeuCalendarComponent {
93
82
  const date = addDays(gridStart, index);
94
83
  return this.buildDayCell(date, date.getMonth() === selected.getMonth());
95
84
  });
96
- }, /* @ts-ignore */
97
- ...(ngDevMode ? [{ debugName: "monthDays" }] : /* istanbul ignore next */ []));
85
+ }, ...(ngDevMode ? [{ debugName: "monthDays" }] : /* istanbul ignore next */ []));
98
86
  weekDays = computed(() => {
99
87
  const start = startOfWeek(this._selectedDate());
100
88
  return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));
101
- }, /* @ts-ignore */
102
- ...(ngDevMode ? [{ debugName: "weekDays" }] : /* istanbul ignore next */ []));
103
- selectedDay = computed(() => this.buildDayCell(this._selectedDate(), true), /* @ts-ignore */
104
- ...(ngDevMode ? [{ debugName: "selectedDay" }] : /* istanbul ignore next */ []));
105
- selectedDayEvents = computed(() => this.selectedDay().events, /* @ts-ignore */
106
- ...(ngDevMode ? [{ debugName: "selectedDayEvents" }] : /* istanbul ignore next */ []));
89
+ }, ...(ngDevMode ? [{ debugName: "weekDays" }] : /* istanbul ignore next */ []));
90
+ selectedDay = computed(() => this.buildDayCell(this._selectedDate(), true), ...(ngDevMode ? [{ debugName: "selectedDay" }] : /* istanbul ignore next */ []));
91
+ selectedDayEvents = computed(() => this.selectedDay().events, ...(ngDevMode ? [{ debugName: "selectedDayEvents" }] : /* istanbul ignore next */ []));
107
92
  selectedAgendaLabel = computed(() => new Intl.DateTimeFormat(this.locale(), {
108
93
  weekday: 'long',
109
94
  month: 'long',
110
95
  day: 'numeric',
111
- }).format(this._selectedDate()), /* @ts-ignore */
112
- ...(ngDevMode ? [{ debugName: "selectedAgendaLabel" }] : /* istanbul ignore next */ []));
96
+ }).format(this._selectedDate()), ...(ngDevMode ? [{ debugName: "selectedAgendaLabel" }] : /* istanbul ignore next */ []));
113
97
  currentLabel = computed(() => {
114
98
  const selected = this._selectedDate();
115
99
  if (this.view() === 'month') {
@@ -119,8 +103,7 @@ class NeuCalendarComponent {
119
103
  const weekEnd = addDays(weekStart, 6);
120
104
  const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });
121
105
  return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;
122
- }, /* @ts-ignore */
123
- ...(ngDevMode ? [{ debugName: "currentLabel" }] : /* istanbul ignore next */ []));
106
+ }, ...(ngDevMode ? [{ debugName: "currentLabel" }] : /* istanbul ignore next */ []));
124
107
  constructor() {
125
108
  effect(() => {
126
109
  this._selectedDate.set(this.coerceDate(this.selectedDate()));
@@ -222,8 +205,8 @@ class NeuCalendarComponent {
222
205
  const candidate = value instanceof Date ? value : new Date(value);
223
206
  return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);
224
207
  }
225
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
226
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NeuCalendarComponent, isStandalone: true, selector: "neu-calendar", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleEvents: { classPropertyName: "maxVisibleEvents", publicName: "maxVisibleEvents", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDateChange: "selectedDateChange", dateSelect: "dateSelect", eventClick: "eventClick" }, ngImport: i0, template: `
208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
209
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: NeuCalendarComponent, isStandalone: true, selector: "neu-calendar", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleEvents: { classPropertyName: "maxVisibleEvents", publicName: "maxVisibleEvents", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDateChange: "selectedDateChange", dateSelect: "dateSelect", eventClick: "eventClick" }, ngImport: i0, template: `
227
210
  <div
228
211
  class="neu-calendar"
229
212
  [class.neu-calendar--month]="view() === 'month'"
@@ -394,7 +377,7 @@ class NeuCalendarComponent {
394
377
  </div>
395
378
  `, isInline: true, styles: [".neu-calendar{display:grid;gap:var(--neu-space-4);padding:var(--neu-space-4);overflow:hidden;border-radius:calc(var(--neu-radius-lg) + 4px);background:radial-gradient(circle at top left,color-mix(in srgb,var(--neu-primary) 6%,transparent 94%),transparent 30%),linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 82%,var(--neu-surface) 18%),var(--neu-surface));border:1px solid color-mix(in srgb,var(--neu-border) 92%,transparent 8%);box-shadow:var(--neu-shadow-sm)}.neu-calendar--month .neu-calendar__weekdays,.neu-calendar--month .neu-calendar__month-grid{min-width:800px}.neu-calendar--month .neu-calendar__month-grid{grid-auto-rows:172px}.neu-calendar--month .neu-calendar__day{min-height:0;height:100%}.neu-calendar--month .neu-calendar__event-list{max-height:100%}.neu-calendar--week .neu-calendar__weekdays,.neu-calendar--week .neu-calendar__week-grid{min-width:0}.neu-calendar__viewport{display:grid;gap:8px;overflow-x:auto;overflow-y:hidden;min-width:0;scrollbar-gutter:stable}.neu-calendar__viewport{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--neu-border) 88%,transparent 12%) transparent}.neu-calendar__viewport::-webkit-scrollbar{height:8px}.neu-calendar__viewport::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px}.neu-calendar__header{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-4);flex-wrap:wrap}.neu-calendar__nav{display:inline-flex;align-items:center;gap:var(--neu-space-2)}.neu-calendar__title{margin:0;font-size:clamp(1.05rem,1vw + .9rem,1.35rem);font-weight:700;color:var(--neu-text);text-transform:capitalize}.neu-calendar__nav-btn{min-width:36px;height:36px;border:1px solid color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px;background:color-mix(in srgb,var(--neu-surface) 88%,var(--neu-surface-2) 12%);color:var(--neu-text);cursor:pointer;transition:transform var(--neu-transition),border-color var(--neu-transition),background var(--neu-transition)}.neu-calendar__nav-btn:hover,.neu-calendar__today:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--neu-primary) 45%,var(--neu-border) 55%)}.neu-calendar__today{height:36px;padding:0 var(--neu-space-3);border:1px solid color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px;background:color-mix(in srgb,var(--neu-surface-2) 92%,var(--neu-surface) 8%);color:var(--neu-text);cursor:pointer;font-weight:600;transition:transform var(--neu-transition),border-color var(--neu-transition),background var(--neu-transition)}.neu-calendar__weekdays,.neu-calendar__month-grid,.neu-calendar__week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;background:transparent;border:none;border-radius:0;overflow:visible}.neu-calendar__weekday{padding:0 8px 6px;text-align:center;background:transparent;color:var(--neu-text-muted);font-size:var(--neu-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.neu-calendar__day{min-height:110px;padding:10px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 96%,var(--neu-surface-2) 4%),color-mix(in srgb,var(--neu-surface) 88%,black 12%));display:grid;grid-template-rows:auto minmax(0,1fr);align-content:start;gap:var(--neu-space-2);cursor:pointer;text-align:left;box-sizing:border-box;min-width:0;overflow:hidden;box-shadow:0 12px 24px -24px color-mix(in srgb,black 32%,transparent 68%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%);transition:background var(--neu-transition),box-shadow var(--neu-transition),border-color var(--neu-transition),transform var(--neu-transition)}.neu-calendar__day--outside{background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 90%,black 10%),color-mix(in srgb,var(--neu-surface-2) 82%,black 18%));box-shadow:none;opacity:.72}.neu-calendar__day--today{border-color:color-mix(in srgb,var(--neu-primary) 36%,var(--neu-border) 64%);background:linear-gradient(180deg,color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%),color-mix(in srgb,var(--neu-primary) 6%,var(--neu-surface) 94%));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--neu-primary) 22%,transparent 78%),0 12px 26px -24px color-mix(in srgb,var(--neu-primary) 18%,transparent 82%)}.neu-calendar__day--selected{background:linear-gradient(180deg,color-mix(in srgb,var(--neu-primary) 14%,var(--neu-surface) 86%),color-mix(in srgb,var(--neu-primary) 8%,var(--neu-surface) 92%));border-color:color-mix(in srgb,var(--neu-primary) 38%,var(--neu-border) 62%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--neu-primary) 22%,transparent 78%),0 12px 24px -24px color-mix(in srgb,var(--neu-primary) 18%,transparent 82%)}.neu-calendar__day:hover,.neu-calendar__week-day:hover{background:color-mix(in srgb,var(--neu-primary) 4%,var(--neu-surface) 96%);border-color:color-mix(in srgb,var(--neu-primary) 22%,var(--neu-border) 78%);transform:translateY(-1px)}.neu-calendar__day-select:focus-visible,.neu-calendar__event:focus-visible,.neu-calendar__nav-btn:focus-visible,.neu-calendar__today:focus-visible{outline:2px solid color-mix(in srgb,var(--neu-primary) 75%,white 25%);outline-offset:-2px}.neu-calendar__day-top{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-2);min-width:0}.neu-calendar__day-select{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-2);width:100%;min-width:0;padding:0;border:0;border-radius:999px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.neu-calendar__day-count{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%);color:var(--neu-text);font-size:11px;font-weight:700;flex-shrink:0}.neu-calendar__day-number{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;font-size:var(--neu-text-sm);color:var(--neu-text)}.neu-calendar__day--selected .neu-calendar__day-number{background:color-mix(in srgb,var(--neu-primary) 78%,black 22%);color:#fff}.neu-calendar__event-list{display:grid;gap:4px;align-content:start;overflow-x:hidden;overflow-y:auto;min-height:0;min-width:0;width:100%;padding-right:2px;scrollbar-gutter:stable}.neu-calendar__event-list{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--neu-border) 88%,transparent 12%) transparent}.neu-calendar__event-list::-webkit-scrollbar{width:6px}.neu-calendar__event-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--neu-border) 88%,transparent 12%);border-radius:999px}.neu-calendar__event{display:grid;gap:2px;width:100%;justify-self:stretch;align-self:start;padding:8px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-left:2px solid var(--neu-primary);border-radius:14px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 46%,var(--neu-surface) 54%),color-mix(in srgb,var(--neu-surface) 74%,black 26%));text-align:left;cursor:pointer;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent 94%),0 10px 18px -20px color-mix(in srgb,black 34%,transparent 66%);min-width:0;box-sizing:border-box;max-width:100%;overflow:hidden}.neu-calendar__event--compact{gap:1px;padding:5px 6px;border-radius:12px;box-shadow:none}.neu-calendar__event--compact .neu-calendar__event-title,.neu-calendar__event--compact .neu-calendar__event-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__event--compact .neu-calendar__event-title{font-size:11px}.neu-calendar__event--compact .neu-calendar__event-meta{font-size:10px}.neu-calendar__event--default{border-left-color:var(--neu-primary)}.neu-calendar__event--success{border-left-color:var(--neu-success)}.neu-calendar__event--warning{border-left-color:var(--neu-warning)}.neu-calendar__event--danger{border-left-color:var(--neu-danger)}.neu-calendar__event--info{border-left-color:#0ea5e9}.neu-calendar__event-title{font-size:var(--neu-text-xs);font-weight:700;color:var(--neu-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__event-meta{font-size:11px;color:var(--neu-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.neu-calendar__more{display:inline-flex;align-items:center;justify-content:center;min-height:28px;width:100%;padding:0 8px;border-radius:12px;border:1px dashed color-mix(in srgb,var(--neu-border) 92%,transparent 8%);background:color-mix(in srgb,var(--neu-surface-2) 72%,var(--neu-surface) 28%);font-size:11px;color:var(--neu-text-muted);box-sizing:border-box}.neu-calendar__more--summary{font-weight:700;letter-spacing:.01em}.neu-calendar__agenda{display:grid;gap:var(--neu-space-3);padding:14px;min-width:0;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 94%,var(--neu-surface-2) 6%),color-mix(in srgb,var(--neu-surface) 86%,black 14%));box-shadow:0 12px 24px -24px color-mix(in srgb,black 28%,transparent 72%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%)}.neu-calendar__agenda-header{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-3);flex-wrap:wrap}.neu-calendar__agenda-title{margin:0;font-size:var(--neu-text-base);font-weight:700;color:var(--neu-text);text-transform:capitalize}.neu-calendar__agenda-count{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--neu-primary) 10%,var(--neu-surface) 90%);color:var(--neu-text);font-size:11px;font-weight:700}.neu-calendar__agenda-list{display:grid;gap:8px}.neu-calendar__agenda-event{min-height:48px}.neu-calendar__agenda-empty{margin:0;color:var(--neu-text-muted);font-size:var(--neu-text-sm)}.neu-calendar__week-day{min-height:220px;border:1px solid color-mix(in srgb,var(--neu-border) 94%,transparent 6%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface) 94%,var(--neu-surface-2) 6%),color-mix(in srgb,var(--neu-surface) 84%,black 16%));display:grid;grid-template-rows:auto 1fr;text-align:left;box-sizing:border-box;min-width:0;overflow:hidden;box-shadow:0 12px 24px -24px color-mix(in srgb,black 32%,transparent 68%),inset 0 1px color-mix(in srgb,white 8%,transparent 92%)}.neu-calendar__week-head{display:grid;gap:4px;width:100%;padding:14px 12px 12px;border:0;border-bottom:1px solid color-mix(in srgb,var(--neu-border) 90%,transparent 10%);background:linear-gradient(180deg,color-mix(in srgb,var(--neu-surface-2) 78%,transparent 22%),transparent);border-radius:18px 18px 0 0;cursor:pointer}.neu-calendar__week-date{font-size:var(--neu-text-xs);color:var(--neu-text-muted)}.neu-calendar__week-events{scrollbar-width:none}.neu-calendar__week-events::-webkit-scrollbar{display:none}.neu-calendar__week-events{padding:12px;display:grid;align-content:start;gap:var(--neu-space-2);overflow:hidden;min-height:0;min-width:0}.neu-calendar__empty{margin:0;font-size:var(--neu-text-sm);color:var(--neu-text-muted);line-height:1.35}@media(max-width:860px){.neu-calendar{padding:var(--neu-space-3)}.neu-calendar--month .neu-calendar__weekdays,.neu-calendar--month .neu-calendar__month-grid{min-width:760px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
396
379
  }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuCalendarComponent, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCalendarComponent, decorators: [{
398
381
  type: Component,
399
382
  args: [{ selector: 'neu-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: `
400
383
  <div
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-calendar.mjs","sources":["../../../../projects/ui-core/calendar/neu-calendar.component.ts","../../../../projects/ui-core/calendar/neural-ui-core-calendar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport type NeuCalendarView = 'month' | 'week';\nexport type NeuCalendarEventVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface NeuCalendarEvent {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n description?: string;\n meta?: string;\n allDay?: boolean;\n variant?: NeuCalendarEventVariant;\n}\n\nexport interface NeuCalendarLabels {\n previousButtonAriaLabel: string;\n nextButtonAriaLabel: string;\n todayButton: string;\n allDay: string;\n noEvents: string;\n eventCount: (count: number) => string;\n moreEvents: (count: number) => string;\n}\n\nexport type NeuCalendarLabelOverrides = Partial<NeuCalendarLabels>;\n\ninterface NormalizedCalendarEvent extends Omit<NeuCalendarEvent, 'start' | 'end'> {\n start: Date;\n end?: Date;\n}\n\ninterface CalendarDayCell {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n events: NormalizedCalendarEvent[];\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction sameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nfunction addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, date.getDate());\n}\n\nfunction startOfWeek(date: Date): Date {\n const normalized = startOfDay(date);\n const day = normalized.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n return addDays(normalized, diff);\n}\n\nconst EN_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Previous',\n nextButtonAriaLabel: 'Next',\n todayButton: 'Today',\n allDay: 'All day',\n noEvents: 'No events',\n eventCount: (count) => `${count} ${count === 1 ? 'event' : 'events'}`,\n moreEvents: (count) => `+${count} more`,\n};\n\nconst ES_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Anterior',\n nextButtonAriaLabel: 'Siguiente',\n todayButton: 'Hoy',\n allDay: 'Todo el dia',\n noEvents: 'Sin eventos',\n eventCount: (count) => `${count} evento${count === 1 ? '' : 's'}`,\n moreEvents: (count) => `+${count} mas`,\n};\n\nfunction defaultCalendarLocale(): string {\n return typeof navigator !== 'undefined' && navigator.language ? navigator.language : 'en-US';\n}\n\nfunction defaultCalendarLabels(locale: string): NeuCalendarLabels {\n return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;\n}\n\n@Component({\n selector: 'neu-calendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"neu-calendar\"\n [class.neu-calendar--month]=\"view() === 'month'\"\n [class.neu-calendar--week]=\"view() === 'week'\"\n >\n @if (showHeader()) {\n <header class=\"neu-calendar__header\">\n <div>\n <h3 class=\"neu-calendar__title\">{{ currentLabel() }}</h3>\n </div>\n\n <div class=\"neu-calendar__nav\">\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().previousButtonAriaLabel\"\n (click)=\"prev()\"\n >\n ‹\n </button>\n <button type=\"button\" class=\"neu-calendar__today\" (click)=\"today()\">\n {{ resolvedLabels().todayButton }}\n </button>\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().nextButtonAriaLabel\"\n (click)=\"next()\"\n >\n ›\n </button>\n </div>\n </header>\n }\n\n <div class=\"neu-calendar__viewport\">\n <div class=\"neu-calendar__weekdays\">\n @for (weekday of weekdays(); track $index) {\n <div class=\"neu-calendar__weekday\">{{ weekday }}</div>\n }\n </div>\n\n @if (view() === 'month') {\n <div class=\"neu-calendar__month-grid\">\n @for (day of monthDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--outside]=\"!day.inCurrentMonth\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <div class=\"neu-calendar__day-top\">\n <button\n type=\"button\"\n class=\"neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n @if (day.events.length > 0) {\n <span class=\"neu-calendar__day-count\">{{ day.events.length }}</span>\n }\n </button>\n </div>\n <div class=\"neu-calendar__event-list\">\n @for (event of monthVisibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event neu-calendar__event--compact\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--compact neu-calendar__event--' +\n (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n </article>\n }\n </div>\n } @else {\n <div class=\"neu-calendar__week-grid\">\n @for (day of weekDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__week-day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <button\n type=\"button\"\n class=\"neu-calendar__week-head neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n <span class=\"neu-calendar__week-date\">{{ formatWeekDate(day.date) }}</span>\n </button>\n\n <div class=\"neu-calendar__week-events\">\n @if (day.events.length === 0) {\n <p class=\"neu-calendar__empty\">{{ resolvedLabels().noEvents }}</p>\n }\n\n @for (event of visibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--' + (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n\n @if (day.events.length > maxVisibleEvents()) {\n <span class=\"neu-calendar__more\">{{\n resolvedLabels().moreEvents(day.events.length - maxVisibleEvents())\n }}</span>\n }\n </div>\n </article>\n }\n </div>\n }\n </div>\n\n <section class=\"neu-calendar__agenda\" aria-live=\"polite\">\n <div class=\"neu-calendar__agenda-header\">\n <h4 class=\"neu-calendar__agenda-title\">{{ selectedAgendaLabel() }}</h4>\n <span class=\"neu-calendar__agenda-count\">{{\n resolvedLabels().eventCount(selectedDayEvents().length)\n }}</span>\n </div>\n\n @if (selectedDayEvents().length === 0) {\n <p class=\"neu-calendar__agenda-empty\">{{ resolvedLabels().noEvents }}</p>\n } @else {\n <div class=\"neu-calendar__agenda-list\">\n @for (event of selectedDayEvents(); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__agenda-event neu-calendar__event neu-calendar__event--{{\n event.variant || 'default'\n }}\"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n }\n </section>\n </div>\n `,\n styleUrl: './neu-calendar.component.scss',\n})\nexport class NeuCalendarComponent {\n readonly events = input<NeuCalendarEvent[]>([]);\n readonly view = input<NeuCalendarView>('month');\n readonly selectedDate = input<Date | string>(new Date());\n readonly locale = input<string>(defaultCalendarLocale());\n readonly maxVisibleEvents = input<number>(3);\n readonly showHeader = input<boolean>(true);\n readonly labels = input<NeuCalendarLabelOverrides>({});\n\n readonly selectedDateChange = output<Date>();\n readonly dateSelect = output<Date>();\n readonly eventClick = output<NeuCalendarEvent>();\n\n private readonly _selectedDate = signal(startOfDay(new Date()));\n\n readonly resolvedLabels = computed<NeuCalendarLabels>(() => ({\n ...defaultCalendarLabels(this.locale()),\n ...this.labels(),\n }));\n\n readonly normalizedEvents = computed<NormalizedCalendarEvent[]>(() =>\n this.events()\n .map((event) => ({\n ...event,\n start: this.coerceDate(event.start),\n end: event.end ? this.coerceDate(event.end) : undefined,\n }))\n .sort((a, b) => a.start.getTime() - b.start.getTime()),\n );\n\n readonly weekdays = computed(() => {\n const base = startOfWeek(new Date(2026, 0, 5));\n return Array.from({ length: 7 }, (_, index) =>\n new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)),\n );\n });\n\n readonly monthDays = computed<CalendarDayCell[]>(() => {\n const selected = this._selectedDate();\n const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);\n const gridStart = startOfWeek(firstDayOfMonth);\n return Array.from({ length: 42 }, (_, index) => {\n const date = addDays(gridStart, index);\n return this.buildDayCell(date, date.getMonth() === selected.getMonth());\n });\n });\n\n readonly weekDays = computed<CalendarDayCell[]>(() => {\n const start = startOfWeek(this._selectedDate());\n return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));\n });\n\n readonly selectedDay = computed<CalendarDayCell>(() =>\n this.buildDayCell(this._selectedDate(), true),\n );\n\n readonly selectedDayEvents = computed<NormalizedCalendarEvent[]>(() => this.selectedDay().events);\n\n readonly selectedAgendaLabel = computed(() =>\n new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n }).format(this._selectedDate()),\n );\n\n readonly currentLabel = computed(() => {\n const selected = this._selectedDate();\n if (this.view() === 'month') {\n return new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' }).format(\n selected,\n );\n }\n\n const weekStart = startOfWeek(selected);\n const weekEnd = addDays(weekStart, 6);\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });\n return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;\n });\n\n constructor() {\n effect(() => {\n this._selectedDate.set(this.coerceDate(this.selectedDate()));\n });\n }\n\n prev(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), -1)\n : addDays(this._selectedDate(), -7),\n );\n }\n\n next(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), 1)\n : addDays(this._selectedDate(), 7),\n );\n }\n\n today(): void {\n this.selectDate(new Date());\n }\n\n selectDate(date: Date): void {\n const nextDate = startOfDay(date);\n this._selectedDate.set(nextDate);\n this.selectedDateChange.emit(nextDate);\n this.dateSelect.emit(nextDate);\n }\n\n visibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.maxVisibleEvents());\n }\n\n monthVisibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.monthVisibleEventLimit(events.length));\n }\n\n formatEventMeta(event: NormalizedCalendarEvent): string {\n if (event.meta) return event.meta;\n if (event.allDay) return this.resolvedLabels().allDay;\n return new Intl.DateTimeFormat(this.locale(), {\n hour: '2-digit',\n minute: '2-digit',\n }).format(event.start);\n }\n\n eventTooltip(event: NormalizedCalendarEvent): string {\n const meta = this.formatEventMeta(event);\n return meta ? `${event.title} · ${meta}` : event.title;\n }\n\n formatWeekDate(date: Date): string {\n return new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' }).format(date);\n }\n\n formatDayAriaLabel(day: CalendarDayCell): string {\n const dateLabel = new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(day.date);\n const eventLabel = this.resolvedLabels().eventCount(day.events.length);\n return `${dateLabel}, ${eventLabel}`;\n }\n\n onDaySpace(event: Event, date: Date): void {\n event.preventDefault();\n this.selectDate(date);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.selectDate(date);\n return;\n }\n\n if (event.key === ' ' || event.key === 'Spacebar') {\n this.onDaySpace(event, date);\n }\n }\n\n onEventClick(event: MouseEvent, calendarEvent: NormalizedCalendarEvent): void {\n event.stopPropagation();\n this.eventClick.emit({\n ...calendarEvent,\n start: new Date(calendarEvent.start),\n end: calendarEvent.end ? new Date(calendarEvent.end) : undefined,\n });\n }\n\n private buildDayCell(date: Date, inCurrentMonth: boolean): CalendarDayCell {\n const normalizedDate = startOfDay(date);\n const today = startOfDay(new Date());\n return {\n date: normalizedDate,\n inCurrentMonth,\n isToday: sameDay(normalizedDate, today),\n isSelected: sameDay(normalizedDate, this._selectedDate()),\n events: this.normalizedEvents().filter((event) => sameDay(event.start, normalizedDate)),\n };\n }\n\n private monthVisibleEventLimit(eventCount: number): number {\n const limit = this.maxVisibleEvents();\n if (eventCount <= limit || limit <= 1) {\n return limit;\n }\n\n return limit - 1;\n }\n\n private coerceDate(value: Date | string): Date {\n const candidate = value instanceof Date ? value : new Date(value);\n return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neural-ui-core-calendar.mjs","sources":["../../../../projects/ui-core/calendar/neu-calendar.component.ts","../../../../projects/ui-core/calendar/neural-ui-core-calendar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport type NeuCalendarView = 'month' | 'week';\nexport type NeuCalendarEventVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface NeuCalendarEvent {\n id: string;\n title: string;\n start: string | Date;\n end?: string | Date;\n description?: string;\n meta?: string;\n allDay?: boolean;\n variant?: NeuCalendarEventVariant;\n}\n\nexport interface NeuCalendarLabels {\n previousButtonAriaLabel: string;\n nextButtonAriaLabel: string;\n todayButton: string;\n allDay: string;\n noEvents: string;\n eventCount: (count: number) => string;\n moreEvents: (count: number) => string;\n}\n\nexport type NeuCalendarLabelOverrides = Partial<NeuCalendarLabels>;\n\ninterface NormalizedCalendarEvent extends Omit<NeuCalendarEvent, 'start' | 'end'> {\n start: Date;\n end?: Date;\n}\n\ninterface CalendarDayCell {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n events: NormalizedCalendarEvent[];\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction sameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nfunction addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, date.getDate());\n}\n\nfunction startOfWeek(date: Date): Date {\n const normalized = startOfDay(date);\n const day = normalized.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n return addDays(normalized, diff);\n}\n\nconst EN_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Previous',\n nextButtonAriaLabel: 'Next',\n todayButton: 'Today',\n allDay: 'All day',\n noEvents: 'No events',\n eventCount: (count) => `${count} ${count === 1 ? 'event' : 'events'}`,\n moreEvents: (count) => `+${count} more`,\n};\n\nconst ES_CALENDAR_LABELS: NeuCalendarLabels = {\n previousButtonAriaLabel: 'Anterior',\n nextButtonAriaLabel: 'Siguiente',\n todayButton: 'Hoy',\n allDay: 'Todo el dia',\n noEvents: 'Sin eventos',\n eventCount: (count) => `${count} evento${count === 1 ? '' : 's'}`,\n moreEvents: (count) => `+${count} mas`,\n};\n\nfunction defaultCalendarLocale(): string {\n return typeof navigator !== 'undefined' && navigator.language ? navigator.language : 'en-US';\n}\n\nfunction defaultCalendarLabels(locale: string): NeuCalendarLabels {\n return locale.toLowerCase().startsWith('es') ? ES_CALENDAR_LABELS : EN_CALENDAR_LABELS;\n}\n\n@Component({\n selector: 'neu-calendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"neu-calendar\"\n [class.neu-calendar--month]=\"view() === 'month'\"\n [class.neu-calendar--week]=\"view() === 'week'\"\n >\n @if (showHeader()) {\n <header class=\"neu-calendar__header\">\n <div>\n <h3 class=\"neu-calendar__title\">{{ currentLabel() }}</h3>\n </div>\n\n <div class=\"neu-calendar__nav\">\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().previousButtonAriaLabel\"\n (click)=\"prev()\"\n >\n ‹\n </button>\n <button type=\"button\" class=\"neu-calendar__today\" (click)=\"today()\">\n {{ resolvedLabels().todayButton }}\n </button>\n <button\n type=\"button\"\n class=\"neu-calendar__nav-btn\"\n [attr.aria-label]=\"resolvedLabels().nextButtonAriaLabel\"\n (click)=\"next()\"\n >\n ›\n </button>\n </div>\n </header>\n }\n\n <div class=\"neu-calendar__viewport\">\n <div class=\"neu-calendar__weekdays\">\n @for (weekday of weekdays(); track $index) {\n <div class=\"neu-calendar__weekday\">{{ weekday }}</div>\n }\n </div>\n\n @if (view() === 'month') {\n <div class=\"neu-calendar__month-grid\">\n @for (day of monthDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--outside]=\"!day.inCurrentMonth\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <div class=\"neu-calendar__day-top\">\n <button\n type=\"button\"\n class=\"neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n @if (day.events.length > 0) {\n <span class=\"neu-calendar__day-count\">{{ day.events.length }}</span>\n }\n </button>\n </div>\n <div class=\"neu-calendar__event-list\">\n @for (event of monthVisibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event neu-calendar__event--compact\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--compact neu-calendar__event--' +\n (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n </article>\n }\n </div>\n } @else {\n <div class=\"neu-calendar__week-grid\">\n @for (day of weekDays(); track day.date.toISOString()) {\n <article\n class=\"neu-calendar__week-day\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n [class.neu-calendar__day--today]=\"day.isToday\"\n [class.neu-calendar__day--selected]=\"day.isSelected\"\n >\n <button\n type=\"button\"\n class=\"neu-calendar__week-head neu-calendar__day-select\"\n [attr.aria-label]=\"formatDayAriaLabel(day)\"\n (click)=\"selectDate(day.date)\"\n >\n <span class=\"neu-calendar__day-number\">{{ day.date.getDate() }}</span>\n <span class=\"neu-calendar__week-date\">{{ formatWeekDate(day.date) }}</span>\n </button>\n\n <div class=\"neu-calendar__week-events\">\n @if (day.events.length === 0) {\n <p class=\"neu-calendar__empty\">{{ resolvedLabels().noEvents }}</p>\n }\n\n @for (event of visibleEvents(day.events); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__event\"\n [class]=\"\n 'neu-calendar__event neu-calendar__event--' + (event.variant || 'default')\n \"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n\n @if (day.events.length > maxVisibleEvents()) {\n <span class=\"neu-calendar__more\">{{\n resolvedLabels().moreEvents(day.events.length - maxVisibleEvents())\n }}</span>\n }\n </div>\n </article>\n }\n </div>\n }\n </div>\n\n <section class=\"neu-calendar__agenda\" aria-live=\"polite\">\n <div class=\"neu-calendar__agenda-header\">\n <h4 class=\"neu-calendar__agenda-title\">{{ selectedAgendaLabel() }}</h4>\n <span class=\"neu-calendar__agenda-count\">{{\n resolvedLabels().eventCount(selectedDayEvents().length)\n }}</span>\n </div>\n\n @if (selectedDayEvents().length === 0) {\n <p class=\"neu-calendar__agenda-empty\">{{ resolvedLabels().noEvents }}</p>\n } @else {\n <div class=\"neu-calendar__agenda-list\">\n @for (event of selectedDayEvents(); track event.id) {\n <button\n type=\"button\"\n class=\"neu-calendar__agenda-event neu-calendar__event neu-calendar__event--{{\n event.variant || 'default'\n }}\"\n [attr.title]=\"eventTooltip(event)\"\n [attr.aria-label]=\"eventTooltip(event)\"\n (click)=\"onEventClick($event, event)\"\n >\n <span class=\"neu-calendar__event-title\">{{ event.title }}</span>\n <span class=\"neu-calendar__event-meta\">{{ formatEventMeta(event) }}</span>\n </button>\n }\n </div>\n }\n </section>\n </div>\n `,\n styleUrl: './neu-calendar.component.scss',\n})\nexport class NeuCalendarComponent {\n readonly events = input<NeuCalendarEvent[]>([]);\n readonly view = input<NeuCalendarView>('month');\n readonly selectedDate = input<Date | string>(new Date());\n readonly locale = input<string>(defaultCalendarLocale());\n readonly maxVisibleEvents = input<number>(3);\n readonly showHeader = input<boolean>(true);\n readonly labels = input<NeuCalendarLabelOverrides>({});\n\n readonly selectedDateChange = output<Date>();\n readonly dateSelect = output<Date>();\n readonly eventClick = output<NeuCalendarEvent>();\n\n private readonly _selectedDate = signal(startOfDay(new Date()));\n\n readonly resolvedLabels = computed<NeuCalendarLabels>(() => ({\n ...defaultCalendarLabels(this.locale()),\n ...this.labels(),\n }));\n\n readonly normalizedEvents = computed<NormalizedCalendarEvent[]>(() =>\n this.events()\n .map((event) => ({\n ...event,\n start: this.coerceDate(event.start),\n end: event.end ? this.coerceDate(event.end) : undefined,\n }))\n .sort((a, b) => a.start.getTime() - b.start.getTime()),\n );\n\n readonly weekdays = computed(() => {\n const base = startOfWeek(new Date(2026, 0, 5));\n return Array.from({ length: 7 }, (_, index) =>\n new Intl.DateTimeFormat(this.locale(), { weekday: 'short' }).format(addDays(base, index)),\n );\n });\n\n readonly monthDays = computed<CalendarDayCell[]>(() => {\n const selected = this._selectedDate();\n const firstDayOfMonth = new Date(selected.getFullYear(), selected.getMonth(), 1);\n const gridStart = startOfWeek(firstDayOfMonth);\n return Array.from({ length: 42 }, (_, index) => {\n const date = addDays(gridStart, index);\n return this.buildDayCell(date, date.getMonth() === selected.getMonth());\n });\n });\n\n readonly weekDays = computed<CalendarDayCell[]>(() => {\n const start = startOfWeek(this._selectedDate());\n return Array.from({ length: 7 }, (_, index) => this.buildDayCell(addDays(start, index), true));\n });\n\n readonly selectedDay = computed<CalendarDayCell>(() =>\n this.buildDayCell(this._selectedDate(), true),\n );\n\n readonly selectedDayEvents = computed<NormalizedCalendarEvent[]>(() => this.selectedDay().events);\n\n readonly selectedAgendaLabel = computed(() =>\n new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n }).format(this._selectedDate()),\n );\n\n readonly currentLabel = computed(() => {\n const selected = this._selectedDate();\n if (this.view() === 'month') {\n return new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' }).format(\n selected,\n );\n }\n\n const weekStart = startOfWeek(selected);\n const weekEnd = addDays(weekStart, 6);\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' });\n return `${formatter.format(weekStart)} - ${formatter.format(weekEnd)}`;\n });\n\n constructor() {\n effect(() => {\n this._selectedDate.set(this.coerceDate(this.selectedDate()));\n });\n }\n\n prev(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), -1)\n : addDays(this._selectedDate(), -7),\n );\n }\n\n next(): void {\n this.selectDate(\n this.view() === 'month'\n ? addMonths(this._selectedDate(), 1)\n : addDays(this._selectedDate(), 7),\n );\n }\n\n today(): void {\n this.selectDate(new Date());\n }\n\n selectDate(date: Date): void {\n const nextDate = startOfDay(date);\n this._selectedDate.set(nextDate);\n this.selectedDateChange.emit(nextDate);\n this.dateSelect.emit(nextDate);\n }\n\n visibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.maxVisibleEvents());\n }\n\n monthVisibleEvents(events: NormalizedCalendarEvent[]): NormalizedCalendarEvent[] {\n return events.slice(0, this.monthVisibleEventLimit(events.length));\n }\n\n formatEventMeta(event: NormalizedCalendarEvent): string {\n if (event.meta) return event.meta;\n if (event.allDay) return this.resolvedLabels().allDay;\n return new Intl.DateTimeFormat(this.locale(), {\n hour: '2-digit',\n minute: '2-digit',\n }).format(event.start);\n }\n\n eventTooltip(event: NormalizedCalendarEvent): string {\n const meta = this.formatEventMeta(event);\n return meta ? `${event.title} · ${meta}` : event.title;\n }\n\n formatWeekDate(date: Date): string {\n return new Intl.DateTimeFormat(this.locale(), { month: 'short', day: 'numeric' }).format(date);\n }\n\n formatDayAriaLabel(day: CalendarDayCell): string {\n const dateLabel = new Intl.DateTimeFormat(this.locale(), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(day.date);\n const eventLabel = this.resolvedLabels().eventCount(day.events.length);\n return `${dateLabel}, ${eventLabel}`;\n }\n\n onDaySpace(event: Event, date: Date): void {\n event.preventDefault();\n this.selectDate(date);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.selectDate(date);\n return;\n }\n\n if (event.key === ' ' || event.key === 'Spacebar') {\n this.onDaySpace(event, date);\n }\n }\n\n onEventClick(event: MouseEvent, calendarEvent: NormalizedCalendarEvent): void {\n event.stopPropagation();\n this.eventClick.emit({\n ...calendarEvent,\n start: new Date(calendarEvent.start),\n end: calendarEvent.end ? new Date(calendarEvent.end) : undefined,\n });\n }\n\n private buildDayCell(date: Date, inCurrentMonth: boolean): CalendarDayCell {\n const normalizedDate = startOfDay(date);\n const today = startOfDay(new Date());\n return {\n date: normalizedDate,\n inCurrentMonth,\n isToday: sameDay(normalizedDate, today),\n isSelected: sameDay(normalizedDate, this._selectedDate()),\n events: this.normalizedEvents().filter((event) => sameDay(event.start, normalizedDate)),\n };\n }\n\n private monthVisibleEventLimit(eventCount: number): number {\n const limit = this.maxVisibleEvents();\n if (eventCount <= limit || limit <= 1) {\n return limit;\n }\n\n return limit - 1;\n }\n\n private coerceDate(value: Date | string): Date {\n const candidate = value instanceof Date ? value : new Date(value);\n return Number.isNaN(candidate.getTime()) ? startOfDay(new Date()) : startOfDay(candidate);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -16,26 +16,21 @@ import { input, computed, ChangeDetectionStrategy, ViewEncapsulation, Component
16
16
  */
17
17
  class NeuCardComponent {
18
18
  /** Espaciado interior del cuerpo / Inner body padding */
19
- padding = input('md', /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
19
+ padding = input('md', ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
21
20
  /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */
22
- hoverable = input(false, /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "hoverable" }] : /* istanbul ignore next */ []));
21
+ hoverable = input(false, ...(ngDevMode ? [{ debugName: "hoverable" }] : /* istanbul ignore next */ []));
24
22
  /** Borde con acento de color primario / Border with primary color accent */
25
- bordered = input(false, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
23
+ bordered = input(false, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
27
24
  /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */
28
- flat = input(false, /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "flat" }] : /* istanbul ignore next */ []));
25
+ flat = input(false, ...(ngDevMode ? [{ debugName: "flat" }] : /* istanbul ignore next */ []));
30
26
  hostClasses = computed(() => ({
31
27
  'neu-card': true,
32
28
  'neu-card--hoverable': this.hoverable(),
33
29
  'neu-card--bordered': this.bordered(),
34
30
  'neu-card--flat': this.flat(),
35
- }), /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: NeuCardComponent, isStandalone: true, selector: "neu-card", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
31
+ }), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: NeuCardComponent, isStandalone: true, selector: "neu-card", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
39
34
  <div class="neu-card__inner">
40
35
  <div class="neu-card__header">
41
36
  <ng-content select="[neu-card-header]" />
@@ -49,7 +44,7 @@ class NeuCardComponent {
49
44
  </div>
50
45
  `, isInline: true, styles: [".neu-card{display:block;background:var(--neu-surface);border:1px solid var(--neu-border);border-radius:var(--neu-radius-lg);box-shadow:var(--neu-shadow-sm);overflow:visible;transition:box-shadow var(--neu-transition),border-color var(--neu-transition)}.neu-card--hoverable{cursor:pointer}.neu-card--hoverable:hover{box-shadow:var(--neu-shadow-lg);border-color:var(--neu-border-hover)}.neu-card--bordered{border-color:var(--neu-primary)}.neu-card--flat{box-shadow:none;border-color:var(--neu-border)}.neu-card--flat:hover{box-shadow:none}.neu-card__header{padding:var(--neu-space-4) var(--neu-space-5);border-bottom:1px solid var(--neu-border);font-size:var(--neu-text-sm);font-weight:600;color:var(--neu-text)}.neu-card__header:empty,.neu-card__header:not(:has(*)){display:none}.neu-card__body--none{padding:0}.neu-card__body--sm{padding:var(--neu-space-3) var(--neu-space-4)}.neu-card__body--md{padding:var(--neu-space-5)}.neu-card__body--lg{padding:var(--neu-space-6) var(--neu-space-8)}.neu-card__footer{padding:var(--neu-space-4) var(--neu-space-5);border-top:1px solid var(--neu-border);background:var(--neu-surface-2);display:flex;align-items:center;gap:var(--neu-space-3)}.neu-card__footer:empty,.neu-card__footer:not(:has(*)){display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
51
46
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuCardComponent, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuCardComponent, decorators: [{
53
48
  type: Component,
54
49
  args: [{ selector: 'neu-card', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class]': 'hostClasses()' }, template: `
55
50
  <div class="neu-card__inner">
@@ -1 +1 @@
1
- {"version":3,"file":"neural-ui-core-card.mjs","sources":["../../../../projects/ui-core/card/neu-card.component.ts","../../../../projects/ui-core/card/neural-ui-core-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type NeuCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * NeuralUI Card Component\n *\n * Contenedor con sombras y bordes Neural. Soporta header, body y footer\n * via content projection.\n *\n * Uso:\n * <neu-card>\n * <div neu-card-header>Título</div>\n * <p>Contenido</p>\n * <div neu-card-footer>Acciones</div>\n * </neu-card>\n */\n@Component({\n selector: 'neu-card',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClasses()' },\n template: `\n <div class=\"neu-card__inner\">\n <div class=\"neu-card__header\">\n <ng-content select=\"[neu-card-header]\" />\n </div>\n <div class=\"neu-card__body\" [class]=\"'neu-card__body--' + padding()\">\n <ng-content />\n </div>\n <div class=\"neu-card__footer\">\n <ng-content select=\"[neu-card-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './neu-card.component.scss',\n})\nexport class NeuCardComponent {\n /** Espaciado interior del cuerpo / Inner body padding */\n padding = input<NeuCardPadding>('md');\n\n /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */\n hoverable = input<boolean>(false);\n\n /** Borde con acento de color primario / Border with primary color accent */\n bordered = input<boolean>(false);\n\n /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */\n flat = input<boolean>(false);\n\n readonly hostClasses = computed(() => ({\n 'neu-card': true,\n 'neu-card--hoverable': this.hoverable(),\n 'neu-card--bordered': this.bordered(),\n 'neu-card--flat': this.flat(),\n }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;AAYG;MAsBU,gBAAgB,CAAA;;IAE3B,OAAO,GAAG,KAAK,CAAiB,IAAI;gFAAC;;IAGrC,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;;IAGjC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;;IAGhC,IAAI,GAAG,KAAK,CAAU,KAAK;6EAAC;AAEnB,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,qBAAqB,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrC,QAAA,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE;KAC9B,CAAC;oFAAC;uGAlBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfjB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,aAAA,EACI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAA,QAAA,EAC1B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA;;;ACzCH;;AAEG;;;;"}
1
+ {"version":3,"file":"neural-ui-core-card.mjs","sources":["../../../../projects/ui-core/card/neu-card.component.ts","../../../../projects/ui-core/card/neural-ui-core-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type NeuCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * NeuralUI Card Component\n *\n * Contenedor con sombras y bordes Neural. Soporta header, body y footer\n * via content projection.\n *\n * Uso:\n * <neu-card>\n * <div neu-card-header>Título</div>\n * <p>Contenido</p>\n * <div neu-card-footer>Acciones</div>\n * </neu-card>\n */\n@Component({\n selector: 'neu-card',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClasses()' },\n template: `\n <div class=\"neu-card__inner\">\n <div class=\"neu-card__header\">\n <ng-content select=\"[neu-card-header]\" />\n </div>\n <div class=\"neu-card__body\" [class]=\"'neu-card__body--' + padding()\">\n <ng-content />\n </div>\n <div class=\"neu-card__footer\">\n <ng-content select=\"[neu-card-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './neu-card.component.scss',\n})\nexport class NeuCardComponent {\n /** Espaciado interior del cuerpo / Inner body padding */\n padding = input<NeuCardPadding>('md');\n\n /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */\n hoverable = input<boolean>(false);\n\n /** Borde con acento de color primario / Border with primary color accent */\n bordered = input<boolean>(false);\n\n /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */\n flat = input<boolean>(false);\n\n readonly hostClasses = computed(() => ({\n 'neu-card': true,\n 'neu-card--hoverable': this.hoverable(),\n 'neu-card--bordered': this.bordered(),\n 'neu-card--flat': this.flat(),\n }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;AAYG;MAsBU,gBAAgB,CAAA;;AAE3B,IAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,8EAAC;;AAGrC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAGjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAEnB,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,qBAAqB,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrC,QAAA,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE;AAC9B,KAAA,CAAC,kFAAC;wGAlBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfjB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,aAAA,EACI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAA,QAAA,EAC1B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA;;;ACzCH;;AAEG;;;;"}
@@ -31,32 +31,23 @@ function computeParetoCumulative(data) {
31
31
  */
32
32
  class NeuChartComponent {
33
33
  /** Tipo de gráfica. / Chart type. */
34
- type = input('line', /* @ts-ignore */
35
- ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
34
+ type = input('line', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
36
35
  /** Series para gráficas de ejes (line, area, bar, pareto…). / Series for axis-based charts (line, area, bar, pareto…). */
37
- series = input([], /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
36
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
39
37
  /** Series para gráficas sin ejes (donut, pie). / Series for non-axis charts (donut, pie). */
40
- pieSeries = input([], /* @ts-ignore */
41
- ...(ngDevMode ? [{ debugName: "pieSeries" }] : /* istanbul ignore next */ []));
38
+ pieSeries = input([], ...(ngDevMode ? [{ debugName: "pieSeries" }] : /* istanbul ignore next */ []));
42
39
  /** Etiquetas del eje X. / X-axis labels. */
43
- categories = input([], /* @ts-ignore */
44
- ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
40
+ categories = input([], ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
45
41
  /** Etiquetas para donut/pie. / Labels for donut/pie. */
46
- labels = input([], /* @ts-ignore */
47
- ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
42
+ labels = input([], ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
48
43
  /** Altura en px. / Height in px. */
49
- height = input(280, /* @ts-ignore */
50
- ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
44
+ height = input(280, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
51
45
  /** Colores custom. Si no se proveen, usa la paleta Neural-Blue. / Custom colors. If not provided, uses the Neural-Blue palette. */
52
- colors = input([], /* @ts-ignore */
53
- ...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
46
+ colors = input([], ...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
54
47
  /** Muestra/oculta las etiquetas de datos. / Shows/hides data labels. */
55
- showDataLabels = input(false, /* @ts-ignore */
56
- ...(ngDevMode ? [{ debugName: "showDataLabels" }] : /* istanbul ignore next */ []));
48
+ showDataLabels = input(false, ...(ngDevMode ? [{ debugName: "showDataLabels" }] : /* istanbul ignore next */ []));
57
49
  /** Título de la gráfica. / Chart title. */
58
- title = input('', /* @ts-ignore */
59
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
50
+ title = input('', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
60
51
  // --------------------------------------------------
61
52
  // Helpers privados
62
53
  // --------------------------------------------------
@@ -72,8 +63,7 @@ class NeuChartComponent {
72
63
  // --------------------------------------------------
73
64
  // Configs computadas
74
65
  // --------------------------------------------------
75
- resolvedColors = computed(() => this.colors().length ? this.colors() : DEFAULT_COLORS, /* @ts-ignore */
76
- ...(ngDevMode ? [{ debugName: "resolvedColors" }] : /* istanbul ignore next */ []));
66
+ resolvedColors = computed(() => this.colors().length ? this.colors() : DEFAULT_COLORS, ...(ngDevMode ? [{ debugName: "resolvedColors" }] : /* istanbul ignore next */ []));
77
67
  resolvedSeries = computed(() => {
78
68
  const t = this.type();
79
69
  if (t === 'donut' || t === 'pie' || t === 'radialBar')
@@ -89,8 +79,7 @@ class NeuChartComponent {
89
79
  ];
90
80
  }
91
81
  return this.series();
92
- }, /* @ts-ignore */
93
- ...(ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []));
82
+ }, ...(ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []));
94
83
  chartConfig = computed(() => {
95
84
  const t = this.type();
96
85
  const apexType = t === 'bar-stacked' || t === 'bar-horizontal' || t === 'bar-horizontal-stacked'
@@ -110,8 +99,7 @@ class NeuChartComponent {
110
99
  zoom: { enabled: false },
111
100
  animations: { enabled: true, speed: 500 },
112
101
  };
113
- }, /* @ts-ignore */
114
- ...(ngDevMode ? [{ debugName: "chartConfig" }] : /* istanbul ignore next */ []));
102
+ }, ...(ngDevMode ? [{ debugName: "chartConfig" }] : /* istanbul ignore next */ []));
115
103
  xaxisConfig = computed(() => ({
116
104
  categories: this.categories(),
117
105
  labels: {
@@ -119,8 +107,7 @@ class NeuChartComponent {
119
107
  },
120
108
  axisBorder: { show: false },
121
109
  axisTicks: { show: false },
122
- }), /* @ts-ignore */
123
- ...(ngDevMode ? [{ debugName: "xaxisConfig" }] : /* istanbul ignore next */ []));
110
+ }), ...(ngDevMode ? [{ debugName: "xaxisConfig" }] : /* istanbul ignore next */ []));
124
111
  yaxisConfig = computed(() => {
125
112
  const labelStyle = { fontSize: '12px', fontFamily: 'inherit', colors: '#94a3b8' };
126
113
  if (this.type() === 'pareto') {
@@ -139,8 +126,7 @@ class NeuChartComponent {
139
126
  ];
140
127
  }
141
128
  return { labels: { style: labelStyle } };
142
- }, /* @ts-ignore */
143
- ...(ngDevMode ? [{ debugName: "yaxisConfig" }] : /* istanbul ignore next */ []));
129
+ }, ...(ngDevMode ? [{ debugName: "yaxisConfig" }] : /* istanbul ignore next */ []));
144
130
  strokeConfig = computed(() => {
145
131
  const t = this.type();
146
132
  if (t === 'pareto') {
@@ -154,8 +140,7 @@ class NeuChartComponent {
154
140
  if (this._isBar || t === 'donut' || t === 'pie' || t === 'radialBar')
155
141
  return { show: false };
156
142
  return { curve: 'smooth', width: 2 };
157
- }, /* @ts-ignore */
158
- ...(ngDevMode ? [{ debugName: "strokeConfig" }] : /* istanbul ignore next */ []));
143
+ }, ...(ngDevMode ? [{ debugName: "strokeConfig" }] : /* istanbul ignore next */ []));
159
144
  fillConfig = computed(() => {
160
145
  const t = this.type();
161
146
  if (t === 'area') {
@@ -165,29 +150,25 @@ class NeuChartComponent {
165
150
  };
166
151
  }
167
152
  return { opacity: 0.85 };
168
- }, /* @ts-ignore */
169
- ...(ngDevMode ? [{ debugName: "fillConfig" }] : /* istanbul ignore next */ []));
153
+ }, ...(ngDevMode ? [{ debugName: "fillConfig" }] : /* istanbul ignore next */ []));
170
154
  dataLabelsConfig = computed(() => ({
171
155
  enabled: this.showDataLabels(),
172
156
  style: { fontSize: '11px', fontFamily: 'inherit' },
173
- }), /* @ts-ignore */
174
- ...(ngDevMode ? [{ debugName: "dataLabelsConfig" }] : /* istanbul ignore next */ []));
157
+ }), ...(ngDevMode ? [{ debugName: "dataLabelsConfig" }] : /* istanbul ignore next */ []));
175
158
  gridConfig = computed(() => ({
176
159
  borderColor: '#e2e8f0',
177
160
  strokeDashArray: 4,
178
161
  xaxis: { lines: { show: false } },
179
162
  yaxis: { lines: { show: true } },
180
163
  padding: { left: 4, right: 4 },
181
- }), /* @ts-ignore */
182
- ...(ngDevMode ? [{ debugName: "gridConfig" }] : /* istanbul ignore next */ []));
164
+ }), ...(ngDevMode ? [{ debugName: "gridConfig" }] : /* istanbul ignore next */ []));
183
165
  legendConfig = computed(() => ({
184
166
  position: 'bottom',
185
167
  fontFamily: 'inherit',
186
168
  fontSize: '12px',
187
169
  markers: { size: 6 },
188
170
  itemMargin: { horizontal: 8 },
189
- }), /* @ts-ignore */
190
- ...(ngDevMode ? [{ debugName: "legendConfig" }] : /* istanbul ignore next */ []));
171
+ }), ...(ngDevMode ? [{ debugName: "legendConfig" }] : /* istanbul ignore next */ []));
191
172
  tooltipConfig = computed(() => {
192
173
  const base = {
193
174
  theme: 'light',
@@ -204,8 +185,7 @@ class NeuChartComponent {
204
185
  };
205
186
  }
206
187
  return base;
207
- }, /* @ts-ignore */
208
- ...(ngDevMode ? [{ debugName: "tooltipConfig" }] : /* istanbul ignore next */ []));
188
+ }, ...(ngDevMode ? [{ debugName: "tooltipConfig" }] : /* istanbul ignore next */ []));
209
189
  plotOptionsConfig = computed(() => {
210
190
  const t = this.type();
211
191
  if (t === 'donut' || t === 'pie') {
@@ -259,10 +239,9 @@ class NeuChartComponent {
259
239
  };
260
240
  }
261
241
  return {};
262
- }, /* @ts-ignore */
263
- ...(ngDevMode ? [{ debugName: "plotOptionsConfig" }] : /* istanbul ignore next */ []));
264
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
265
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: NeuChartComponent, isStandalone: true, selector: "neu-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, pieSeries: { classPropertyName: "pieSeries", publicName: "pieSeries", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, showDataLabels: { classPropertyName: "showDataLabels", publicName: "showDataLabels", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "neu-chart" }, ngImport: i0, template: `
242
+ }, ...(ngDevMode ? [{ debugName: "plotOptionsConfig" }] : /* istanbul ignore next */ []));
243
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
244
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: NeuChartComponent, isStandalone: true, selector: "neu-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, pieSeries: { classPropertyName: "pieSeries", publicName: "pieSeries", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, showDataLabels: { classPropertyName: "showDataLabels", publicName: "showDataLabels", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "neu-chart" }, ngImport: i0, template: `
266
245
  <apx-chart
267
246
  [chart]="chartConfig()"
268
247
  [series]="resolvedSeries()"
@@ -280,7 +259,7 @@ class NeuChartComponent {
280
259
  />
281
260
  `, isInline: true, styles: [".neu-chart{display:block;width:100%}.neu-chart .apexcharts-canvas{background:transparent!important}.neu-chart .apexcharts-canvas circle[fill=transparent]{pointer-events:none}.neu-chart .apexcharts-tooltip{border:1px solid var(--neu-border)!important;box-shadow:var(--neu-shadow-sm)!important;border-radius:var(--neu-radius)!important;font-family:inherit!important;font-size:12px!important;background:var(--neu-surface)!important;color:var(--neu-text)!important}.neu-chart .apexcharts-tooltip-title{background:var(--neu-surface-2)!important;border-bottom:1px solid var(--neu-border)!important;font-weight:600!important;color:var(--neu-text)!important;padding:6px 10px!important}.neu-chart .apexcharts-xaxistooltip,.neu-chart .apexcharts-yaxistooltip{background:var(--neu-surface)!important;border-color:var(--neu-border)!important;color:var(--neu-text-muted)!important}.neu-chart .apexcharts-legend-text{color:var(--neu-text-muted)!important;font-family:inherit!important}.neu-chart .apexcharts-yaxis-label,.neu-chart .apexcharts-xaxis-label{fill:var(--neu-text-muted)!important;font-family:inherit!important}.neu-chart .apexcharts-gridline{stroke:var(--neu-border)!important}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "apx-chart", inputs: ["chart", "annotations", "colors", "dataLabels", "series", "stroke", "labels", "legend", "markers", "noData", "parsing", "fill", "tooltip", "plotOptions", "responsive", "xaxis", "yaxis", "forecastDataPoints", "grid", "states", "title", "subtitle", "theme", "autoUpdateSeries"], outputs: ["chartReady"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
282
261
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuChartComponent, decorators: [{
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: NeuChartComponent, decorators: [{
284
263
  type: Component,
285
264
  args: [{ selector: 'neu-chart', imports: [ChartComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'neu-chart' }, template: `
286
265
  <apx-chart