@caribeng/ui 22.4.0 → 22.5.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 +311 -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 +1181 -1
  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 +711 -2
  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,138 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, model, signal, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { cbFieldState } from '@caribeng/ui';
5
-
6
- /**
7
- * Input-date de Caribe Design: campo de fecha nativo estilizado con etiqueta,
8
- * límites min/max y CVA.
9
- *
10
- * @example
11
- * ```html
12
- * <cb-input-date label="Fecha de pago" />
13
- * ```
14
- */
15
- class CbInputDate {
16
- constructor() {
17
- this.label = input('', /* @ts-ignore */
18
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
19
- this.min = input('', /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
21
- this.max = input('', /* @ts-ignore */
22
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
23
- this.disabled = input(false, /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
25
- /** Marca visual y ARIA de estado inválido (también se activa con Angular Forms). */
26
- this.invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27
- /** Indicador de obligatoriedad de este campo; si se omite usa el global de `provideCaribeNG()`. */
28
- this.requiredIndicator = input(undefined, /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "requiredIndicator" }] : /* istanbul ignore next */ []));
30
- /** Estado de validación: inputs manuales + estado de Angular Forms. */
31
- this.fieldState = cbFieldState({
32
- invalid: () => this.invalid(),
33
- requiredIndicator: () => this.requiredIndicator(),
34
- });
35
- this.value = model('', /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
37
- this.cvaDisabled = signal(false, /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
39
- this.onChange = () => { };
40
- this.onTouched = () => { };
41
- }
42
- onInput(event) {
43
- const next = event.target.value;
44
- this.value.set(next);
45
- this.onChange(next);
46
- this.onTouched();
47
- }
48
- writeValue(val) {
49
- this.value.set(val ?? '');
50
- }
51
- registerOnChange(fn) {
52
- this.onChange = fn;
53
- }
54
- registerOnTouched(fn) {
55
- this.onTouched = fn;
56
- }
57
- setDisabledState(isDisabled) {
58
- this.cvaDisabled.set(isDisabled);
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInputDate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbInputDate, isStandalone: true, selector: "cb-input-date", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, requiredIndicator: { classPropertyName: "requiredIndicator", publicName: "requiredIndicator", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "cb-input-date-host" }, providers: [
62
- {
63
- provide: NG_VALUE_ACCESSOR,
64
- useExisting: forwardRef(() => CbInputDate),
65
- multi: true,
66
- },
67
- ], ngImport: i0, template: `
68
- <label class="cb-input-date">
69
- @if (label()) {
70
- <span class="cb-input-date__label">
71
- {{ label() }}
72
- @if (fieldState.indicator(); as mark) {
73
- <span
74
- [class]="'cb-input-date__required cb-input-date__required--' + mark.kind"
75
- [attr.aria-hidden]="mark.kind === 'optional' ? null : 'true'"
76
- >{{ mark.text }}</span>
77
- }
78
- </span>
79
- }
80
- <input
81
- class="cb-input-date__field"
82
- [class.cb-is-invalid]="fieldState.invalid()"
83
- [attr.aria-invalid]="fieldState.invalid() ? 'true' : null"
84
- [attr.aria-required]="fieldState.required() || null"
85
- type="date"
86
- [value]="value()"
87
- [attr.min]="min() || null"
88
- [attr.max]="max() || null"
89
- [disabled]="disabled() || cvaDisabled()"
90
- (input)="onInput($event)"
91
- (blur)="onTouched()"
92
- />
93
- </label>
94
- `, isInline: true, styles: [":host{display:inline-block;width:100%;max-width:14rem}.cb-input-date{display:flex;flex-direction:column;gap:var(--cb-space-2, .35rem);font-family:var(--cb-font-sans, inherit)}.cb-input-date__label{font-size:var(--cb-text-sm, .8125rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-strong, #0f172a)}.cb-input-date__field{box-sizing:border-box;width:100%;height:2.5rem;padding:0 var(--cb-space-3, .75rem);font:inherit;font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #cbd5e1);border-radius:var(--cb-radius-md, .5rem)}.cb-input-date__field:focus-visible{outline:none;border-color:var(--cb-color-primary-500, #10b981);box-shadow:0 0 0 3px color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}.cb-input-date__field:disabled{opacity:.6;cursor:not-allowed;background-color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-input-date__label{color:var(--cb-color-surface-0, #f8fafc)}:host-context([data-theme=\"dark\"]) .cb-input-date__field{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569);color-scheme:dark}.cb-input-date__field.cb-is-invalid{border-color:var(--cb-color-danger)}.cb-input-date__required{color:var(--cb-color-danger);margin-left:2px}.cb-input-date__required--required,.cb-input-date__required--optional{margin-left:.25rem;color:var(--cb-color-text-muted);font-size:.85em;font-weight:var(--cb-font-weight-normal, 400)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInputDate, decorators: [{
97
- type: Component,
98
- args: [{ selector: 'cb-input-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, providers: [
99
- {
100
- provide: NG_VALUE_ACCESSOR,
101
- useExisting: forwardRef(() => CbInputDate),
102
- multi: true,
103
- },
104
- ], host: { class: 'cb-input-date-host' }, template: `
105
- <label class="cb-input-date">
106
- @if (label()) {
107
- <span class="cb-input-date__label">
108
- {{ label() }}
109
- @if (fieldState.indicator(); as mark) {
110
- <span
111
- [class]="'cb-input-date__required cb-input-date__required--' + mark.kind"
112
- [attr.aria-hidden]="mark.kind === 'optional' ? null : 'true'"
113
- >{{ mark.text }}</span>
114
- }
115
- </span>
116
- }
117
- <input
118
- class="cb-input-date__field"
119
- [class.cb-is-invalid]="fieldState.invalid()"
120
- [attr.aria-invalid]="fieldState.invalid() ? 'true' : null"
121
- [attr.aria-required]="fieldState.required() || null"
122
- type="date"
123
- [value]="value()"
124
- [attr.min]="min() || null"
125
- [attr.max]="max() || null"
126
- [disabled]="disabled() || cvaDisabled()"
127
- (input)="onInput($event)"
128
- (blur)="onTouched()"
129
- />
130
- </label>
131
- `, styles: [":host{display:inline-block;width:100%;max-width:14rem}.cb-input-date{display:flex;flex-direction:column;gap:var(--cb-space-2, .35rem);font-family:var(--cb-font-sans, inherit)}.cb-input-date__label{font-size:var(--cb-text-sm, .8125rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-strong, #0f172a)}.cb-input-date__field{box-sizing:border-box;width:100%;height:2.5rem;padding:0 var(--cb-space-3, .75rem);font:inherit;font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #cbd5e1);border-radius:var(--cb-radius-md, .5rem)}.cb-input-date__field:focus-visible{outline:none;border-color:var(--cb-color-primary-500, #10b981);box-shadow:0 0 0 3px color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}.cb-input-date__field:disabled{opacity:.6;cursor:not-allowed;background-color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-input-date__label{color:var(--cb-color-surface-0, #f8fafc)}:host-context([data-theme=\"dark\"]) .cb-input-date__field{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569);color-scheme:dark}.cb-input-date__field.cb-is-invalid{border-color:var(--cb-color-danger)}.cb-input-date__required{color:var(--cb-color-danger);margin-left:2px}.cb-input-date__required--required,.cb-input-date__required--optional{margin-left:.25rem;color:var(--cb-color-text-muted);font-size:.85em;font-weight:var(--cb-font-weight-normal, 400)}\n"] }]
132
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], requiredIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "requiredIndicator", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
133
-
134
- /**
135
- * Generated bundle index. Do not edit.
136
- */
137
-
138
- export { CbInputDate };
@@ -1,154 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, model, signal, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { injectCbTranslation, cbFieldState } from '@caribeng/ui';
5
-
6
- /**
7
- * Input-select de Caribe Design: desplegable nativo estilizado con etiqueta,
8
- * placeholder y CVA.
9
- *
10
- * @example
11
- * ```html
12
- * <cb-input-select label="País" [options]="paises" />
13
- * ```
14
- */
15
- class CbInputSelect {
16
- constructor() {
17
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
18
- this.t = injectCbTranslation();
19
- this.label = input('', /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
21
- this.placeholder = input(undefined, /* @ts-ignore */
22
- ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
23
- this.options = input([], /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
25
- this.disabled = input(false, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
27
- /** Marca visual y ARIA de estado inválido (también se activa con Angular Forms). */
28
- this.invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
29
- /** Indicador de obligatoriedad de este campo; si se omite usa el global de `provideCaribeNG()`. */
30
- this.requiredIndicator = input(undefined, /* @ts-ignore */
31
- ...(ngDevMode ? [{ debugName: "requiredIndicator" }] : /* istanbul ignore next */ []));
32
- /** Estado de validación: inputs manuales + estado de Angular Forms. */
33
- this.fieldState = cbFieldState({
34
- invalid: () => this.invalid(),
35
- requiredIndicator: () => this.requiredIndicator(),
36
- });
37
- this.value = model('', /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
39
- this.cvaDisabled = signal(false, /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
41
- this.onChange = () => { };
42
- this.onTouched = () => { };
43
- }
44
- onSelect(event) {
45
- const next = event.target.value;
46
- this.value.set(next);
47
- this.onChange(next);
48
- this.onTouched();
49
- }
50
- writeValue(val) {
51
- this.value.set(val ?? '');
52
- }
53
- registerOnChange(fn) {
54
- this.onChange = fn;
55
- }
56
- registerOnTouched(fn) {
57
- this.onTouched = fn;
58
- }
59
- setDisabledState(isDisabled) {
60
- this.cvaDisabled.set(isDisabled);
61
- }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInputSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbInputSelect, isStandalone: true, selector: "cb-input-select", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, requiredIndicator: { classPropertyName: "requiredIndicator", publicName: "requiredIndicator", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "cb-input-select-host" }, providers: [
64
- {
65
- provide: NG_VALUE_ACCESSOR,
66
- useExisting: forwardRef(() => CbInputSelect),
67
- multi: true,
68
- },
69
- ], ngImport: i0, template: `
70
- <label class="cb-input-select">
71
- @if (label()) {
72
- <span class="cb-input-select__label">
73
- {{ label() }}
74
- @if (fieldState.indicator(); as mark) {
75
- <span
76
- [class]="'cb-input-select__required cb-input-select__required--' + mark.kind"
77
- [attr.aria-hidden]="mark.kind === 'optional' ? null : 'true'"
78
- >{{ mark.text }}</span>
79
- }
80
- </span>
81
- }
82
- <div class="cb-input-select__wrap">
83
- <select
84
- class="cb-input-select__field"
85
- [class.cb-is-invalid]="fieldState.invalid()"
86
- [attr.aria-invalid]="fieldState.invalid() ? 'true' : null"
87
- [attr.aria-required]="fieldState.required() || null"
88
- [disabled]="disabled() || cvaDisabled()"
89
- (change)="onSelect($event)"
90
- (blur)="onTouched()"
91
- >
92
- @if ((placeholder() ?? t().select)) {
93
- <option value="" disabled [selected]="!value()">{{ (placeholder() ?? t().select) }}</option>
94
- }
95
- <!-- [selected] por opción: [value] en el <select> se aplicaría antes de crear las opciones -->
96
- @for (opt of options(); track opt.value) {
97
- <option [value]="opt.value" [selected]="opt.value === value()">{{ opt.label }}</option>
98
- }
99
- </select>
100
- <span class="cb-input-select__chevron" aria-hidden="true">▾</span>
101
- </div>
102
- </label>
103
- `, isInline: true, styles: [":host{display:block;width:100%}.cb-input-select{display:flex;flex-direction:column;gap:var(--cb-space-2, .35rem);font-family:var(--cb-font-sans, inherit)}.cb-input-select__label{font-size:var(--cb-text-sm, .8125rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-strong, #0f172a)}.cb-input-select__wrap{position:relative;display:flex}.cb-input-select__field{appearance:none;-webkit-appearance:none;width:100%;box-sizing:border-box;height:2.5rem;padding:0 var(--cb-space-8, 2rem) 0 var(--cb-space-3, .75rem);font:inherit;font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #cbd5e1);border-radius:var(--cb-radius-md, .5rem);cursor:pointer;transition:border-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-input-select__field:focus-visible{outline:none;border-color:var(--cb-color-primary-500, #10b981);box-shadow:0 0 0 3px color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}.cb-input-select__field:disabled{opacity:.6;cursor:not-allowed;background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-input-select__chevron{position:absolute;top:50%;right:var(--cb-space-3, .75rem);transform:translateY(-50%);pointer-events:none;color:var(--cb-color-text-muted, #64748b)}:host-context([data-theme=\"dark\"]) .cb-input-select__label{color:var(--cb-color-surface-0, #f8fafc)}:host-context([data-theme=\"dark\"]) .cb-input-select__field{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569)}.cb-input-select__field.cb-is-invalid{border-color:var(--cb-color-danger)}.cb-input-select__required{color:var(--cb-color-danger);margin-left:2px}.cb-input-select__required--required,.cb-input-select__required--optional{margin-left:.25rem;color:var(--cb-color-text-muted);font-size:.85em;font-weight:var(--cb-font-weight-normal, 400)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbInputSelect, decorators: [{
106
- type: Component,
107
- args: [{ selector: 'cb-input-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, providers: [
108
- {
109
- provide: NG_VALUE_ACCESSOR,
110
- useExisting: forwardRef(() => CbInputSelect),
111
- multi: true,
112
- },
113
- ], host: { class: 'cb-input-select-host' }, template: `
114
- <label class="cb-input-select">
115
- @if (label()) {
116
- <span class="cb-input-select__label">
117
- {{ label() }}
118
- @if (fieldState.indicator(); as mark) {
119
- <span
120
- [class]="'cb-input-select__required cb-input-select__required--' + mark.kind"
121
- [attr.aria-hidden]="mark.kind === 'optional' ? null : 'true'"
122
- >{{ mark.text }}</span>
123
- }
124
- </span>
125
- }
126
- <div class="cb-input-select__wrap">
127
- <select
128
- class="cb-input-select__field"
129
- [class.cb-is-invalid]="fieldState.invalid()"
130
- [attr.aria-invalid]="fieldState.invalid() ? 'true' : null"
131
- [attr.aria-required]="fieldState.required() || null"
132
- [disabled]="disabled() || cvaDisabled()"
133
- (change)="onSelect($event)"
134
- (blur)="onTouched()"
135
- >
136
- @if ((placeholder() ?? t().select)) {
137
- <option value="" disabled [selected]="!value()">{{ (placeholder() ?? t().select) }}</option>
138
- }
139
- <!-- [selected] por opción: [value] en el <select> se aplicaría antes de crear las opciones -->
140
- @for (opt of options(); track opt.value) {
141
- <option [value]="opt.value" [selected]="opt.value === value()">{{ opt.label }}</option>
142
- }
143
- </select>
144
- <span class="cb-input-select__chevron" aria-hidden="true">▾</span>
145
- </div>
146
- </label>
147
- `, styles: [":host{display:block;width:100%}.cb-input-select{display:flex;flex-direction:column;gap:var(--cb-space-2, .35rem);font-family:var(--cb-font-sans, inherit)}.cb-input-select__label{font-size:var(--cb-text-sm, .8125rem);font-weight:var(--cb-font-weight-semibold, 600);color:var(--cb-color-text-strong, #0f172a)}.cb-input-select__wrap{position:relative;display:flex}.cb-input-select__field{appearance:none;-webkit-appearance:none;width:100%;box-sizing:border-box;height:2.5rem;padding:0 var(--cb-space-8, 2rem) 0 var(--cb-space-3, .75rem);font:inherit;font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border:1px solid var(--cb-color-border, #cbd5e1);border-radius:var(--cb-radius-md, .5rem);cursor:pointer;transition:border-color var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-input-select__field:focus-visible{outline:none;border-color:var(--cb-color-primary-500, #10b981);box-shadow:0 0 0 3px color-mix(in srgb,var(--cb-color-primary-500, #10b981) 18%,transparent)}.cb-input-select__field:disabled{opacity:.6;cursor:not-allowed;background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-input-select__chevron{position:absolute;top:50%;right:var(--cb-space-3, .75rem);transform:translateY(-50%);pointer-events:none;color:var(--cb-color-text-muted, #64748b)}:host-context([data-theme=\"dark\"]) .cb-input-select__label{color:var(--cb-color-surface-0, #f8fafc)}:host-context([data-theme=\"dark\"]) .cb-input-select__field{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-900, #0f172a);border-color:var(--cb-color-surface-600, #475569)}.cb-input-select__field.cb-is-invalid{border-color:var(--cb-color-danger)}.cb-input-select__required{color:var(--cb-color-danger);margin-left:2px}.cb-input-select__required--required,.cb-input-select__required--optional{margin-left:.25rem;color:var(--cb-color-text-muted);font-size:.85em;font-weight:var(--cb-font-weight-normal, 400)}\n"] }]
148
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], requiredIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "requiredIndicator", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
149
-
150
- /**
151
- * Generated bundle index. Do not edit.
152
- */
153
-
154
- export { CbInputSelect };
@@ -1,48 +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
- * Loader de Caribe Design: indicador de carga en línea con spinner y texto.
7
- *
8
- * @example
9
- * ```html
10
- * <cb-loader text="Cargando…" size="md" />
11
- * ```
12
- */
13
- class CbLoader {
14
- constructor() {
15
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
16
- this.t = injectCbTranslation();
17
- this.text = input(undefined, /* @ts-ignore */
18
- ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
19
- this.size = input('md', /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbLoader, isStandalone: true, selector: "cb-loader", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cb-loader-host" }, ngImport: i0, template: `
24
- <div class="cb-loader cb-loader--{{ size() }}" role="status" aria-live="polite">
25
- <span class="cb-loader__spinner" aria-hidden="true"></span>
26
- @if ((text() ?? t().loadingMessage)) {
27
- <span class="cb-loader__text">{{ (text() ?? t().loadingMessage) }}</span>
28
- }
29
- </div>
30
- `, isInline: true, styles: [":host{display:inline-flex}.cb-loader{display:inline-flex;align-items:center;gap:var(--cb-space-2, .65rem);font-family:var(--cb-font-sans, inherit);font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text, #334155)}.cb-loader__spinner{flex:none;display:inline-block;width:1.1rem;height:1.1rem;border:2px solid var(--cb-color-surface-300, #cbd5e1);border-top-color:var(--cb-color-primary-500, #10b981);border-radius:var(--cb-radius-full, 999px);animation:cb-loader-spin .7s linear infinite}.cb-loader--sm .cb-loader__spinner{width:.85rem;height:.85rem}.cb-loader--lg .cb-loader__spinner{width:1.5rem;height:1.5rem;border-width:3px}@keyframes cb-loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.cb-loader__spinner{animation-duration:2s}}:host-context([data-theme=\"dark\"]) .cb-loader{color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-loader__spinner{border-color:var(--cb-color-surface-600, #475569);border-top-color:var(--cb-color-primary-500, #10b981)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbLoader, decorators: [{
33
- type: Component,
34
- args: [{ selector: 'cb-loader', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, host: { class: 'cb-loader-host' }, template: `
35
- <div class="cb-loader cb-loader--{{ size() }}" role="status" aria-live="polite">
36
- <span class="cb-loader__spinner" aria-hidden="true"></span>
37
- @if ((text() ?? t().loadingMessage)) {
38
- <span class="cb-loader__text">{{ (text() ?? t().loadingMessage) }}</span>
39
- }
40
- </div>
41
- `, styles: [":host{display:inline-flex}.cb-loader{display:inline-flex;align-items:center;gap:var(--cb-space-2, .65rem);font-family:var(--cb-font-sans, inherit);font-size:var(--cb-text-sm, .875rem);color:var(--cb-color-text, #334155)}.cb-loader__spinner{flex:none;display:inline-block;width:1.1rem;height:1.1rem;border:2px solid var(--cb-color-surface-300, #cbd5e1);border-top-color:var(--cb-color-primary-500, #10b981);border-radius:var(--cb-radius-full, 999px);animation:cb-loader-spin .7s linear infinite}.cb-loader--sm .cb-loader__spinner{width:.85rem;height:.85rem}.cb-loader--lg .cb-loader__spinner{width:1.5rem;height:1.5rem;border-width:3px}@keyframes cb-loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.cb-loader__spinner{animation-duration:2s}}:host-context([data-theme=\"dark\"]) .cb-loader{color:var(--cb-color-surface-100, #f1f5f9)}:host-context([data-theme=\"dark\"]) .cb-loader__spinner{border-color:var(--cb-color-surface-600, #475569);border-top-color:var(--cb-color-primary-500, #10b981)}\n"] }]
42
- }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
43
-
44
- /**
45
- * Generated bundle index. Do not edit.
46
- */
47
-
48
- export { CbLoader };
@@ -1,119 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, model, output, viewChild, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import * as i1 from '@angular/cdk/a11y';
4
- import { A11yModule } from '@angular/cdk/a11y';
5
- import { CbButton } from '@caribeng/ui/button';
6
- import { injectCbTranslation, cbOverlayFocus } from '@caribeng/ui';
7
-
8
- /**
9
- * Modal de Caribe Design: diálogo centrado con backdrop, cabecera, contenido y
10
- * acciones de confirmación/cancelación.
11
- *
12
- * @example
13
- * ```html
14
- * <cb-modal title="Confirmar" [(visible)]="open" (confirm)="ok()">…</cb-modal>
15
- * ```
16
- */
17
- let nextId = 0;
18
- class CbModal {
19
- constructor() {
20
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
21
- this.t = injectCbTranslation();
22
- this.title = input('', /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
24
- this.confirmLabel = input(undefined, /* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "confirmLabel" }] : /* istanbul ignore next */ []));
26
- this.visible = model(false, /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
28
- this.confirm = output();
29
- this.closed = output();
30
- this.titleId = `cb-modal-${++nextId}-title`;
31
- this.closeBtn = viewChild('closeBtn', /* @ts-ignore */
32
- ...(ngDevMode ? [{ debugName: "closeBtn" }] : /* istanbul ignore next */ []));
33
- cbOverlayFocus({ open: this.visible, initialFocus: () => this.closeBtn()?.nativeElement });
34
- }
35
- close() {
36
- this.visible.set(false);
37
- this.closed.emit();
38
- }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbModal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CbModal, isStandalone: true, selector: "cb-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, confirmLabel: { classPropertyName: "confirmLabel", publicName: "confirmLabel", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", confirm: "confirm", closed: "closed" }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, isSignal: true }], ngImport: i0, template: `
41
- @if (visible()) {
42
- <div class="cb-modal__backdrop" (click)="close()">
43
- <div
44
- class="cb-modal"
45
- role="dialog"
46
- aria-modal="true"
47
- [attr.aria-labelledby]="title() ? titleId : null"
48
- cdkTrapFocus
49
- (click)="$event.stopPropagation()"
50
- (keydown.escape)="close()"
51
- >
52
- <header class="cb-modal__head">
53
- <h2 class="cb-modal__title" [id]="titleId">{{ title() }}</h2>
54
- <button
55
- #closeBtn
56
- type="button"
57
- class="cb-modal__close"
58
- [attr.aria-label]="t().close"
59
- (click)="close()"
60
- >
61
- ×
62
- </button>
63
- </header>
64
- <div class="cb-modal__body"><ng-content /></div>
65
- <footer class="cb-modal__foot">
66
- <cb-button variant="text" severity="secondary" (click)="close()">
67
- {{ t().cancel }}
68
- </cb-button>
69
- <cb-button (click)="confirm.emit()">{{ (confirmLabel() ?? t().accept) }}</cb-button>
70
- </footer>
71
- </div>
72
- </div>
73
- }
74
- `, isInline: true, styles: [":host{display:contents}.cb-modal__backdrop{position:fixed;inset:0;z-index:var(--cb-z-modal, 1000);display:flex;align-items:center;justify-content:center;padding:var(--cb-space-4, 1rem);background-color:var(--cb-color-overlay, rgba(15, 23, 42, .55));animation:cb-modal-fade var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-modal{display:flex;flex-direction:column;width:100%;max-width:28rem;max-height:90vh;overflow:hidden;font-family:var(--cb-font-sans, inherit);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border-radius:var(--cb-radius-lg, .75rem);box-shadow:var(--cb-shadow-lg, 0 24px 48px rgba(0, 0, 0, .28));animation:cb-modal-in var(--cb-duration-normal, .2s) var(--cb-ease-out, ease-out)}.cb-modal__head{display:flex;align-items:center;justify-content:space-between;gap:var(--cb-space-3, .75rem);padding:var(--cb-space-4, 1rem) var(--cb-space-5, 1.25rem);border-bottom:1px solid var(--cb-color-border, #e2e8f0)}.cb-modal__title{margin:0;font-size:var(--cb-text-lg, 1.05rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-modal__close{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1.25rem;line-height:1;color:var(--cb-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--cb-radius-full, 999px);cursor:pointer}.cb-modal__close:hover{background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-modal__body{flex:1;overflow-y:auto;padding:var(--cb-space-5, 1.25rem);font-size:var(--cb-text-sm, .9375rem);color:var(--cb-color-text, #334155);line-height:var(--cb-line-height-relaxed, 1.6)}.cb-modal__foot{display:flex;justify-content:flex-end;gap:var(--cb-space-2, .5rem);padding:var(--cb-space-4, 1rem) var(--cb-space-5, 1.25rem);border-top:1px solid var(--cb-color-border, #e2e8f0)}@keyframes cb-modal-fade{0%{opacity:0}to{opacity:1}}@keyframes cb-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host-context([data-theme=\"dark\"]) .cb-modal{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-800, #1e293b)}:host-context([data-theme=\"dark\"]) .cb-modal__head,:host-context([data-theme=\"dark\"]) .cb-modal__foot{border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-modal__body{color:var(--cb-color-surface-200, #e2e8f0)}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: CbButton, selector: "cb-button", inputs: ["severity", "variant", "size", "disabled", "loading", "fullWidth", "type", "ariaLabel", "ariaHaspopup", "ariaExpanded", "ariaControls"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbModal, decorators: [{
77
- type: Component,
78
- args: [{ selector: 'cb-modal', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, imports: [A11yModule, CbButton], template: `
79
- @if (visible()) {
80
- <div class="cb-modal__backdrop" (click)="close()">
81
- <div
82
- class="cb-modal"
83
- role="dialog"
84
- aria-modal="true"
85
- [attr.aria-labelledby]="title() ? titleId : null"
86
- cdkTrapFocus
87
- (click)="$event.stopPropagation()"
88
- (keydown.escape)="close()"
89
- >
90
- <header class="cb-modal__head">
91
- <h2 class="cb-modal__title" [id]="titleId">{{ title() }}</h2>
92
- <button
93
- #closeBtn
94
- type="button"
95
- class="cb-modal__close"
96
- [attr.aria-label]="t().close"
97
- (click)="close()"
98
- >
99
- ×
100
- </button>
101
- </header>
102
- <div class="cb-modal__body"><ng-content /></div>
103
- <footer class="cb-modal__foot">
104
- <cb-button variant="text" severity="secondary" (click)="close()">
105
- {{ t().cancel }}
106
- </cb-button>
107
- <cb-button (click)="confirm.emit()">{{ (confirmLabel() ?? t().accept) }}</cb-button>
108
- </footer>
109
- </div>
110
- </div>
111
- }
112
- `, styles: [":host{display:contents}.cb-modal__backdrop{position:fixed;inset:0;z-index:var(--cb-z-modal, 1000);display:flex;align-items:center;justify-content:center;padding:var(--cb-space-4, 1rem);background-color:var(--cb-color-overlay, rgba(15, 23, 42, .55));animation:cb-modal-fade var(--cb-duration-fast, .12s) var(--cb-ease, ease)}.cb-modal{display:flex;flex-direction:column;width:100%;max-width:28rem;max-height:90vh;overflow:hidden;font-family:var(--cb-font-sans, inherit);color:var(--cb-color-text-strong, #0f172a);background-color:var(--cb-color-surface-0, #ffffff);border-radius:var(--cb-radius-lg, .75rem);box-shadow:var(--cb-shadow-lg, 0 24px 48px rgba(0, 0, 0, .28));animation:cb-modal-in var(--cb-duration-normal, .2s) var(--cb-ease-out, ease-out)}.cb-modal__head{display:flex;align-items:center;justify-content:space-between;gap:var(--cb-space-3, .75rem);padding:var(--cb-space-4, 1rem) var(--cb-space-5, 1.25rem);border-bottom:1px solid var(--cb-color-border, #e2e8f0)}.cb-modal__title{margin:0;font-size:var(--cb-text-lg, 1.05rem);font-weight:var(--cb-font-weight-semibold, 600)}.cb-modal__close{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1.25rem;line-height:1;color:var(--cb-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--cb-radius-full, 999px);cursor:pointer}.cb-modal__close:hover{background-color:var(--cb-color-surface-100, #f1f5f9)}.cb-modal__body{flex:1;overflow-y:auto;padding:var(--cb-space-5, 1.25rem);font-size:var(--cb-text-sm, .9375rem);color:var(--cb-color-text, #334155);line-height:var(--cb-line-height-relaxed, 1.6)}.cb-modal__foot{display:flex;justify-content:flex-end;gap:var(--cb-space-2, .5rem);padding:var(--cb-space-4, 1rem) var(--cb-space-5, 1.25rem);border-top:1px solid var(--cb-color-border, #e2e8f0)}@keyframes cb-modal-fade{0%{opacity:0}to{opacity:1}}@keyframes cb-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host-context([data-theme=\"dark\"]) .cb-modal{color:var(--cb-color-surface-0, #f8fafc);background-color:var(--cb-color-surface-800, #1e293b)}:host-context([data-theme=\"dark\"]) .cb-modal__head,:host-context([data-theme=\"dark\"]) .cb-modal__foot{border-color:var(--cb-color-surface-600, #475569)}:host-context([data-theme=\"dark\"]) .cb-modal__body{color:var(--cb-color-surface-200, #e2e8f0)}\n"] }]
113
- }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], confirm: [{ type: i0.Output, args: ["confirm"] }], closed: [{ type: i0.Output, args: ["closed"] }], closeBtn: [{ type: i0.ViewChild, args: ['closeBtn', { isSignal: true }] }] } });
114
-
115
- /**
116
- * Generated bundle index. Do not edit.
117
- */
118
-
119
- export { CbModal };
@@ -1,52 +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
- class CbPictogram {
6
- constructor() {
7
- /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
8
- this.t = injectCbTranslation();
9
- this.name = input('security-shield', /* @ts-ignore */
10
- ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
11
- this.size = input('56px', /* @ts-ignore */
12
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
13
- this.alt = input(undefined, /* @ts-ignore */
14
- ...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbPictogram, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: CbPictogram, isStandalone: true, selector: "cb-pictogram", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "size()", "style.height": "size()" }, classAttribute: "cb-pictogram" }, ngImport: i0, template: `
18
- <svg
19
- viewBox="0 0 64 64"
20
- role="img"
21
- [attr.aria-label]="(alt() ?? t().pictogram) || name()"
22
- style="width: 100%; height: 100%"
23
- >
24
- <circle cx="32" cy="32" r="28" fill="var(--cb-color-primary-100, #d1fae5)" />
25
- <path d="M22 33l7 7 14-15" fill="none" stroke="var(--cb-color-primary-600, #059669)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
26
- </svg>
27
- `, isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;font-family:var(--cb-font-sans, inherit)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbPictogram, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'cb-pictogram', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, host: {
32
- class: 'cb-pictogram',
33
- '[style.width]': 'size()',
34
- '[style.height]': 'size()',
35
- }, template: `
36
- <svg
37
- viewBox="0 0 64 64"
38
- role="img"
39
- [attr.aria-label]="(alt() ?? t().pictogram) || name()"
40
- style="width: 100%; height: 100%"
41
- >
42
- <circle cx="32" cy="32" r="28" fill="var(--cb-color-primary-100, #d1fae5)" />
43
- <path d="M22 33l7 7 14-15" fill="none" stroke="var(--cb-color-primary-600, #059669)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
44
- </svg>
45
- `, styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;font-family:var(--cb-font-sans, inherit)}\n"] }]
46
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }] } });
47
-
48
- /**
49
- * Generated bundle index. Do not edit.
50
- */
51
-
52
- export { CbPictogram };