@weeehaoooz/talos-ui 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +91 -15
  3. package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
  4. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
  5. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
  7. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
  8. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
  9. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
  10. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
  11. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
  12. package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
  13. package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
  14. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1316 -7
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +3 -3
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +21592 -16293
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -139
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +2 -1
  23. package/styles/_buttons.scss +51 -0
  24. package/styles/_dropdown.scss +438 -0
  25. package/styles/_form-controls.scss +13 -0
  26. package/styles/_progress-bar.scss +43 -0
  27. package/styles/_skeleton.scss +176 -0
  28. package/styles/_spinner.scss +58 -0
  29. package/styles/_variables.scss +33 -0
  30. package/styles/index.scss +6 -1
  31. package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
  32. package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
  33. package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
  34. package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
  35. package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
  36. package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
  37. package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
  38. package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
  39. package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
  40. package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
  41. package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
  42. package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
  43. package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
  44. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
  45. package/types/weeehaoooz-talos-ui-nav.d.ts +1 -1
  46. package/types/weeehaoooz-talos-ui.d.ts +7148 -4629
  47. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  48. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -94
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  51. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs +0 -1627
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs.map +0 -1
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  60. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  70. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  78. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  80. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  82. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  84. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  86. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  88. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  96. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  98. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  100. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  102. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  104. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  106. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  108. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  110. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  112. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  114. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  116. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  118. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -62
  120. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  122. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  124. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  125. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts +0 -272
  126. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts.map +0 -1
  127. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  128. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  129. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  130. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  131. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  132. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  133. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  134. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  135. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  136. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  138. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  139. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  140. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  141. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  142. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  143. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  144. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  145. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  146. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  147. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  148. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  149. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  150. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  151. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  152. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  153. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  154. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  155. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  156. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  157. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  158. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  159. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  160. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  161. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  162. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  163. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  164. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  165. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  166. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  167. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  168. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  169. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  170. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  171. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  172. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  173. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  174. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  175. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  176. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  177. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  178. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  179. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  180. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  181. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  182. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  183. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  184. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  185. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  186. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  187. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  188. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  189. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  190. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -1,94 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, Directive } from '@angular/core';
