@weeehaoooz/talos-ui 0.1.0 → 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 (187) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
  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 +1320 -11
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -135
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +156 -7
  23. package/styles/_buttons.scss +156 -8
  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 +37 -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 +36 -10
  46. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  47. package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
  48. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
  51. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  60. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  70. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  78. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  80. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  82. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  84. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  86. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  88. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  96. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  98. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  100. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  102. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  104. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  106. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  108. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  110. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  112. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  114. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  116. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  118. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  120. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  122. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  124. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  125. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  126. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  127. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  128. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  129. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  130. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  131. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  132. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  133. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  134. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  135. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  136. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  138. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  139. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  140. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  141. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  142. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  143. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  144. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  145. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  146. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  147. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  148. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  149. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  150. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  151. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  152. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  153. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  154. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  155. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  156. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  157. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  158. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  159. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  160. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  161. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  162. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  163. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  164. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  165. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  166. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  167. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  168. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  169. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  170. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  171. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  172. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  173. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  174. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  175. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  176. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  177. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  178. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  179. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  180. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  181. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  182. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  183. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  184. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  185. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  186. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  187. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -1,93 +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-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-sm]': 'size() === "sm"',
67
- '[class.talos-btn-md]': 'size() === "md"',
68
- '[class.talos-btn-lg]': 'size() === "lg"',
69
- '[class.talos-btn-icon]': 'iconOnly()',
70
- '[class.talos-btn-full]': 'fullWidth()',
71
- '[class.talos-btn-pill]': 'pill()',
72
- '[class.is-loading]': 'loading()',
73
- '[class.talos-anim-spin]': 'animation() === "spin" || spinning()',
74
- '[class.talos-anim-spin-once]': 'animation() === "spin-once"',
75
- '[class.talos-anim-pop]': 'animation() === "pop" || popping()',
76
- '[class.talos-anim-shake]': 'animation() === "shake"',
77
- '[class.talos-anim-pulse]': 'animation() === "pulse"',
78
- '[class.talos-anim-bounce]': 'animation() === "bounce"',
79
- '[class.talos-feedback-success]': 'feedback() === "success"',
80
- '[class.talos-feedback-error]': 'feedback() === "error"',
81
- '[attr.disabled]': '(disabled() || loading()) ? true : null',
82
- '[attr.aria-disabled]': '(disabled() || loading()) ? "true" : null',
83
- '(pointerdown)': 'onPointerDown($event)'
84
- }
85
- }]
86
- }], 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 }] }] } });
87
-
88
- /**
89
- * Generated bundle index. Do not edit.
90
- */
91
-
92
- export { TalosButtonDirective };
93
- //# 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 = '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-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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"}