@caribeng/ui 22.4.0 → 22.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +313 -313
  2. package/fesm2022/caribeng-ui-account-picker.mjs +533 -0
  3. package/fesm2022/caribeng-ui-aging.mjs +488 -0
  4. package/fesm2022/{caribeng-ui-caribe-alert.mjs → caribeng-ui-alert.mjs} +45 -45
  5. package/fesm2022/caribeng-ui-amount.mjs +249 -0
  6. package/fesm2022/caribeng-ui-anchor.mjs +2 -2
  7. package/fesm2022/{caribeng-ui-caribe-animation-lottie.mjs → caribeng-ui-animation-lottie.mjs} +41 -41
  8. package/fesm2022/caribeng-ui-audit-log.mjs +323 -0
  9. package/fesm2022/caribeng-ui-avatar.mjs +2 -2
  10. package/fesm2022/caribeng-ui-breadcrumb.mjs +13 -3
  11. package/fesm2022/{caribeng-ui-caribe-button-group.mjs → caribeng-ui-button-group.mjs} +15 -15
  12. package/fesm2022/caribeng-ui-button.mjs +2 -2
  13. package/fesm2022/{caribeng-ui-caribe-card-content.mjs → caribeng-ui-card-content.mjs} +39 -39
  14. package/fesm2022/{caribeng-ui-caribe-card-move.mjs → caribeng-ui-card-move.mjs} +65 -65
  15. package/fesm2022/{caribeng-ui-caribe-card-primary.mjs → caribeng-ui-card-primary.mjs} +31 -31
  16. package/fesm2022/{caribeng-ui-caribe-card-select.mjs → caribeng-ui-card-select.mjs} +67 -67
  17. package/fesm2022/caribeng-ui-carousel.mjs +2 -2
  18. package/fesm2022/caribeng-ui-cascadeselect.mjs +45 -9
  19. package/fesm2022/caribeng-ui-chat.mjs +2 -2
  20. package/fesm2022/{caribeng-ui-caribe-coachmark.mjs → caribeng-ui-coachmark.mjs} +85 -85
  21. package/fesm2022/caribeng-ui-command-palette.mjs +2 -2
  22. package/fesm2022/caribeng-ui-comments.mjs +864 -0
  23. package/fesm2022/caribeng-ui-datagrid.mjs +1635 -0
  24. package/fesm2022/caribeng-ui-dataview.mjs +2 -2
  25. package/fesm2022/caribeng-ui-datepicker.mjs +2 -2
  26. package/fesm2022/caribeng-ui-document.mjs +495 -0
  27. package/fesm2022/{caribeng-ui-caribe-dots-indicator.mjs → caribeng-ui-dots-indicator.mjs} +41 -41
  28. package/fesm2022/caribeng-ui-dynamic-form.mjs +1581 -0
  29. package/fesm2022/caribeng-ui-editor.mjs +2303 -1311
  30. package/fesm2022/{caribeng-ui-caribe-expansion-panel.mjs → caribeng-ui-expansion-panel.mjs} +39 -39
  31. package/fesm2022/{caribeng-ui-caribe-fab-menu.mjs → caribeng-ui-fab-menu.mjs} +75 -75
  32. package/fesm2022/caribeng-ui-file-card.mjs +2 -2
  33. package/fesm2022/{caribeng-ui-caribe-file-download.mjs → caribeng-ui-file-download.mjs} +63 -63
  34. package/fesm2022/caribeng-ui-financial-report.mjs +380 -0
  35. package/fesm2022/{caribeng-ui-caribe-float-menu.mjs → caribeng-ui-float-menu.mjs} +31 -31
  36. package/fesm2022/caribeng-ui-floatlabel.mjs +2 -2
  37. package/fesm2022/caribeng-ui-flow.mjs +1508 -0
  38. package/fesm2022/{caribeng-ui-caribe-footer.mjs → caribeng-ui-footer.mjs} +19 -19
  39. package/fesm2022/caribeng-ui-gantt.mjs +1094 -0
  40. package/fesm2022/{caribeng-ui-caribe-header.mjs → caribeng-ui-header.mjs} +49 -49
  41. package/fesm2022/{caribeng-ui-caribe-icon-button.mjs → caribeng-ui-icon-button.mjs} +23 -23
  42. package/fesm2022/caribeng-ui-image-cropper.mjs +671 -0
  43. package/fesm2022/caribeng-ui-import-wizard.mjs +746 -0
  44. package/fesm2022/caribeng-ui-infinite-scroll.mjs +226 -0
  45. package/fesm2022/caribeng-ui-input-number.mjs +22 -6
  46. package/fesm2022/{caribeng-ui-caribe-input-search.mjs → caribeng-ui-input-search.mjs} +65 -65
  47. package/fesm2022/{caribeng-ui-caribe-input-token.mjs → caribeng-ui-input-token.mjs} +59 -59
  48. package/fesm2022/caribeng-ui-inputotp.mjs +2 -2
  49. package/fesm2022/caribeng-ui-journal-entry.mjs +340 -0
  50. package/fesm2022/caribeng-ui-kanban.mjs +6 -6
  51. package/fesm2022/caribeng-ui-kpi.mjs +189 -0
  52. package/fesm2022/{caribeng-ui-caribe-link.mjs → caribeng-ui-link.mjs} +37 -37
  53. package/fesm2022/caribeng-ui-masonry.mjs +93 -0
  54. package/fesm2022/caribeng-ui-media-player.mjs +821 -0
  55. package/fesm2022/caribeng-ui-mentions.mjs +2 -2
  56. package/fesm2022/caribeng-ui-notification-center.mjs +636 -0
  57. package/fesm2022/{caribeng-ui-caribe-off-canvas.mjs → caribeng-ui-off-canvas.mjs} +55 -55
  58. package/fesm2022/{caribeng-ui-caribe-onboarding.mjs → caribeng-ui-onboarding.mjs} +105 -105
  59. package/fesm2022/caribeng-ui-orderlist.mjs +2 -2
  60. package/fesm2022/caribeng-ui-pdfviewer.mjs +1755 -25
  61. package/fesm2022/caribeng-ui-period-picker.mjs +637 -0
  62. package/fesm2022/caribeng-ui-phone-input.mjs +2 -2
  63. package/fesm2022/caribeng-ui-picklist.mjs +2 -2
  64. package/fesm2022/caribeng-ui-pivot.mjs +419 -0
  65. package/fesm2022/caribeng-ui-pricing.mjs +2 -2
  66. package/fesm2022/caribeng-ui-rating.mjs +14 -17
  67. package/fesm2022/caribeng-ui-reconciliation.mjs +386 -0
  68. package/fesm2022/caribeng-ui-scheduler.mjs +1027 -0
  69. package/fesm2022/caribeng-ui-select.mjs +2 -2
  70. package/fesm2022/{caribeng-ui-caribe-shortcut.mjs → caribeng-ui-shortcut.mjs} +29 -29
  71. package/fesm2022/caribeng-ui-sidebar.mjs +2 -2
  72. package/fesm2022/caribeng-ui-signature-pad.mjs +654 -0
  73. package/fesm2022/{caribeng-ui-caribe-status.mjs → caribeng-ui-status.mjs} +11 -11
  74. package/fesm2022/{caribeng-ui-caribe-step-indicator.mjs → caribeng-ui-step-indicator.mjs} +53 -53
  75. package/fesm2022/caribeng-ui-stepper.mjs +2 -2
  76. package/fesm2022/caribeng-ui-steps.mjs +2 -2
  77. package/fesm2022/caribeng-ui-table.mjs +323 -15
  78. package/fesm2022/caribeng-ui-tabmenu.mjs +2 -2
  79. package/fesm2022/caribeng-ui-tabs.mjs +2 -2
  80. package/fesm2022/{caribeng-ui-caribe-tag-button.mjs → caribeng-ui-tag-button.mjs} +25 -25
  81. package/fesm2022/caribeng-ui-tag.mjs +2 -2
  82. package/fesm2022/caribeng-ui-tieredmenu.mjs +6 -6
  83. package/fesm2022/{caribeng-ui-caribe-tracker.mjs → caribeng-ui-tracker.mjs} +29 -29
  84. package/fesm2022/{caribeng-ui-caribe-transaction-status.mjs → caribeng-ui-transaction-status.mjs} +11 -11
  85. package/fesm2022/caribeng-ui-treeselect.mjs +44 -9
  86. package/fesm2022/caribeng-ui-treetable.mjs +236 -17
  87. package/fesm2022/{caribeng-ui-caribe-voucher.mjs → caribeng-ui-voucher.mjs} +45 -45
  88. package/fesm2022/caribeng-ui-xlsx.mjs +486 -0
  89. package/fesm2022/caribeng-ui.mjs +1185 -5
  90. package/package.json +217 -177
  91. package/types/caribeng-ui-account-picker.d.ts +142 -0
  92. package/types/caribeng-ui-aging.d.ts +123 -0
  93. package/types/{caribeng-ui-caribe-alert.d.ts → caribeng-ui-alert.d.ts} +2 -2
  94. package/types/caribeng-ui-amount.d.ts +82 -0
  95. package/types/{caribeng-ui-caribe-animation-lottie.d.ts → caribeng-ui-animation-lottie.d.ts} +2 -2
  96. package/types/caribeng-ui-audit-log.d.ts +86 -0
  97. package/types/caribeng-ui-breadcrumb.d.ts +2 -2
  98. package/types/{caribeng-ui-caribe-button-group.d.ts → caribeng-ui-button-group.d.ts} +2 -2
  99. package/types/{caribeng-ui-caribe-card-content.d.ts → caribeng-ui-card-content.d.ts} +2 -2
  100. package/types/{caribeng-ui-caribe-card-move.d.ts → caribeng-ui-card-move.d.ts} +1 -1
  101. package/types/{caribeng-ui-caribe-card-primary.d.ts → caribeng-ui-card-primary.d.ts} +2 -2
  102. package/types/{caribeng-ui-caribe-card-select.d.ts → caribeng-ui-card-select.d.ts} +2 -2
  103. package/types/caribeng-ui-cascadeselect.d.ts +6 -0
  104. package/types/{caribeng-ui-caribe-coachmark.d.ts → caribeng-ui-coachmark.d.ts} +2 -2
  105. package/types/caribeng-ui-comments.d.ts +214 -0
  106. package/types/caribeng-ui-datagrid.d.ts +269 -0
  107. package/types/caribeng-ui-document.d.ts +138 -0
  108. package/types/{caribeng-ui-caribe-dots-indicator.d.ts → caribeng-ui-dots-indicator.d.ts} +2 -2
  109. package/types/caribeng-ui-dynamic-form.d.ts +409 -0
  110. package/types/caribeng-ui-editor.d.ts +110 -12
  111. package/types/{caribeng-ui-caribe-expansion-panel.d.ts → caribeng-ui-expansion-panel.d.ts} +1 -1
  112. package/types/{caribeng-ui-caribe-fab-menu.d.ts → caribeng-ui-fab-menu.d.ts} +2 -2
  113. package/types/{caribeng-ui-caribe-file-download.d.ts → caribeng-ui-file-download.d.ts} +1 -1
  114. package/types/caribeng-ui-financial-report.d.ts +102 -0
  115. package/types/{caribeng-ui-caribe-float-menu.d.ts → caribeng-ui-float-menu.d.ts} +2 -2
  116. package/types/caribeng-ui-flow.d.ts +228 -0
  117. package/types/{caribeng-ui-caribe-footer.d.ts → caribeng-ui-footer.d.ts} +2 -2
  118. package/types/caribeng-ui-gantt.d.ts +244 -0
  119. package/types/{caribeng-ui-caribe-header.d.ts → caribeng-ui-header.d.ts} +2 -2
  120. package/types/{caribeng-ui-caribe-icon-button.d.ts → caribeng-ui-icon-button.d.ts} +2 -2
  121. package/types/{caribeng-ui-caribe-illustration.d.ts → caribeng-ui-illustration.d.ts} +1 -1
  122. package/types/caribeng-ui-image-cropper.d.ts +169 -0
  123. package/types/caribeng-ui-import-wizard.d.ts +149 -0
  124. package/types/caribeng-ui-infinite-scroll.d.ts +75 -0
  125. package/types/caribeng-ui-input-number.d.ts +1 -1
  126. package/types/{caribeng-ui-caribe-input-search.d.ts → caribeng-ui-input-search.d.ts} +2 -2
  127. package/types/{caribeng-ui-caribe-input-token.d.ts → caribeng-ui-input-token.d.ts} +2 -2
  128. package/types/caribeng-ui-journal-entry.d.ts +110 -0
  129. package/types/caribeng-ui-kpi.d.ts +64 -0
  130. package/types/{caribeng-ui-caribe-link.d.ts → caribeng-ui-link.d.ts} +2 -2
  131. package/types/{caribeng-ui-caribe-logo.d.ts → caribeng-ui-logo.d.ts} +1 -1
  132. package/types/caribeng-ui-masonry.d.ts +32 -0
  133. package/types/caribeng-ui-media-player.d.ts +140 -0
  134. package/types/caribeng-ui-notification-center.d.ts +153 -0
  135. package/types/{caribeng-ui-caribe-off-canvas.d.ts → caribeng-ui-off-canvas.d.ts} +2 -2
  136. package/types/{caribeng-ui-caribe-onboarding.d.ts → caribeng-ui-onboarding.d.ts} +2 -2
  137. package/types/caribeng-ui-pdfviewer.d.ts +245 -5
  138. package/types/caribeng-ui-period-picker.d.ts +148 -0
  139. package/types/caribeng-ui-pivot.d.ts +116 -0
  140. package/types/caribeng-ui-reconciliation.d.ts +109 -0
  141. package/types/caribeng-ui-scheduler.d.ts +188 -0
  142. package/types/{caribeng-ui-caribe-shortcut.d.ts → caribeng-ui-shortcut.d.ts} +2 -2
  143. package/types/caribeng-ui-signature-pad.d.ts +151 -0
  144. package/types/{caribeng-ui-caribe-status.d.ts → caribeng-ui-status.d.ts} +2 -2
  145. package/types/{caribeng-ui-caribe-step-indicator.d.ts → caribeng-ui-step-indicator.d.ts} +2 -2
  146. package/types/caribeng-ui-table.d.ts +66 -2
  147. package/types/{caribeng-ui-caribe-tag-button.d.ts → caribeng-ui-tag-button.d.ts} +2 -2
  148. package/types/{caribeng-ui-caribe-tracker.d.ts → caribeng-ui-tracker.d.ts} +2 -2
  149. package/types/{caribeng-ui-caribe-transaction-status.d.ts → caribeng-ui-transaction-status.d.ts} +2 -2
  150. package/types/caribeng-ui-treeselect.d.ts +6 -0
  151. package/types/caribeng-ui-treetable.d.ts +67 -2
  152. package/types/{caribeng-ui-caribe-voucher.d.ts → caribeng-ui-voucher.d.ts} +2 -2
  153. package/types/caribeng-ui-xlsx.d.ts +79 -0
  154. package/types/caribeng-ui.d.ts +713 -4
  155. package/fesm2022/caribeng-ui-caribe-calendar.mjs +0 -92
  156. package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +0 -130
  157. package/fesm2022/caribeng-ui-caribe-data-table.mjs +0 -94
  158. package/fesm2022/caribeng-ui-caribe-file-select.mjs +0 -88
  159. package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +0 -100
  160. package/fesm2022/caribeng-ui-caribe-input-date.mjs +0 -138
  161. package/fesm2022/caribeng-ui-caribe-input-select.mjs +0 -154
  162. package/fesm2022/caribeng-ui-caribe-loader.mjs +0 -48
  163. package/fesm2022/caribeng-ui-caribe-modal.mjs +0 -119
  164. package/fesm2022/caribeng-ui-caribe-pictogram.mjs +0 -52
  165. package/fesm2022/caribeng-ui-caribe-pop-over.mjs +0 -104
  166. package/fesm2022/caribeng-ui-caribe-preloader.mjs +0 -57
  167. package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +0 -84
  168. package/fesm2022/caribeng-ui-caribe-stroke.mjs +0 -69
  169. package/fesm2022/caribeng-ui-caribe-switch.mjs +0 -182
  170. package/types/caribeng-ui-caribe-calendar.d.ts +0 -27
  171. package/types/caribeng-ui-caribe-circle-loading.d.ts +0 -28
  172. package/types/caribeng-ui-caribe-data-table.d.ts +0 -26
  173. package/types/caribeng-ui-caribe-file-select.d.ts +0 -31
  174. package/types/caribeng-ui-caribe-inline-alert.d.ts +0 -28
  175. package/types/caribeng-ui-caribe-input-date.d.ts +0 -40
  176. package/types/caribeng-ui-caribe-input-select.d.ts +0 -47
  177. package/types/caribeng-ui-caribe-loader.d.ts +0 -22
  178. package/types/caribeng-ui-caribe-modal.d.ts +0 -21
  179. package/types/caribeng-ui-caribe-pictogram.d.ts +0 -15
  180. package/types/caribeng-ui-caribe-pop-over.d.ts +0 -17
  181. package/types/caribeng-ui-caribe-preloader.d.ts +0 -24
  182. package/types/caribeng-ui-caribe-progress-bar.d.ts +0 -28
  183. package/types/caribeng-ui-caribe-stroke.d.ts +0 -17
  184. package/types/caribeng-ui-caribe-switch.d.ts +0 -55
  185. /package/fesm2022/{caribeng-ui-caribe-illustration.mjs → caribeng-ui-illustration.mjs} +0 -0
  186. /package/fesm2022/{caribeng-ui-caribe-logo.mjs → caribeng-ui-logo.mjs} +0 -0