3
-
4
- class TalosButtonDirective {
5
- elementRef = inject(ElementRef);
6
- /** Button visual style variant */
7
- variant = input('primary', /* @ts-ignore */
8
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
9
- /** Button size variant */
10
- size = input('md', /* @ts-ignore */
11
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
12
- /** Whether button has square aspect ratio for icon-only display */
13
- iconOnly = input(false, /* @ts-ignore */
14
- ...(ngDevMode ? [{ debugName: "iconOnly" }] : /* istanbul ignore next */ []));
15
- /** Expand button to fill 100% width of parent container */
16
- fullWidth = input(false, /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
18
- /** Apply fully rounded pill shape */
19
- pill = input(false, /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "pill" }] : /* istanbul ignore next */ []));
21
- /** Show loading spinner and disable interactive events */
22
- loading = input(false, /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
24
- /** Disable button interaction */
25
- disabled = input(false, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
27
- /** Micro-interaction animation preset to apply */
28
- animation = input('none', /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
30
- /** Convenience boolean signal for spinning icon / continuous refresh state */
31
- spinning = input(false, /* @ts-ignore */
32
- ...(ngDevMode ? [{ debugName: "spinning" }] : /* istanbul ignore next */ []));
33
- /** Convenience boolean signal for pop / scale bounce feedback */
34
- popping = input(false, /* @ts-ignore */
35
- ...(ngDevMode ? [{ debugName: "popping" }] : /* istanbul ignore next */ []));
36
- /** Contextual temporary feedback state (e.g. green success pop or red error shake) */
37
- feedback = input(null, /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "feedback" }] : /* istanbul ignore next */ []));
39
- onPointerDown(event) {
40
- if (this.disabled() || this.loading())
41
- return;
42
- const pe = event;
43
- const el = this.elementRef.nativeElement;
44
- const rect = el.getBoundingClientRect();
45
- const x = pe.clientX - rect.left;
46
- const y = pe.clientY - rect.top;
47
- el.style.setProperty('--ripple-x', `${x}px`);
48
- el.style.setProperty('--ripple-y', `${y}px`);
49
- }
50
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosButtonDirective, isStandalone: true, selector: "button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, spinning: { classPropertyName: "spinning", publicName: "spinning", isSignal: true, isRequired: false, transformFunction: null }, popping: { classPropertyName: "popping", publicName: "popping", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "onPointerDown($event)" }, properties: { "class.talos-btn-primary": "variant() === \"primary\"", "class.talos-btn-secondary": "variant() === \"secondary\"", "class.talos-btn-outline": "variant() === \"outline\"", "class.talos-btn-ghost": "variant() === \"ghost\" || variant() === \"subtle\"", "class.talos-btn-danger": "variant() === \"danger\"", "class.talos-btn-success": "variant() === \"success\"", "class.talos-btn-link": "variant() === \"link\"", "class.talos-btn-xs": "size() === \"xs\"", "class.talos-btn-sm": "size() === \"sm\"", "class.talos-btn-md": "size() === \"md\"", "class.talos-btn-lg": "size() === \"lg\"", "class.talos-btn-icon": "iconOnly()", "class.talos-btn-full": "fullWidth()", "class.talos-btn-pill": "pill()", "class.is-loading": "loading()", "class.talos-anim-spin": "animation() === \"spin\" || spinning()", "class.talos-anim-spin-once": "animation() === \"spin-once\"", "class.talos-anim-pop": "animation() === \"pop\" || popping()", "class.talos-anim-shake": "animation() === \"shake\"", "class.talos-anim-pulse": "animation() === \"pulse\"", "class.talos-anim-bounce": "animation() === \"bounce\"", "class.talos-feedback-success": "feedback() === \"success\"", "class.talos-feedback-error": "feedback() === \"error\"", "attr.disabled": "(disabled() || loading()) ? true : null", "attr.aria-disabled": "(disabled() || loading()) ? \"true\" : null" }, classAttribute: "talos-btn" }, ngImport: i0 });
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonDirective, decorators: [{
54
- type: Directive,
55
- args: [{
56
- selector: 'button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]',
57
- host: {
58
- 'class': 'talos-btn',
59
- '[class.talos-btn-primary]': 'variant() === "primary"',
60
- '[class.talos-btn-secondary]': 'variant() === "secondary"',
61
- '[class.talos-btn-outline]': 'variant() === "outline"',
62
- '[class.talos-btn-ghost]': 'variant() === "ghost" || variant() === "subtle"',
63
- '[class.talos-btn-danger]': 'variant() === "danger"',
64
- '[class.talos-btn-success]': 'variant() === "success"',
65
- '[class.talos-btn-link]': 'variant() === "link"',
66
- '[class.talos-btn-xs]': 'size() === "xs"',
67
- '[class.talos-btn-sm]': 'size() === "sm"',
68
- '[class.talos-btn-md]': 'size() === "md"',
69
- '[class.talos-btn-lg]': 'size() === "lg"',
70
- '[class.talos-btn-icon]': 'iconOnly()',
71
- '[class.talos-btn-full]': 'fullWidth()',
72
- '[class.talos-btn-pill]': 'pill()',
73
- '[class.is-loading]': 'loading()',
74
- '[class.talos-anim-spin]': 'animation() === "spin" || spinning()',
75
- '[class.talos-anim-spin-once]': 'animation() === "spin-once"',
76
- '[class.talos-anim-pop]': 'animation() === "pop" || popping()',
77
- '[class.talos-anim-shake]': 'animation() === "shake"',
78
- '[class.talos-anim-pulse]': 'animation() === "pulse"',
79
- '[class.talos-anim-bounce]': 'animation() === "bounce"',
80
- '[class.talos-feedback-success]': 'feedback() === "success"',
81
- '[class.talos-feedback-error]': 'feedback() === "error"',
82
- '[attr.disabled]': '(disabled() || loading()) ? true : null',
83
- '[attr.aria-disabled]': '(disabled() || loading()) ? "true" : null',
84
- '(pointerdown)': 'onPointerDown($event)'
85
- }
86
- }]
87
- }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], pill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pill", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], spinning: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinning", required: false }] }], popping: [{ type: i0.Input, args: [{ isSignal: true, alias: "popping", required: false }] }], feedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedback", required: false }] }] } });
88
-
89
- /**
90
- * Generated bundle index. Do not edit.
91
- */
92
-
93
- export { TalosButtonDirective };
94
- //# sourceMappingURL=weeehaoooz-talos-ui-button-button.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-button-button.mjs","sources":["../../../projects/talos-ui/button/button/button.directive.ts","../../../projects/talos-ui/button/button/weeehaoooz-talos-ui-button-button.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'subtle' | 'danger' | 'success' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type ButtonAnimation = 'spin' | 'spin-once' | 'pop' | 'shake' | 'pulse' | 'bounce' | 'none';\nexport type ButtonFeedbackState = 'success' | 'error' | null;\n\n@Directive({\n selector: 'button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]',\n host: {\n 'class': 'talos-btn',\n '[class.talos-btn-primary]': 'variant() === \"primary\"',\n '[class.talos-btn-secondary]': 'variant() === \"secondary\"',\n '[class.talos-btn-outline]': 'variant() === \"outline\"',\n '[class.talos-btn-ghost]': 'variant() === \"ghost\" || variant() === \"subtle\"',\n '[class.talos-btn-danger]': 'variant() === \"danger\"',\n '[class.talos-btn-success]': 'variant() === \"success\"',\n '[class.talos-btn-link]': 'variant() === \"link\"',\n '[class.talos-btn-xs]': 'size() === \"xs\"',\n '[class.talos-btn-sm]': 'size() === \"sm\"',\n '[class.talos-btn-md]': 'size() === \"md\"',\n '[class.talos-btn-lg]': 'size() === \"lg\"',\n '[class.talos-btn-icon]': 'iconOnly()',\n '[class.talos-btn-full]': 'fullWidth()',\n '[class.talos-btn-pill]': 'pill()',\n '[class.is-loading]': 'loading()',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[attr.disabled]': '(disabled() || loading()) ? true : null',\n '[attr.aria-disabled]': '(disabled() || loading()) ? \"true\" : null',\n '(pointerdown)': 'onPointerDown($event)'\n }\n})\nexport class TalosButtonDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Button visual style variant */\n readonly variant = input<ButtonVariant>('primary');\n\n /** Button size variant */\n readonly size = input<ButtonSize>('md');\n\n /** Whether button has square aspect ratio for icon-only display */\n readonly iconOnly = input<boolean>(false);\n\n /** Expand button to fill 100% width of parent container */\n readonly fullWidth = input<boolean>(false);\n\n /** Apply fully rounded pill shape */\n readonly pill = input<boolean>(false);\n\n /** Show loading spinner and disable interactive events */\n readonly loading = input<boolean>(false);\n\n /** Disable button interaction */\n readonly disabled = input<boolean>(false);\n\n /** Micro-interaction animation preset to apply */\n readonly animation = input<ButtonAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state (e.g. green success pop or red error shake) */\n readonly feedback = input<ButtonFeedbackState>(null);\n\n onPointerDown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n const pe = event as PointerEvent;\n const el = this.elementRef.nativeElement;\n const rect = el.getBoundingClientRect();\n const x = pe.clientX - rect.left;\n const y = pe.clientY - rect.top;\n el.style.setProperty('--ripple-x', `${x}px`);\n el.style.setProperty('--ripple-y', `${y}px`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,233 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Renderer2, DestroyRef, input, computed, effect, Directive, NgModule } from '@angular/core';
3
-
4
- /**
5
- * Formats badge content taking into account max threshold clamping, dot mode, and null values.
6
- *
7
- * @param content The raw badge content (number, string, or null/undefined)
8
- * @param max The maximum numerical threshold before displaying with a '+' post-script (e.g. 99+)
9
- * @param dot Whether the badge is operating in dot indicator mode
10
- * @returns The formatted string to be rendered inside the badge
11
- */
12
- function formatBadgeContent(content, max, dot = false) {
13
- if (dot || content === null || content === undefined || content === '') {
14
- return '';
15
- }
16
- if (typeof content === 'number') {
17
- if (typeof max === 'number' && max >= 0 && content > max) {
18
- return `${max}+`;
19
- }
20
- return content.toString();
21
- }
22
- const trimmed = content.toString().trim();
23
- if (trimmed === '') {
24
- return '';
25
- }
26
- const parsedNumber = Number(trimmed);
27
- if (!isNaN(parsedNumber) && typeof max === 'number' && max >= 0) {
28
- if (parsedNumber > max) {
29
- return `${max}+`;
30
- }
31
- }
32
- return trimmed;
33
- }
34
-
35
- class TalosBadgeDirective {
36
- elementRef = inject(ElementRef);
37
- renderer = inject(Renderer2);
38
- destroyRef = inject(DestroyRef);
39
- /**
40
- * The content to display inside the badge.
41
- * Can be a number, string, or null/undefined.
42
- */
43
- content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'talosBadge' });
44
- /**
45
- * Maximum numeric value to display before appending '+'.
46
- * For example, max = 99 will display 100 as '99+'.
47
- */
48
- max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), alias: 'talosBadgeMax' });
49
- /**
50
- * Size scale of the badge.
51
- * @default 'md'
52
- */
53
- size = input('md', { ...(ngDevMode ? { debugName: "size" } : /* istanbul ignore next */ {}), alias: 'talosBadgeSize' });
54
- /**
55
- * Anchor position of the badge relative to the host element.
56
- * @default 'top-right'
57
- */
58
- position = input('top-right', { ...(ngDevMode ? { debugName: "position" } : /* istanbul ignore next */ {}), alias: 'talosBadgePosition' });
59
- /**
60
- * Visual variant/color theme of the badge.
61
- * @default 'primary'
62
- */
63
- variant = input('primary', { ...(ngDevMode ? { debugName: "variant" } : /* istanbul ignore next */ {}), alias: 'talosBadgeVariant' });
64
- /**
65
- * Shape style of the badge container.
66
- * @default 'circle'
67
- */
68
- shape = input('circle', { ...(ngDevMode ? { debugName: "shape" } : /* istanbul ignore next */ {}), alias: 'talosBadgeShape' });
69
- /**
70
- * Whether to display the badge as a small indicator dot without text content.
71
- * @default false
72
- */
73
- dot = input(false, { ...(ngDevMode ? { debugName: "dot" } : /* istanbul ignore next */ {}), alias: 'talosBadgeDot' });
74
- /**
75
- * Whether to enable an animated pulse/ripple effect for notifications.
76
- * @default false
77
- */
78
- pulse = input(false, { ...(ngDevMode ? { debugName: "pulse" } : /* istanbul ignore next */ {}), alias: 'talosBadgePulse' });
79
- /**
80
- * Whether the badge is hidden from view.
81
- * @default false
82
- */
83
- hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), alias: 'talosBadgeHidden' });
84
- /**
85
- * Whether the badge overlaps the edge of the host component.
86
- * @default true
87
- */
88
- overlap = input(true, { ...(ngDevMode ? { debugName: "overlap" } : /* istanbul ignore next */ {}), alias: 'talosBadgeOverlap' });
89
- /**
90
- * Accessible description/label for screen readers.
91
- */
92
- ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'talosBadgeAriaLabel' });
93
- /**
94
- * Computed formatted text content for the badge.
95
- */
96
- formattedContent = computed(() => {
97
- return formatBadgeContent(this.content(), this.max(), this.dot());
98
- }, /* @ts-ignore */
99
- ...(ngDevMode ? [{ debugName: "formattedContent" }] : /* istanbul ignore next */ []));
100
- /**
101
- * Whether the badge should actively render in the DOM and be visible.
102
- */
103
- shouldRender = computed(() => {
104
- if (this.hidden()) {
105
- return false;
106
- }
107
- if (this.dot()) {
108
- return true;
109
- }
110
- const c = this.content();
111
- return c !== null && c !== undefined && c !== '';
112
- }, /* @ts-ignore */
113
- ...(ngDevMode ? [{ debugName: "shouldRender" }] : /* istanbul ignore next */ []));
114
- /**
115
- * Computed host aria-label override when provided.
116
- */
117
- resolvedHostAriaLabel = computed(() => {
118
- const custom = this.ariaLabel();
119
- if (custom !== undefined && custom !== null && custom.trim().length > 0) {
120
- return custom;
121
- }
122
- return null;
123
- }, /* @ts-ignore */
124
- ...(ngDevMode ? [{ debugName: "resolvedHostAriaLabel" }] : /* istanbul ignore next */ []));
125
- badgeElement = null;
126
- constructor() {
127
- // Reactive effect to synchronize the badge DOM element whenever signal inputs change
128
- effect(() => {
129
- this.updateBadgeDom();
130
- });
131
- this.destroyRef.onDestroy(() => {
132
- this.removeBadgeDom();
133
- });
134
- }
135
- /**
136
- * Returns the native badge element for inspection or testing.
137
- */
138
- get nativeBadgeElement() {
139
- return this.badgeElement;
140
- }
141
- updateBadgeDom() {
142
- const isVisible = this.shouldRender();
143
- if (!isVisible) {
144
- if (this.badgeElement) {
145
- this.renderer.addClass(this.badgeElement, 'talos-badge--hidden');
146
- this.renderer.setStyle(this.badgeElement, 'display', 'none');
147
- }
148
- return;
149
- }
150
- if (!this.badgeElement) {
151
- this.badgeElement = this.renderer.createElement('span');
152
- this.renderer.addClass(this.badgeElement, 'talos-badge');
153
- this.renderer.setAttribute(this.badgeElement, 'aria-hidden', 'true');
154
- this.renderer.appendChild(this.elementRef.nativeElement, this.badgeElement);
155
- }
156
- const badgeEl = this.badgeElement;
157
- if (!badgeEl) {
158
- return;
159
- }
160
- // Reset visibility styles
161
- this.renderer.removeClass(badgeEl, 'talos-badge--hidden');
162
- this.renderer.removeStyle(badgeEl, 'display');
163
- // Update text content
164
- const text = this.formattedContent();
165
- this.renderer.setProperty(badgeEl, 'textContent', text);
166
- // Apply classes for size, position, variant, shape, etc.
167
- const size = this.size();
168
- const pos = this.position();
169
- const variant = this.variant();
170
- const shape = this.shape();
171
- const isDot = this.dot();
172
- const isPulse = this.pulse();
173
- const isOverlap = this.overlap();
174
- const isMultiChar = text.length > 1;
175
- // Reset base class list and re-apply active classes
176
- badgeEl.className = 'talos-badge';
177
- this.renderer.addClass(badgeEl, `talos-badge--${size}`);
178
- this.renderer.addClass(badgeEl, `talos-badge--${pos}`);
179
- this.renderer.addClass(badgeEl, `talos-badge--${variant}`);
180
- this.renderer.addClass(badgeEl, `talos-badge--${shape}`);
181
- if (isDot) {
182
- this.renderer.addClass(badgeEl, 'talos-badge--dot');
183
- }
184
- if (isPulse) {
185
- this.renderer.addClass(badgeEl, 'talos-badge--pulse');
186
- }
187
- if (isOverlap) {
188
- this.renderer.addClass(badgeEl, 'talos-badge--overlap');
189
- }
190
- if (isMultiChar && !isDot) {
191
- this.renderer.addClass(badgeEl, 'talos-badge--pill');
192
- }
193
- }
194
- removeBadgeDom() {
195
- if (this.badgeElement) {
196
- this.renderer.removeChild(this.elementRef.nativeElement, this.badgeElement);
197
- this.badgeElement = null;
198
- }
199
- }
200
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
201
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosBadgeDirective, isStandalone: true, selector: "[talosBadge], [talos-badge]", inputs: { content: { classPropertyName: "content", publicName: "talosBadge", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "talosBadgeMax", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "talosBadgeSize", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "talosBadgePosition", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "talosBadgeVariant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "talosBadgeShape", isSignal: true, isRequired: false, transformFunction: null }, dot: { classPropertyName: "dot", publicName: "talosBadgeDot", isSignal: true, isRequired: false, transformFunction: null }, pulse: { classPropertyName: "pulse", publicName: "talosBadgePulse", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "talosBadgeHidden", isSignal: true, isRequired: false, transformFunction: null }, overlap: { classPropertyName: "overlap", publicName: "talosBadgeOverlap", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "talosBadgeAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.talos-badge-host--has-badge": "shouldRender()", "attr.aria-label": "resolvedHostAriaLabel()" }, classAttribute: "talos-badge-host" }, ngImport: i0 });
202
- }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeDirective, decorators: [{
204
- type: Directive,
205
- args: [{
206
- selector: '[talosBadge], [talos-badge]',
207
- host: {
208
- 'class': 'talos-badge-host',
209
- '[class.talos-badge-host--has-badge]': 'shouldRender()',
210
- '[attr.aria-label]': 'resolvedHostAriaLabel()'
211
- }
212
- }]
213
- }], ctorParameters: () => [], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadge", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeMax", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeSize", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgePosition", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeVariant", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeShape", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeDot", required: false }] }], pulse: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgePulse", required: false }] }], hidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeHidden", required: false }] }], overlap: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeOverlap", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosBadgeAriaLabel", required: false }] }] } });
214
-
215
- class TalosBadgeModule {
216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
217
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeModule, imports: [TalosBadgeDirective], exports: [TalosBadgeDirective] });
218
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeModule });
219
- }
220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosBadgeModule, decorators: [{
221
- type: NgModule,
222
- args: [{
223
- imports: [TalosBadgeDirective],
224
- exports: [TalosBadgeDirective]
225
- }]
226
- }] });
227
-
228
- /**
229
- * Generated bundle index. Do not edit.
230
- */
231
-
232
- export { TalosBadgeDirective, TalosBadgeModule, formatBadgeContent };
233
- //# sourceMappingURL=weeehaoooz-talos-ui-data-display-badge.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-data-display-badge.mjs","sources":["../../../projects/talos-ui/data-display/badge/badge.types.ts","../../../projects/talos-ui/data-display/badge/badge.directive.ts","../../../projects/talos-ui/data-display/badge/badge.module.ts","../../../projects/talos-ui/data-display/badge/weeehaoooz-talos-ui-data-display-badge.ts"],"sourcesContent":["/**\n * Supported size scales for the badge.\n */\nexport type TalosBadgeSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * Anchor positions for placing the badge relative to its host element.\n */\nexport type TalosBadgePosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\n | 'top'\n | 'bottom'\n | 'inline';\n\n/**\n * Visual semantic variant presentation styles.\n */\nexport type TalosBadgeVariant =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'danger'\n | 'error'\n | 'info'\n | 'neutral'\n | 'subtle'\n | 'outline';\n\n/**\n * Shape styling of the badge container.\n */\nexport type TalosBadgeShape = 'circle' | 'pill' | 'square';\n\n/**\n * Formats badge content taking into account max threshold clamping, dot mode, and null values.\n *\n * @param content The raw badge content (number, string, or null/undefined)\n * @param max The maximum numerical threshold before displaying with a '+' post-script (e.g. 99+)\n * @param dot Whether the badge is operating in dot indicator mode\n * @returns The formatted string to be rendered inside the badge\n */\nexport function formatBadgeContent(\n content: string | number | null | undefined,\n max?: number | null,\n dot: boolean = false\n): string {\n if (dot || content === null || content === undefined || content === '') {\n return '';\n }\n\n if (typeof content === 'number') {\n if (typeof max === 'number' && max >= 0 && content > max) {\n return `${max}+`;\n }\n return content.toString();\n }\n\n const trimmed = content.toString().trim();\n if (trimmed === '') {\n return '';\n }\n\n const parsedNumber = Number(trimmed);\n if (!isNaN(parsedNumber) && typeof max === 'number' && max >= 0) {\n if (parsedNumber > max) {\n return `${max}+`;\n }\n }\n\n return trimmed;\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n computed,\n effect,\n inject,\n input\n} from '@angular/core';\nimport {\n TalosBadgePosition,\n TalosBadgeShape,\n TalosBadgeSize,\n TalosBadgeVariant,\n formatBadgeContent\n} from './badge.types';\n\n@Directive({\n selector: '[talosBadge], [talos-badge]',\n host: {\n 'class': 'talos-badge-host',\n '[class.talos-badge-host--has-badge]': 'shouldRender()',\n '[attr.aria-label]': 'resolvedHostAriaLabel()'\n }\n})\nexport class TalosBadgeDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The content to display inside the badge.\n * Can be a number, string, or null/undefined.\n */\n readonly content = input<string | number | null | undefined>(null, {\n alias: 'talosBadge'\n });\n\n /**\n * Maximum numeric value to display before appending '+'.\n * For example, max = 99 will display 100 as '99+'.\n */\n readonly max = input<number | null | undefined>(undefined, {\n alias: 'talosBadgeMax'\n });\n\n /**\n * Size scale of the badge.\n * @default 'md'\n */\n readonly size = input<TalosBadgeSize>('md', {\n alias: 'talosBadgeSize'\n });\n\n /**\n * Anchor position of the badge relative to the host element.\n * @default 'top-right'\n */\n readonly position = input<TalosBadgePosition>('top-right', {\n alias: 'talosBadgePosition'\n });\n\n /**\n * Visual variant/color theme of the badge.\n * @default 'primary'\n */\n readonly variant = input<TalosBadgeVariant>('primary', {\n alias: 'talosBadgeVariant'\n });\n\n /**\n * Shape style of the badge container.\n * @default 'circle'\n */\n readonly shape = input<TalosBadgeShape>('circle', {\n alias: 'talosBadgeShape'\n });\n\n /**\n * Whether to display the badge as a small indicator dot without text content.\n * @default false\n */\n readonly dot = input<boolean>(false, {\n alias: 'talosBadgeDot'\n });\n\n /**\n * Whether to enable an animated pulse/ripple effect for notifications.\n * @default false\n */\n readonly pulse = input<boolean>(false, {\n alias: 'talosBadgePulse'\n });\n\n /**\n * Whether the badge is hidden from view.\n * @default false\n */\n readonly hidden = input<boolean>(false, {\n alias: 'talosBadgeHidden'\n });\n\n /**\n * Whether the badge overlaps the edge of the host component.\n * @default true\n */\n readonly overlap = input<boolean>(true, {\n alias: 'talosBadgeOverlap'\n });\n\n /**\n * Accessible description/label for screen readers.\n */\n readonly ariaLabel = input<string | null | undefined>(undefined, {\n alias: 'talosBadgeAriaLabel'\n });\n\n /**\n * Computed formatted text content for the badge.\n */\n readonly formattedContent = computed<string>(() => {\n return formatBadgeContent(this.content(), this.max(), this.dot());\n });\n\n /**\n * Whether the badge should actively render in the DOM and be visible.\n */\n readonly shouldRender = computed<boolean>(() => {\n if (this.hidden()) {\n return false;\n }\n if (this.dot()) {\n return true;\n }\n const c = this.content();\n return c !== null && c !== undefined && c !== '';\n });\n\n /**\n * Computed host aria-label override when provided.\n */\n readonly resolvedHostAriaLabel = computed<string | null>(() => {\n const custom = this.ariaLabel();\n if (custom !== undefined && custom !== null && custom.trim().length > 0) {\n return custom;\n }\n return null;\n });\n\n private badgeElement: HTMLElement | null = null;\n\n constructor() {\n // Reactive effect to synchronize the badge DOM element whenever signal inputs change\n effect(() => {\n this.updateBadgeDom();\n });\n\n this.destroyRef.onDestroy(() => {\n this.removeBadgeDom();\n });\n }\n\n /**\n * Returns the native badge element for inspection or testing.\n */\n get nativeBadgeElement(): HTMLElement | null {\n return this.badgeElement;\n }\n\n private updateBadgeDom(): void {\n const isVisible = this.shouldRender();\n\n if (!isVisible) {\n if (this.badgeElement) {\n this.renderer.addClass(this.badgeElement, 'talos-badge--hidden');\n this.renderer.setStyle(this.badgeElement, 'display', 'none');\n }\n return;\n }\n\n if (!this.badgeElement) {\n this.badgeElement = this.renderer.createElement('span');\n this.renderer.addClass(this.badgeElement, 'talos-badge');\n this.renderer.setAttribute(this.badgeElement, 'aria-hidden', 'true');\n this.renderer.appendChild(this.elementRef.nativeElement, this.badgeElement);\n }\n\n const badgeEl = this.badgeElement;\n if (!badgeEl) {\n return;\n }\n\n // Reset visibility styles\n this.renderer.removeClass(badgeEl, 'talos-badge--hidden');\n this.renderer.removeStyle(badgeEl, 'display');\n\n // Update text content\n const text = this.formattedContent();\n this.renderer.setProperty(badgeEl, 'textContent', text);\n\n // Apply classes for size, position, variant, shape, etc.\n const size = this.size();\n const pos = this.position();\n const variant = this.variant();\n const shape = this.shape();\n const isDot = this.dot();\n const isPulse = this.pulse();\n const isOverlap = this.overlap();\n const isMultiChar = text.length > 1;\n\n // Reset base class list and re-apply active classes\n badgeEl.className = 'talos-badge';\n this.renderer.addClass(badgeEl, `talos-badge--${size}`);\n this.renderer.addClass(badgeEl, `talos-badge--${pos}`);\n this.renderer.addClass(badgeEl, `talos-badge--${variant}`);\n this.renderer.addClass(badgeEl, `talos-badge--${shape}`);\n\n if (isDot) {\n this.renderer.addClass(badgeEl, 'talos-badge--dot');\n }\n if (isPulse) {\n this.renderer.addClass(badgeEl, 'talos-badge--pulse');\n }\n if (isOverlap) {\n this.renderer.addClass(badgeEl, 'talos-badge--overlap');\n }\n if (isMultiChar && !isDot) {\n this.renderer.addClass(badgeEl, 'talos-badge--pill');\n }\n }\n\n private removeBadgeDom(): void {\n if (this.badgeElement) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.badgeElement);\n this.badgeElement = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosBadgeDirective } from './badge.directive';\n\n@NgModule({\n imports: [TalosBadgeDirective],\n exports: [TalosBadgeDirective]\n})\nexport class TalosBadgeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}