@@ -1,92 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, model, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { injectCbTranslation } from '@caribeng/ui';
4
-
5
- /**
6
- * Calendar de Caribe Design: cuadrícula mensual con selección de día.
7
- *
8
- * @example
9
- * ```html
10
- * <cb-calendar monthLabel="Octubre 2026" [totalDays]="31" [(selectedDay)]="dia" />
11
- * ```
12
- */
13
- class CbCalendar {
14
- constructor() {
15
- this.monthLabel = input('', /* @ts-ignore */
16
- ...(ngDevMode ? [{ debugName: "monthLabel" }] : /* istanbul ignore next */ []));
17
- this.totalDays = input(31, /* @ts-ignore */
18
- ...(ngDevMode ? [{ debugName: "totalDays" }] : /* istanbul ignore next */ []));
19
- this.selectedDay = model(17, /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "selectedDay" }] : /* istanbul ignore next */ []));
21
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
22
- this.t = injectCbTranslation();
23
- /** Iniciales de lunes a domingo en el idioma activo. */
24
- this.weekdays = computed(() => this.t().weekdaysMin.split(','), /* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
26
- this.days = computed(() => Array.from({ length: Math.max(28, Math.min(31, this.totalDays())) }, (_, i) => i + 1), /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "days" }] : /* istanbul ignore next */ []));
28
- }
29
- selectDay(day) {
30
- this.selectedDay.set(day);
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbCalendar, isStandalone: true, selector: "cb-calendar", inputs: { monthLabel: { classPropertyName: "monthLabel", publicName: "monthLabel", isSignal: true, isRequired: false, transformFunction: null }, totalDays: { classPropertyName: "totalDays", publicName: "totalDays", isSignal: true, isRequired: false, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDay: "selectedDayChange" }, host: { classAttribute: "cb-calendar-host" }, ngImport: i0, template: `
34
- <div class="cb-calendar">
35
- <header class="cb-calendar__head">
36
- <strong class="cb-calendar__month">{{ monthLabel() }}</strong>
37
- </header>
38
- <div class="cb-calendar__weekdays" aria-hidden="true">
39
- @for (w of weekdays(); track $index) {
40
- <span class="cb-calendar__weekday">{{ w }}</span>
41
- }
42
- </div>
43
- <div class="cb-calendar__grid" role="group" [attr.aria-label]="monthLabel() || null">
44
- @for (d of days(); track d) {
45
- <button
46
- type="button"
47
- class="cb-calendar__day"
48
- [class.cb-is-selected]="selectedDay() === d"
49
- [attr.aria-pressed]="selectedDay() === d"
50
- (click)="selectDay(d)"
51
- >
52
- {{ d }}
53
- </button>
54
- }
55
- </div>
56
- </div>
57
- `, isInline: true, styles: [":host{display:inline-block;width:100%;max-width:18rem}.cb-calendar{box-sizing:border-box;padding:var(--cb-space-4, 1rem);font-family:var(--cb-font-sans, inherit);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #e2e8f0);border-radius:var(--cb-radius-lg, .75rem)}.cb-calendar__head{display:flex;align-items:center;justify-content:center;margin-bottom:var(--cb-space-3, .75rem)}.cb-calendar__month{font-size:var(--cb-text-base, .9375rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-calendar__weekdays,.cb-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cb-space-1, .25rem);text-align:center}.cb-calendar__weekday{font-size:var(--cb-text-xs, .7rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-muted, #64748b);padding-bottom:var(--cb-space-1, .25rem)}.cb-calendar__day{aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:var(--cb-text-sm, .8125rem);color:var(--cb-color-text, #334155);background:transparent;border:none;border-radius:var(--cb-radius-md, .5rem);cursor:pointer;transition:background-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-calendar__day:hover:not(.cb-is-selected){background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-calendar__day.cb-is-selected{color:var(--cb-color-primary-contrast, #ffffff);background-color:var(--cb-color-primary-600, #047857);font-weight:var(--cb-font-weight-semibold, 600)}.cb-calendar__day:focus-visible{outline:2px solid var(--cb-color-focus-ring, var(--cb-color-primary-500, #10b981));outline-offset:1px}:host-context([data-theme=\"dark\"]) .cb-calendar{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-calendar__day{color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-calendar__day:hover:not(.cb-is-selected){background-color:var(--cb-color-surface-700, #334155)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbCalendar, decorators: [{
60
- type: Component,
61
- args: [{ selector: 'cb-calendar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, host: { class: 'cb-calendar-host' }, template: `
62
- <div class="cb-calendar">
63
- <header class="cb-calendar__head">
64
- <strong class="cb-calendar__month">{{ monthLabel() }}</strong>
65
- </header>
66
- <div class="cb-calendar__weekdays" aria-hidden="true">
67
- @for (w of weekdays(); track $index) {
68
- <span class="cb-calendar__weekday">{{ w }}</span>
69
- }
70
- </div>
71
- <div class="cb-calendar__grid" role="group" [attr.aria-label]="monthLabel() || null">
72
- @for (d of days(); track d) {
73
- <button
74
- type="button"
75
- class="cb-calendar__day"
76
- [class.cb-is-selected]="selectedDay() === d"
77
- [attr.aria-pressed]="selectedDay() === d"
78
- (click)="selectDay(d)"
79
- >
80
- {{ d }}
81
- </button>
82
- }
83
- </div>
84
- </div>
85
- `, styles: [":host{display:inline-block;width:100%;max-width:18rem}.cb-calendar{box-sizing:border-box;padding:var(--cb-space-4, 1rem);font-family:var(--cb-font-sans, inherit);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #e2e8f0);border-radius:var(--cb-radius-lg, .75rem)}.cb-calendar__head{display:flex;align-items:center;justify-content:center;margin-bottom:var(--cb-space-3, .75rem)}.cb-calendar__month{font-size:var(--cb-text-base, .9375rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-calendar__weekdays,.cb-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cb-space-1, .25rem);text-align:center}.cb-calendar__weekday{font-size:var(--cb-text-xs, .7rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-muted, #64748b);padding-bottom:var(--cb-space-1, .25rem)}.cb-calendar__day{aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:var(--cb-text-sm, .8125rem);color:var(--cb-color-text, #334155);background:transparent;border:none;border-radius:var(--cb-radius-md, .5rem);cursor:pointer;transition:background-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-calendar__day:hover:not(.cb-is-selected){background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-calendar__day.cb-is-selected{color:var(--cb-color-primary-contrast, #ffffff);background-color:var(--cb-color-primary-600, #047857);font-weight:var(--cb-font-weight-semibold, 600)}.cb-calendar__day:focus-visible{outline:2px solid var(--cb-color-focus-ring, var(--cb-color-primary-500, #10b981));outline-offset:1px}:host-context([data-theme=\"dark\"]) .cb-calendar{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-calendar__day{color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-calendar__day:hover:not(.cb-is-selected){background-color:var(--cb-color-surface-700, #334155)}\n"] }]
86
- }], propDecorators: { monthLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthLabel", required: false }] }], totalDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalDays", required: false }] }], selectedDay: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedDay", required: false }] }, { type: i0.Output, args: ["selectedDayChange"] }] } });
87
-
88
- /**
89
- * Generated bundle index. Do not edit.
90
- */
91
-
92
- export { CbCalendar };
@@ -1,130 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { injectCbTranslation } from '@caribeng/ui';
4
-
5
- /**
6
- * Circle-loading de Caribe Design: progreso circular determinado o
7
- * indeterminado (spinner).
8
- *
9
- * @example
10
- * ```html
11
- * <cb-circle-loading [progress]="65" />
12
- * <cb-circle-loading [indeterminate]="true" />
13
- * ```
14
- */
15
- class CbCircleLoading {
16
- constructor() {
17
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
18
- this.t = injectCbTranslation();
19
- this.progress = input(65, /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "progress" }] : /* istanbul ignore next */ []));
21
- this.size = input(48, /* @ts-ignore */
22
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
23
- this.indeterminate = input(false, /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
25
- this.label = input(undefined, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
27
- this.circumference = 2 * Math.PI * 20;
28
- this.dashOffset = computed(() => {
29
- if (this.indeterminate())
30
- return this.circumference * 0.75;
31
- const clamped = Math.max(0, Math.min(100, this.progress()));
32
- return this.circumference * (1 - clamped / 100);
33
- }, /* @ts-ignore */
34
- ...(ngDevMode ? [{ debugName: "dashOffset" }] : /* istanbul ignore next */ []));
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbCircleLoading, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbCircleLoading, isStandalone: true, selector: "cb-circle-loading", inputs: { progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cb-circle-loading-host" }, ngImport: i0, template: `
38
- <div
39
- class="cb-circle-loading"
40
- role="progressbar"
41
- [attr.aria-valuenow]="indeterminate() ? null : progress()"
42
- aria-valuemin="0"
43
- aria-valuemax="100"
44
- [attr.aria-label]="(label() ?? t().loading)"
45
- >
46
- <svg
47
- class="cb-circle-loading__svg"
48
- [class.cb-is-indeterminate]="indeterminate()"
49
- [attr.width]="size()"
50
- [attr.height]="size()"
51
- viewBox="0 0 48 48"
52
- >
53
- <circle
54
- class="cb-circle-loading__track"
55
- cx="24"
56
- cy="24"
57
- r="20"
58
- fill="none"
59
- stroke-width="4"
60
- />
61
- <circle
62
- class="cb-circle-loading__bar"
63
- cx="24"
64
- cy="24"
65
- r="20"
66
- fill="none"
67
- stroke-width="4"
68
- stroke-linecap="round"
69
- [attr.stroke-dasharray]="circumference"
70
- [attr.stroke-dashoffset]="dashOffset()"
71
- transform="rotate(-90 24 24)"
72
- />
73
- </svg>
74
- @if ((label() ?? t().loading)) {
75
- <span class="cb-circle-loading__label">{{ (label() ?? t().loading) }}</span>
76
- }
77
- </div>
78
- `, isInline: true, styles: [":host{display:inline-flex}.cb-circle-loading{display:inline-flex;flex-direction:column;align-items:center;gap:var(--cb-space-2, .4rem);font-family:var(--cb-font-sans, inherit)}.cb-circle-loading__track{stroke:var(--cb-color-surface-200, #e2e8f0)}.cb-circle-loading__bar{stroke:var(--cb-color-primary-500, #10b981);transition:stroke-dashoffset var(--cb-duration-normal, .2s) var(--cb-ease, ease)}.cb-circle-loading__svg.cb-is-indeterminate{animation:cb-circle-spin .9s linear infinite;transform-origin:center}.cb-circle-loading__label{font-size:var(--cb-text-xs, .75rem);color:var(--cb-color-text-muted, #64748b)}@keyframes cb-circle-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.cb-circle-loading__svg.cb-is-indeterminate{animation-duration:2.4s}}:host-context([data-theme=\"dark\"]) .cb-circle-loading__track{stroke:var(--cb-color-surface-700, #334155)}:host-context([data-theme=\"dark\"]) .cb-circle-loading__label{color:var(--cb-color-surface-300, #cbd5e1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
- }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbCircleLoading, decorators: [{
81
- type: Component,
82
- args: [{ selector: 'cb-circle-loading', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, host: { class: 'cb-circle-loading-host' }, template: `
83
- <div
84
- class="cb-circle-loading"
85
- role="progressbar"
86
- [attr.aria-valuenow]="indeterminate() ? null : progress()"
87
- aria-valuemin="0"
88
- aria-valuemax="100"
89
- [attr.aria-label]="(label() ?? t().loading)"
90
- >
91
- <svg
92
- class="cb-circle-loading__svg"
93
- [class.cb-is-indeterminate]="indeterminate()"
94
- [attr.width]="size()"
95
- [attr.height]="size()"
96
- viewBox="0 0 48 48"
97
- >
98
- <circle
99
- class="cb-circle-loading__track"
100
- cx="24"
101
- cy="24"
102
- r="20"
103
- fill="none"
104
- stroke-width="4"
105
- />
106
- <circle
107
- class="cb-circle-loading__bar"
108
- cx="24"
109
- cy="24"
110
- r="20"
111
- fill="none"
112
- stroke-width="4"
113
- stroke-linecap="round"
114
- [attr.stroke-dasharray]="circumference"
115
- [attr.stroke-dashoffset]="dashOffset()"
116
- transform="rotate(-90 24 24)"
117
- />
118
- </svg>
119
- @if ((label() ?? t().loading)) {
120
- <span class="cb-circle-loading__label">{{ (label() ?? t().loading) }}</span>
121
- }
122
- </div>
123
- `, styles: [":host{display:inline-flex}.cb-circle-loading{display:inline-flex;flex-direction:column;align-items:center;gap:var(--cb-space-2, .4rem);font-family:var(--cb-font-sans, inherit)}.cb-circle-loading__track{stroke:var(--cb-color-surface-200, #e2e8f0)}.cb-circle-loading__bar{stroke:var(--cb-color-primary-500, #10b981);transition:stroke-dashoffset var(--cb-duration-normal, .2s) var(--cb-ease, ease)}.cb-circle-loading__svg.cb-is-indeterminate{animation:cb-circle-spin .9s linear infinite;transform-origin:center}.cb-circle-loading__label{font-size:var(--cb-text-xs, .75rem);color:var(--cb-color-text-muted, #64748b)}@keyframes cb-circle-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.cb-circle-loading__svg.cb-is-indeterminate{animation-duration:2.4s}}:host-context([data-theme=\"dark\"]) .cb-circle-loading__track{stroke:var(--cb-color-surface-700, #334155)}:host-context([data-theme=\"dark\"]) .cb-circle-loading__label{color:var(--cb-color-surface-300, #cbd5e1)}\n"] }]
124
- }], propDecorators: { progress: [{ type: i0.Input, args: [{ isSignal: true, alias: "progress", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
125
-
126
- /**
127
- * Generated bundle index. Do not edit.
128
- */
129
-
130
- export { CbCircleLoading };
@@ -1,94 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { injectCbTranslation } from '@caribeng/ui';
4
-
5
- /**
6
- * Data-table de Caribe Design: tabla simple de columnas y filas con mensaje de
7
- * vacío.
8
- *
9
- * @example
10
- * ```html
11
- * <cb-data-table [columns]="cols" [rows]="data" />
12
- * ```
13
- */
14
- class CbDataTable {
15
- constructor() {
16
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
- this.t = injectCbTranslation();
18
- this.columns = input([], /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
20
- this.rows = input([], /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
22
- this.emptyMessage = input(undefined, /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
24
- /** Nombre accesible de la tabla (p. ej. "Movimientos del mes"). */
25
- this.ariaLabel = input(undefined, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbDataTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbDataTable, isStandalone: true, selector: "cb-data-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
30
- <div class="cb-data-table">
31
- <table class="cb-data-table__table" [attr.aria-label]="ariaLabel() || null">
32
- <thead>
33
- <tr>
34
- @for (col of columns(); track col) {
35
- <th class="cb-data-table__th" scope="col">{{ col }}</th>
36
- }
37
- </tr>
38
- </thead>
39
- <tbody>
40
- @for (row of rows(); track $index) {
41
- <tr class="cb-data-table__row">
42
- @for (col of columns(); track col) {
43
- <td class="cb-data-table__td">{{ row[col] }}</td>
44
- }
45
- </tr>
46
- } @empty {
47
- <tr>
48
- <td class="cb-data-table__empty" [attr.colspan]="columns().length">
49
- {{ (emptyMessage() ?? t().noData) }}
50
- </td>
51
- </tr>
52
- }
53
- </tbody>
54
- </table>
55
- </div>
56
- `, isInline: true, styles: [":host{display:block;width:100%}.cb-data-table{width:100%;overflow-x:auto;font-family:var(--cb-font-sans, inherit);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #e2e8f0);border-radius:var(--cb-radius-lg, .75rem)}.cb-data-table__table{width:100%;border-collapse:collapse;font-size:var(--cb-text-sm, .875rem)}.cb-data-table__th{padding:var(--cb-space-3, .75rem) var(--cb-space-4, 1rem);text-align:left;font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-muted, #64748b);background-color:var(--cb-color-surface-50, #f8fafc);border-bottom:1px solid var(--cb-color-border, #e2e8f0);white-space:nowrap}.cb-data-table__td{padding:var(--cb-space-3, .75rem) var(--cb-space-4, 1rem);color:var(--cb-color-text, #334155);border-bottom:1px solid var(--cb-color-border, #e2e8f0)}.cb-data-table__row:last-child .cb-data-table__td{border-bottom:none}.cb-data-table__row:hover .cb-data-table__td{background-color:var(--cb-color-surface-50, #f8fafc)}.cb-data-table__empty{padding:var(--cb-space-5, 1.25rem);text-align:center;color:var(--cb-color-text-muted, #64748b)}:host-context([data-theme=\"dark\"]) .cb-data-table{background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-data-table__th{color:var(--cb-color-surface-300, #cbd5e1);background-color:var(--cb-color-surface-900, #0f172a);border-bottom-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-data-table__td{color:var(--cb-color-surface-100, #f1f5f9);border-bottom-color:var(--cb-color-surface-700, #334155)}:host-context([data-theme=\"dark\"]) .cb-data-table__row:hover .cb-data-table__td{background-color:var(--cb-color-surface-700, #334155)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbDataTable, decorators: [{
59
- type: Component,
60
- args: [{ selector: 'cb-data-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: `
61
- <div class="cb-data-table">
62
- <table class="cb-data-table__table" [attr.aria-label]="ariaLabel() || null">
63
- <thead>
64
- <tr>
65
- @for (col of columns(); track col) {
66
- <th class="cb-data-table__th" scope="col">{{ col }}</th>
67
- }
68
- </tr>
69
- </thead>
70
- <tbody>
71
- @for (row of rows(); track $index) {
72
- <tr class="cb-data-table__row">
73
- @for (col of columns(); track col) {
74
- <td class="cb-data-table__td">{{ row[col] }}</td>
75
- }
76
- </tr>
77
- } @empty {
78
- <tr>
79
- <td class="cb-data-table__empty" [attr.colspan]="columns().length">
80
- {{ (emptyMessage() ?? t().noData) }}
81
- </td>
82
- </tr>
83
- }
84
- </tbody>
85
- </table>
86
- </div>
87
- `, styles: [":host{display:block;width:100%}.cb-data-table{width:100%;overflow-x:auto;font-family:var(--cb-font-sans, inherit);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #e2e8f0);border-radius:var(--cb-radius-lg, .75rem)}.cb-data-table__table{width:100%;border-collapse:collapse;font-size:var(--cb-text-sm, .875rem)}.cb-data-table__th{padding:var(--cb-space-3, .75rem) var(--cb-space-4, 1rem);text-align:left;font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-muted, #64748b);background-color:var(--cb-color-surface-50, #f8fafc);border-bottom:1px solid var(--cb-color-border, #e2e8f0);white-space:nowrap}.cb-data-table__td{padding:var(--cb-space-3, .75rem) var(--cb-space-4, 1rem);color:var(--cb-color-text, #334155);border-bottom:1px solid var(--cb-color-border, #e2e8f0)}.cb-data-table__row:last-child .cb-data-table__td{border-bottom:none}.cb-data-table__row:hover .cb-data-table__td{background-color:var(--cb-color-surface-50, #f8fafc)}.cb-data-table__empty{padding:var(--cb-space-5, 1.25rem);text-align:center;color:var(--cb-color-text-muted, #64748b)}:host-context([data-theme=\"dark\"]) .cb-data-table{background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-data-table__th{color:var(--cb-color-surface-300, #cbd5e1);background-color:var(--cb-color-surface-900, #0f172a);border-bottom-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-data-table__td{color:var(--cb-color-surface-100, #f1f5f9);border-bottom-color:var(--cb-color-surface-700, #334155)}:host-context([data-theme=\"dark\"]) .cb-data-table__row:hover .cb-data-table__td{background-color:var(--cb-color-surface-700, #334155)}\n"] }]
88
- }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
89
-
90
- /**
91
- * Generated bundle index. Do not edit.
92
- */
93
-
94
- export { CbDataTable };
@@ -1,88 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, model, output, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { injectCbTranslation, cbFormat } from '@caribeng/ui';
4
-
5
- /**
6
- * File-select de Caribe Design: zona de selección de archivos con formatos
7
- * admitidos y lista de seleccionados.
8
- *
9
- * @example
10
- * ```html
11
- * <cb-file-select label="Adjuntar soporte" accept=".pdf,.png" />
12
- * ```
13
- */
14
- class CbFileSelect {
15
- constructor() {
16
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
- this.t = injectCbTranslation();
18
- /** Rellena `{0}`, `{1}`… de un texto traducido. */
19
- this.fmt = cbFormat;
20
- this.label = input(undefined, /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
22
- this.accept = input('.pdf,.png,.jpg', /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "accept" }] : /* istanbul ignore next */ []));
24
- this.multiple = input(false, /* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
26
- this.disabled = input(false, /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
28
- this.files = model([], /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "files" }] : /* istanbul ignore next */ []));
30
- this.filesSelected = output();
31
- }
32
- onFileChange(event) {
33
- const inputEl = event.target;
34
- const list = inputEl.files ? Array.from(inputEl.files) : [];
35
- this.files.set(list);
36
- this.filesSelected.emit(list);
37
- }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbFileSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbFileSelect, isStandalone: true, selector: "cb-file-select", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { files: "filesChange", filesSelected: "filesSelected" }, host: { classAttribute: "cb-file-select-host" }, ngImport: i0, template: `
40
- <label class="cb-file-select" [class.cb-is-disabled]="disabled()">
41
- <span class="cb-file-select__icon" aria-hidden="true">↑</span>
42
- <span class="cb-file-select__title">{{ (label() ?? t().selectDocument) }}</span>
43
- <span class="cb-file-select__hint">{{ fmt(t().formats, accept()) }}</span>
44
- <span class="cb-file-select__count" aria-live="polite">
45
- @if (files().length) {
46
- {{ fmt(t().filesSelected, files().length) }}
47
- }
48
- </span>
49
- <input
50
- class="cb-file-select__input"
51
- type="file"
52
- [attr.accept]="accept()"
53
- [multiple]="multiple()"
54
- [disabled]="disabled()"
55
- (change)="onFileChange($event)"
56
- />
57
- </label>
58
- `, isInline: true, styles: [":host{display:block;width:100%;max-width:24rem}.cb-file-select{display:flex;flex-direction:column;align-items:center;gap:var(--cb-space-1, .25rem);box-sizing:border-box;padding:var(--cb-space-5, 1.25rem);font-family:var(--cb-font-sans, inherit);text-align:center;color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-50, #f8fafc);border:1.5px dashed var(--cb-color-border-strong, #94a3b8);border-radius:var(--cb-radius-lg, .75rem);cursor:pointer;transition:border-color var(--cb-duration-fast, .12s) var(--cb-ease, ease),background-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-file-select:hover:not(.cb-is-disabled){border-color:var(--cb-color-primary-400, #34d399);background-color:var(--cb-color-primary-50, #ecfdf5)}.cb-file-select.cb-is-disabled{opacity:.6;cursor:not-allowed}.cb-file-select__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.2rem;color:var(--cb-color-primary-600, #047857);background-color:var(--cb-color-primary-50, #ecfdf5);border-radius:var(--cb-radius-full, 999px)}.cb-file-select__title{font-size:var(--cb-text-sm, .875rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-file-select__hint{font-size:var(--cb-text-xs, .75rem);color:var(--cb-color-text-muted, #64748b)}.cb-file-select__count{margin-top:var(--cb-space-1, .25rem);font-size:var(--cb-text-xs, .75rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-primary-700, #065f46)}.cb-file-select__count:empty{margin-top:0}.cb-file-select__input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.cb-file-select:has(.cb-file-select__input:focus-visible){outline:2px solid var(--cb-color-focus-ring, var(--cb-color-primary-500, #10b981));outline-offset:2px}:host-context([data-theme=\"dark\"]) .cb-file-select{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-file-select:hover:not(.cb-is-disabled){border-color:var(--cb-color-primary-500, #10b981);background-color:color-mix(in srgb,var(--cb-color-primary-500, #10b981) 12%,transparent)}:host-context([data-theme=\"dark\"]) .cb-file-select__icon{color:var(--cb-color-primary-300, #6ee7b7);background-color:color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbFileSelect, decorators: [{
61
- type: Component,
62
- args: [{ selector: 'cb-file-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, host: { class: 'cb-file-select-host' }, template: `
63
- <label class="cb-file-select" [class.cb-is-disabled]="disabled()">
64
- <span class="cb-file-select__icon" aria-hidden="true">↑</span>
65
- <span class="cb-file-select__title">{{ (label() ?? t().selectDocument) }}</span>
66
- <span class="cb-file-select__hint">{{ fmt(t().formats, accept()) }}</span>
67
- <span class="cb-file-select__count" aria-live="polite">
68
- @if (files().length) {
69
- {{ fmt(t().filesSelected, files().length) }}
70
- }
71
- </span>
72
- <input
73
- class="cb-file-select__input"
74
- type="file"
75
- [attr.accept]="accept()"
76
- [multiple]="multiple()"
77
- [disabled]="disabled()"
78
- (change)="onFileChange($event)"
79
- />
80
- </label>
81
- `, styles: [":host{display:block;width:100%;max-width:24rem}.cb-file-select{display:flex;flex-direction:column;align-items:center;gap:var(--cb-space-1, .25rem);box-sizing:border-box;padding:var(--cb-space-5, 1.25rem);font-family:var(--cb-font-sans, inherit);text-align:center;color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-50, #f8fafc);border:1.5px dashed var(--cb-color-border-strong, #94a3b8);border-radius:var(--cb-radius-lg, .75rem);cursor:pointer;transition:border-color var(--cb-duration-fast, .12s) var(--cb-ease, ease),background-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-file-select:hover:not(.cb-is-disabled){border-color:var(--cb-color-primary-400, #34d399);background-color:var(--cb-color-primary-50, #ecfdf5)}.cb-file-select.cb-is-disabled{opacity:.6;cursor:not-allowed}.cb-file-select__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.2rem;color:var(--cb-color-primary-600, #047857);background-color:var(--cb-color-primary-50, #ecfdf5);border-radius:var(--cb-radius-full, 999px)}.cb-file-select__title{font-size:var(--cb-text-sm, .875rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-file-select__hint{font-size:var(--cb-text-xs, .75rem);color:var(--cb-color-text-muted, #64748b)}.cb-file-select__count{margin-top:var(--cb-space-1, .25rem);font-size:var(--cb-text-xs, .75rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-primary-700, #065f46)}.cb-file-select__count:empty{margin-top:0}.cb-file-select__input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.cb-file-select:has(.cb-file-select__input:focus-visible){outline:2px solid var(--cb-color-focus-ring, var(--cb-color-primary-500, #10b981));outline-offset:2px}:host-context([data-theme=\"dark\"]) .cb-file-select{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-file-select:hover:not(.cb-is-disabled){border-color:var(--cb-color-primary-500, #10b981);background-color:color-mix(in srgb,var(--cb-color-primary-500, #10b981) 12%,transparent)}:host-context([data-theme=\"dark\"]) .cb-file-select__icon{color:var(--cb-color-primary-300, #6ee7b7);background-color:color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}\n"] }]
82
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], files: [{ type: i0.Input, args: [{ isSignal: true, alias: "files", required: false }] }, { type: i0.Output, args: ["filesChange"] }], filesSelected: [{ type: i0.Output, args: ["filesSelected"] }] } });
83
-
84
- /**
85
- * Generated bundle index. Do not edit.
86
- */
87
-
88
- export { CbFileSelect };
@@ -1,100 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, model, output, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { injectCbTranslation } from '@caribeng/ui';
4
-
5
- /**
6
- * Inline-alert de Caribe Design: aviso compacto en línea para formularios y
7
- * tarjetas, con severidad y cierre opcional.
8
- *
9
- * @example
10
- * ```html
11
- * <cb-inline-alert status="error" title="Revisa">Monto inválido.</cb-inline-alert>
12
- * ```
13
- */
14
- class CbInlineAlert {
15
- constructor() {
16
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
- this.t = injectCbTranslation();
18
- this.title = input('', /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
20
- this.status = input('info', /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
22
- this.closable = input(true, /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "closable" }] : /* istanbul ignore next */ []));
24
- this.visible = model(true, /* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
26
- this.closed = output();
27
- }
28
- glyph() {
29
- switch (this.status()) {
30
- case 'success':
31
- return '✓';
32
- case 'warning':
33
- return '!';
34
- case 'error':
35
- return '×';
36
- default:
37
- return 'i';
38
- }
39
- }
40
- close() {
41
- this.visible.set(false);
42
- this.closed.emit();
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInlineAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbInlineAlert, isStandalone: true, selector: "cb-inline-alert", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", closed: "closed" }, ngImport: i0, template: `
46
- @if (visible()) {
47
- <div class="cb-inline-alert cb-inline-alert--{{ status() }}" role="status">
48
- <span class="cb-inline-alert__icon" aria-hidden="true">{{ glyph() }}</span>
49
- <div class="cb-inline-alert__content">
50
- @if (title()) {
51
- <strong class="cb-inline-alert__title">{{ title() }}</strong>
52
- }
53
- <span class="cb-inline-alert__body"><ng-content /></span>
54
- </div>
55
- @if (closable()) {
56
- <button
57
- type="button"
58
- class="cb-inline-alert__close"
59
- [attr.aria-label]="t().close"
60
- (click)="close()"
61
- >
62
- ×
63
- </button>
64
- }
65
- </div>
66
- }
67
- `, isInline: true, styles: [":host{display:block;width:100%}.cb-inline-alert{display:flex;align-items:flex-start;gap:var(--cb-space-2, .5rem);box-sizing:border-box;width:100%;padding:var(--cb-space-2, .5rem) var(--cb-space-3, .75rem);font-family:var(--cb-font-sans, inherit);font-size:var(--cb-text-sm, .875rem);border:1px solid transparent;border-radius:var(--cb-radius-md, .5rem)}.cb-inline-alert__icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:1.25rem;height:1.25rem;font-size:.75rem;font-weight:var(--cb-font-weight-bold, 700);color:#fff;border-radius:var(--cb-radius-full, 999px)}.cb-inline-alert__content{flex:1;min-width:0;display:flex;flex-direction:column}.cb-inline-alert__title{font-weight:var(--cb-font-weight-semibold, 600)}.cb-inline-alert__close{flex:none;padding:0 var(--cb-space-1, .25rem);font-size:1rem;line-height:1;color:inherit;background:transparent;border:none;cursor:pointer;opacity:.7}.cb-inline-alert__close:hover{opacity:1}.cb-inline-alert--success{color:var(--cb-color-success-700, #15803d);background-color:var(--cb-color-success-50, #f0fdf4);border-color:var(--cb-color-success-200, #bbf7d0)}.cb-inline-alert--success .cb-inline-alert__icon{background-color:var(--cb-color-success-500, #16a34a)}.cb-inline-alert--warning{color:var(--cb-color-warning-700, #b45309);background-color:var(--cb-color-warning-50, #fffbeb);border-color:var(--cb-color-warning-200, #fde68a)}.cb-inline-alert--warning .cb-inline-alert__icon{background-color:var(--cb-color-warning-500, #d97706)}.cb-inline-alert--error{color:var(--cb-color-danger-700, #b91c1c);background-color:var(--cb-color-danger-50, #fef2f2);border-color:var(--cb-color-danger-200, #fecaca)}.cb-inline-alert--error .cb-inline-alert__icon{background-color:var(--cb-color-danger-500, #dc2626)}.cb-inline-alert--info{color:var(--cb-color-info-700, #1d4ed8);background-color:var(--cb-color-info-50, #eff6ff);border-color:var(--cb-color-info-200, #bfdbfe)}.cb-inline-alert--info .cb-inline-alert__icon{background-color:var(--cb-color-info-500, #2563eb)}:host-context([data-theme=\"dark\"]) .cb-inline-alert{background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569);color:var(--cb-color-surface-100, #f1f5f9)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInlineAlert, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'cb-inline-alert', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: `
72
- @if (visible()) {
73
- <div class="cb-inline-alert cb-inline-alert--{{ status() }}" role="status">
74
- <span class="cb-inline-alert__icon" aria-hidden="true">{{ glyph() }}</span>
75
- <div class="cb-inline-alert__content">
76
- @if (title()) {
77
- <strong class="cb-inline-alert__title">{{ title() }}</strong>
78
- }
79
- <span class="cb-inline-alert__body"><ng-content /></span>
80
- </div>
81
- @if (closable()) {
82
- <button
83
- type="button"
84
- class="cb-inline-alert__close"
85
- [attr.aria-label]="t().close"
86
- (click)="close()"
87
- >
88
- ×
89
- </button>
90
- }
91
- </div>
92
- }
93
- `, styles: [":host{display:block;width:100%}.cb-inline-alert{display:flex;align-items:flex-start;gap:var(--cb-space-2, .5rem);box-sizing:border-box;width:100%;padding:var(--cb-space-2, .5rem) var(--cb-space-3, .75rem);font-family:var(--cb-font-sans, inherit);font-size:var(--cb-text-sm, .875rem);border:1px solid transparent;border-radius:var(--cb-radius-md, .5rem)}.cb-inline-alert__icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:1.25rem;height:1.25rem;font-size:.75rem;font-weight:var(--cb-font-weight-bold, 700);color:#fff;border-radius:var(--cb-radius-full, 999px)}.cb-inline-alert__content{flex:1;min-width:0;display:flex;flex-direction:column}.cb-inline-alert__title{font-weight:var(--cb-font-weight-semibold, 600)}.cb-inline-alert__close{flex:none;padding:0 var(--cb-space-1, .25rem);font-size:1rem;line-height:1;color:inherit;background:transparent;border:none;cursor:pointer;opacity:.7}.cb-inline-alert__close:hover{opacity:1}.cb-inline-alert--success{color:var(--cb-color-success-700, #15803d);background-color:var(--cb-color-success-50, #f0fdf4);border-color:var(--cb-color-success-200, #bbf7d0)}.cb-inline-alert--success .cb-inline-alert__icon{background-color:var(--cb-color-success-500, #16a34a)}.cb-inline-alert--warning{color:var(--cb-color-warning-700, #b45309);background-color:var(--cb-color-warning-50, #fffbeb);border-color:var(--cb-color-warning-200, #fde68a)}.cb-inline-alert--warning .cb-inline-alert__icon{background-color:var(--cb-color-warning-500, #d97706)}.cb-inline-alert--error{color:var(--cb-color-danger-700, #b91c1c);background-color:var(--cb-color-danger-50, #fef2f2);border-color:var(--cb-color-danger-200, #fecaca)}.cb-inline-alert--error .cb-inline-alert__icon{background-color:var(--cb-color-danger-500, #dc2626)}.cb-inline-alert--info{color:var(--cb-color-info-700, #1d4ed8);background-color:var(--cb-color-info-50, #eff6ff);border-color:var(--cb-color-info-200, #bfdbfe)}.cb-inline-alert--info .cb-inline-alert__icon{background-color:var(--cb-color-info-500, #2563eb)}:host-context([data-theme=\"dark\"]) .cb-inline-alert{background-color:var(--cb-color-surface-800, #1e293b);border-color:var(--cb-color-surface-600, #475569);color:var(--cb-color-surface-100, #f1f5f9)}\n"] }]
94
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
95
-
96
- /**
97
- * Generated bundle index. Do not edit.
98
- */
99
-
100
- export { CbInlineAlert };