@weeehaoooz/talos-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +237 -0
  4. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -0
  5. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +93 -0
  6. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-core.mjs +438 -0
  8. package/fesm2022/weeehaoooz-talos-ui-core.mjs.map +1 -0
  9. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +233 -0
  10. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +1 -0
  11. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +361 -0
  12. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +1 -0
  13. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +312 -0
  14. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +1 -0
  15. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +235 -0
  16. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +1 -0
  17. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +462 -0
  18. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +1 -0
  19. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +805 -0
  20. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +1 -0
  21. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +267 -0
  22. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +1 -0
  23. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +351 -0
  24. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +1 -0
  25. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +566 -0
  26. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +1 -0
  27. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +534 -0
  28. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +1 -0
  29. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +446 -0
  30. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +1 -0
  31. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +376 -0
  32. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +1 -0
  33. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +147 -0
  34. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +1 -0
  35. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +242 -0
  36. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +1 -0
  37. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +514 -0
  38. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +1 -0
  39. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +548 -0
  40. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +1 -0
  41. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +692 -0
  42. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +1 -0
  43. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +761 -0
  44. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +1 -0
  45. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +896 -0
  46. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +1 -0
  47. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +872 -0
  48. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +1 -0
  49. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +119 -0
  50. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +1 -0
  51. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +135 -0
  52. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +1 -0
  53. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +666 -0
  54. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +1 -0
  55. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +147 -0
  56. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +1 -0
  57. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +33 -0
  58. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +1 -0
  59. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +455 -0
  60. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +1 -0
  61. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +379 -0
  62. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +1 -0
  63. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +297 -0
  64. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +1 -0
  65. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +661 -0
  66. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -0
  67. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +346 -0
  68. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -0
  69. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +896 -0
  70. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +1 -0
  71. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +252 -0
  72. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +1 -0
  73. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +916 -0
  74. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +1 -0
  75. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +851 -0
  76. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -0
  77. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +897 -0
  78. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -0
  79. package/fesm2022/weeehaoooz-talos-ui.mjs +17058 -0
  80. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -0
  81. package/package.json +203 -0
  82. package/schematics/collection.json +10 -0
  83. package/schematics/ng-add/index.d.ts +3 -0
  84. package/schematics/ng-add/index.js +99 -0
  85. package/schematics/ng-add/schema.d.ts +10 -0
  86. package/schematics/ng-add/schema.js +2 -0
  87. package/schematics/ng-add/schema.json +52 -0
  88. package/styles/_alert.scss +56 -0
  89. package/styles/_badge.scss +279 -0
  90. package/styles/_button-group.scss +470 -0
  91. package/styles/_buttons.scss +442 -0
  92. package/styles/_card.scss +18 -0
  93. package/styles/_dialog.scss +116 -0
  94. package/styles/_drop-zone.scss +19 -0
  95. package/styles/_form-controls.scss +660 -0
  96. package/styles/_slide-toggle.scss +171 -0
  97. package/styles/_status-tag.scss +108 -0
  98. package/styles/_timeline.scss +19 -0
  99. package/styles/_tooltip.scss +32 -0
  100. package/styles/_typography.scss +279 -0
  101. package/styles/_variables.scss +590 -0
  102. package/styles/index.scss +15 -0
  103. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +59 -0
  104. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -0
  105. package/types/weeehaoooz-talos-ui-button-button.d.ts +38 -0
  106. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -0
  107. package/types/weeehaoooz-talos-ui-core.d.ts +95 -0
  108. package/types/weeehaoooz-talos-ui-core.d.ts.map +1 -0
  109. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +119 -0
  110. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +1 -0
  111. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +135 -0
  112. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +1 -0
  113. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +144 -0
  114. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +1 -0
  115. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +83 -0
  116. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +1 -0
  117. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +255 -0
  118. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +1 -0
  119. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +204 -0
  120. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +1 -0
  121. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +101 -0
  122. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +1 -0
  123. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +138 -0
  124. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +1 -0
  125. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +161 -0
  126. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +1 -0
  127. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +212 -0
  128. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +1 -0
  129. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +259 -0
  130. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +1 -0
  131. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +147 -0
  132. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +1 -0
  133. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +32 -0
  134. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +1 -0
  135. package/types/weeehaoooz-talos-ui-form-affix.d.ts +88 -0
  136. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +1 -0
  137. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +113 -0
  138. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +1 -0
  139. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +165 -0
  140. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +1 -0
  141. package/types/weeehaoooz-talos-ui-form-chips.d.ts +152 -0
  142. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +1 -0
  143. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +144 -0
  144. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +1 -0
  145. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +138 -0
  146. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +1 -0
  147. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +148 -0
  148. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +1 -0
  149. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +44 -0
  150. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +1 -0
  151. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +48 -0
  152. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +1 -0
  153. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +227 -0
  154. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +1 -0
  155. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +42 -0
  156. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +1 -0
  157. package/types/weeehaoooz-talos-ui-form-input.d.ts +15 -0
  158. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +1 -0
  159. package/types/weeehaoooz-talos-ui-form-otp.d.ts +111 -0
  160. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +1 -0
  161. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +145 -0
  162. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +1 -0
  163. package/types/weeehaoooz-talos-ui-form-radio.d.ts +84 -0
  164. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +1 -0
  165. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +181 -0
  166. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +1 -0
  167. package/types/weeehaoooz-talos-ui-form-rating.d.ts +110 -0
  168. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +1 -0
  169. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +195 -0
  170. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +1 -0
  171. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +79 -0
  172. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +1 -0
  173. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +192 -0
  174. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +1 -0
  175. package/types/weeehaoooz-talos-ui-layout.d.ts +286 -0
  176. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -0
  177. package/types/weeehaoooz-talos-ui-nav.d.ts +384 -0
  178. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -0
  179. package/types/weeehaoooz-talos-ui.d.ts +5050 -0
  180. package/types/weeehaoooz-talos-ui.d.ts.map +1 -0
@@ -0,0 +1,235 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Component, NgModule } from '@angular/core';
3
+
4
+ /**
5
+ * Types and interfaces for TalosTrendIndicatorComponent
6
+ */
7
+
8
+ class TalosTrendIndicatorComponent {
9
+ /** Explicit value to display (e.g. 14.2, -5.3, "+12%") */
10
+ value = input(null, /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
12
+ /** Current value for automatic delta calculation */
13
+ current = input(null, /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
15
+ /** Previous value for automatic delta calculation */
16
+ previous = input(null, /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "previous" }] : /* istanbul ignore next */ []));
18
+ /** Explicit direction override or 'auto' */
19
+ direction = input('auto', /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
21
+ /** Explicit status override or 'auto' */
22
+ status = input('auto', /* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
24
+ /** Polarity: normal (+ is good), inverse (+ is bad), neutral */
25
+ polarity = input('normal', /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "polarity" }] : /* istanbul ignore next */ []));
27
+ /** Visual variant */
28
+ variant = input('badge', /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
30
+ /** Layout orientation: horizontal or vertical */
31
+ layout = input('horizontal', /* @ts-ignore */
32
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
33
+ /** Icon shape / style */
34
+ iconType = input('arrow-diagonal', /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "iconType" }] : /* istanbul ignore next */ []));
36
+ /** Size preset */
37
+ size = input('md', /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
39
+ /** Value formatting mode */
40
+ format = input('percentage', /* @ts-ignore */
41
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
42
+ /** Prefix string before number */
43
+ prefix = input('', /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []));
45
+ /** Suffix string after number (e.g. '%', 'pts') */
46
+ suffix = input('', /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "suffix" }] : /* istanbul ignore next */ []));
48
+ /** Number of decimal places */
49
+ decimals = input(1, /* @ts-ignore */
50
+ ...(ngDevMode ? [{ debugName: "decimals" }] : /* istanbul ignore next */ []));
51
+ /** Whether to show '+' / '-' sign */
52
+ showSign = input(true, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "showSign" }] : /* istanbul ignore next */ []));
54
+ /** Whether to show arrow icon */
55
+ showIcon = input(true, /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "showIcon" }] : /* istanbul ignore next */ []));
57
+ /** Show only the icon without text */
58
+ iconOnly = input(false, /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "iconOnly" }] : /* istanbul ignore next */ []));
60
+ /** Secondary comparison label (e.g. 'vs last month') */
61
+ label = input('', /* @ts-ignore */
62
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
63
+ /** Currency symbol when format is 'currency' */
64
+ currencySymbol = input('$', /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "currencySymbol" }] : /* istanbul ignore next */ []));
66
+ /** Custom formatter function */
67
+ valueFormatter = input(null, /* @ts-ignore */
68
+ ...(ngDevMode ? [{ debugName: "valueFormatter" }] : /* istanbul ignore next */ []));
69
+ /** Accessible label */
70
+ ariaLabel = input(null, /* @ts-ignore */
71
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
72
+ /** Calculation result */
73
+ calculation = computed(() => {
74
+ const cur = this.current();
75
+ const prev = this.previous();
76
+ const val = this.value();
77
+ const dec = this.decimals();
78
+ let delta = 0;
79
+ let deltaPct = 0;
80
+ let dir = 'flat';
81
+ if (cur !== null && prev !== null) {
82
+ delta = cur - prev;
83
+ deltaPct = prev !== 0 ? ((cur - prev) / Math.abs(prev)) * 100 : cur > 0 ? 100 : cur < 0 ? -100 : 0;
84
+ if (delta > 0.0001)
85
+ dir = 'up';
86
+ else if (delta < -0.0001)
87
+ dir = 'down';
88
+ else
89
+ dir = 'flat';
90
+ }
91
+ else if (typeof val === 'number') {
92
+ delta = val;
93
+ deltaPct = val;
94
+ if (val > 0.0001)
95
+ dir = 'up';
96
+ else if (val < -0.0001)
97
+ dir = 'down';
98
+ else
99
+ dir = 'flat';
100
+ }
101
+ else if (typeof val === 'string') {
102
+ const parsed = parseFloat(val.replace(/[^0-9.-]/g, ''));
103
+ delta = isNaN(parsed) ? 0 : parsed;
104
+ deltaPct = delta;
105
+ if (val.includes('+') || delta > 0.0001)
106
+ dir = 'up';
107
+ else if (val.includes('-') || delta < -0.0001)
108
+ dir = 'down';
109
+ else
110
+ dir = 'flat';
111
+ }
112
+ // Force direction override if specified
113
+ const explicitDir = this.direction();
114
+ if (explicitDir !== 'auto') {
115
+ dir = explicitDir;
116
+ }
117
+ // Determine status (positive / negative / neutral) based on polarity or explicit override
118
+ const explicitStatus = this.status();
119
+ let calculatedStatus = 'neutral';
120
+ if (explicitStatus !== 'auto') {
121
+ calculatedStatus = explicitStatus;
122
+ }
123
+ else {
124
+ const pol = this.polarity();
125
+ if (pol === 'neutral' || dir === 'flat') {
126
+ calculatedStatus = 'neutral';
127
+ }
128
+ else if (pol === 'normal') {
129
+ calculatedStatus = dir === 'up' ? 'positive' : 'negative';
130
+ }
131
+ else if (pol === 'inverse') {
132
+ calculatedStatus = dir === 'up' ? 'negative' : 'positive';
133
+ }
134
+ }
135
+ // Format text
136
+ let formattedText = '';
137
+ const customFmt = this.valueFormatter();
138
+ if (customFmt) {
139
+ formattedText = customFmt({ delta, deltaPercentage: deltaPct, direction: dir, status: calculatedStatus, formattedText: '' });
140
+ }
141
+ else if (typeof val === 'string' && cur === null) {
142
+ formattedText = val;
143
+ }
144
+ else {
145
+ const sign = this.showSign() ? (dir === 'up' ? '+' : dir === 'down' ? '-' : '') : '';
146
+ const absDelta = Math.abs(delta);
147
+ const absPct = Math.abs(deltaPct);
148
+ const pfx = this.prefix();
149
+ const sfx = this.suffix();
150
+ switch (this.format()) {
151
+ case 'percentage':
152
+ formattedText = `${sign}${pfx}${absPct.toFixed(dec)}%${sfx}`;
153
+ break;
154
+ case 'currency':
155
+ formattedText = `${sign}${this.currencySymbol()}${pfx}${absDelta.toFixed(dec)}${sfx}`;
156
+ break;
157
+ case 'points':
158
+ formattedText = `${sign}${pfx}${absDelta.toFixed(dec)} pts${sfx}`;
159
+ break;
160
+ case 'number':
161
+ default:
162
+ formattedText = `${sign}${pfx}${absDelta.toFixed(dec)}${sfx}`;
163
+ break;
164
+ }
165
+ }
166
+ return {
167
+ delta,
168
+ deltaPercentage: deltaPct,
169
+ direction: dir,
170
+ status: calculatedStatus,
171
+ formattedText
172
+ };
173
+ }, /* @ts-ignore */
174
+ ...(ngDevMode ? [{ debugName: "calculation" }] : /* istanbul ignore next */ []));
175
+ computedStatus = computed(() => this.calculation().status, /* @ts-ignore */
176
+ ...(ngDevMode ? [{ debugName: "computedStatus" }] : /* istanbul ignore next */ []));
177
+ computedDirection = computed(() => this.calculation().direction, /* @ts-ignore */
178
+ ...(ngDevMode ? [{ debugName: "computedDirection" }] : /* istanbul ignore next */ []));
179
+ displayValue = computed(() => this.calculation().formattedText, /* @ts-ignore */
180
+ ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
181
+ computedAriaLabel = computed(() => {
182
+ const custom = this.ariaLabel();
183
+ if (custom)
184
+ return custom;
185
+ const calc = this.calculation();
186
+ const dirWord = calc.direction === 'up' ? 'Increased by' : calc.direction === 'down' ? 'Decreased by' : 'No change';
187
+ const labelText = this.label() ? ` (${this.label()})` : '';
188
+ return `Trend: ${dirWord} ${calc.formattedText}${labelText}`;
189
+ }, /* @ts-ignore */
190
+ ...(ngDevMode ? [{ debugName: "computedAriaLabel" }] : /* istanbul ignore next */ []));
191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosTrendIndicatorComponent, isStandalone: true, selector: "talos-trend-indicator", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, previous: { classPropertyName: "previous", publicName: "previous", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, polarity: { classPropertyName: "polarity", publicName: "polarity", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, iconType: { classPropertyName: "iconType", publicName: "iconType", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, showSign: { classPropertyName: "showSign", publicName: "showSign", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, currencySymbol: { classPropertyName: "currencySymbol", publicName: "currencySymbol", isSignal: true, isRequired: false, transformFunction: null }, valueFormatter: { classPropertyName: "valueFormatter", publicName: "valueFormatter", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.talos-trend-badge": "variant() === \"badge\"", "class.talos-trend-subtle": "variant() === \"subtle\"", "class.talos-trend-text": "variant() === \"text\"", "class.talos-trend-bordered": "variant() === \"bordered\"", "class.talos-trend-solid": "variant() === \"solid\"", "class.talos-trend-horizontal": "layout() === \"horizontal\"", "class.talos-trend-vertical": "layout() === \"vertical\"", "class.talos-trend-positive": "computedStatus() === \"positive\"", "class.talos-trend-negative": "computedStatus() === \"negative\"", "class.talos-trend-neutral": "computedStatus() === \"neutral\"", "class.talos-trend-xs": "size() === \"xs\"", "class.talos-trend-sm": "size() === \"sm\"", "class.talos-trend-md": "size() === \"md\"", "class.talos-trend-lg": "size() === \"lg\"", "attr.role": "\"status\"", "attr.aria-label": "computedAriaLabel()" }, classAttribute: "talos-trend-indicator" }, ngImport: i0, template: "<span class=\"talos-trend-main\">\n @if (showIcon()) {\n <span class=\"talos-trend-icon-wrapper\" aria-hidden=\"true\">\n @switch (iconType()) {\n @case ('arrow-vertical') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 12.5V3.5M8 3.5L4.5 7M8 3.5L11.5 7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 3.5V12.5M8 12.5L4.5 9M8 12.5L11.5 9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('chevron') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 10L8 5.5L12.5 10\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 6L8 10.5L12.5 6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('triangle') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 4.5L13 12H3L8 4.5Z\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 11.5L3 4H13L8 11.5Z\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <rect x=\"3.5\" y=\"7\" width=\"9\" height=\"2\" rx=\"1\"/>\n </svg>\n }\n }\n @default {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 11.5L11.5 4M11.5 4H6M11.5 4V9.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 4.5L11.5 12M11.5 12H6M11.5 12V6.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n }\n </span>\n }\n\n @if (!iconOnly()) {\n <span class=\"talos-trend-value\">{{ displayValue() }}</span>\n }\n</span>\n\n@if (label()) {\n <span class=\"talos-trend-label\">{{ label() }}</span>\n}\n\n", styles: [":host{display:inline-flex;vertical-align:middle;box-sizing:border-box;font-family:inherit;font-weight:600;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;--_trend-color: #64748b;--_trend-bg: #f1f5f9;--_trend-border: #e2e8f0;--_trend-solid-bg: #64748b;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .1)}:host.talos-trend-positive{--_trend-color: #15803d;--_trend-bg: #dcfce7;--_trend-border: #bbf7d0;--_trend-solid-bg: #16a34a;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(22, 163, 74, .12)}:host.talos-trend-negative{--_trend-color: #b91c1c;--_trend-bg: #fee2e2;--_trend-border: #fecaca;--_trend-solid-bg: #dc2626;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(220, 38, 38, .12)}:host.talos-trend-neutral{--_trend-color: #475569;--_trend-bg: #f1f5f9;--_trend-border: #e2e8f0;--_trend-solid-bg: #64748b;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .1)}:host.talos-trend-horizontal{flex-direction:row;align-items:center;gap:.25rem}:host.talos-trend-horizontal .talos-trend-label{font-weight:400;opacity:.8;margin-left:.125rem}:host.talos-trend-vertical{flex-direction:column;align-items:flex-start;gap:.125rem}:host.talos-trend-vertical .talos-trend-label{font-weight:400;opacity:.75;font-size:.85em}:host .talos-trend-main{display:inline-flex;align-items:center;gap:.25rem;line-height:1}:host .talos-trend-icon-wrapper{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}:host .talos-trend-icon{display:block;width:.875rem;height:.875rem;flex-shrink:0}:host .talos-trend-icon--fill{fill:currentColor}:host .talos-trend-value{letter-spacing:-.01em}:host.talos-trend-xs{font-size:.6875rem}:host.talos-trend-xs .talos-trend-icon{width:.625rem;height:.625rem}:host.talos-trend-xs.talos-trend-badge,:host.talos-trend-xs.talos-trend-subtle,:host.talos-trend-xs.talos-trend-bordered,:host.talos-trend-xs.talos-trend-solid{padding:.125rem .375rem;border-radius:9999px}:host.talos-trend-sm{font-size:.75rem}:host.talos-trend-sm .talos-trend-icon{width:.75rem;height:.75rem}:host.talos-trend-sm.talos-trend-badge,:host.talos-trend-sm.talos-trend-subtle,:host.talos-trend-sm.talos-trend-bordered,:host.talos-trend-sm.talos-trend-solid{padding:.1875rem .5rem;border-radius:9999px}:host.talos-trend-md{font-size:.8125rem}:host.talos-trend-md .talos-trend-icon{width:.875rem;height:.875rem}:host.talos-trend-md.talos-trend-badge,:host.talos-trend-md.talos-trend-subtle,:host.talos-trend-md.talos-trend-bordered,:host.talos-trend-md.talos-trend-solid{padding:.25rem .625rem;border-radius:9999px}:host.talos-trend-lg{font-size:.9375rem}:host.talos-trend-lg .talos-trend-icon{width:1rem;height:1rem}:host.talos-trend-lg.talos-trend-badge,:host.talos-trend-lg.talos-trend-subtle,:host.talos-trend-lg.talos-trend-bordered,:host.talos-trend-lg.talos-trend-solid{padding:.3125rem .75rem;border-radius:9999px}:host.talos-trend-badge{background-color:var(--_trend-bg);color:var(--_trend-color)}:host.talos-trend-subtle{background-color:var(--_trend-subtle-bg);color:var(--_trend-color)}:host.talos-trend-bordered{background-color:var(--_trend-bg);border:1px solid var(--_trend-border);color:var(--_trend-color)}:host.talos-trend-solid{background-color:var(--_trend-solid-bg);color:var(--_trend-solid-text);box-shadow:0 1px 2px #00000014}:host.talos-trend-text{padding:0;background:transparent;color:var(--_trend-color)}:root[data-theme=dark] :host.talos-trend-positive,:root.dark :host.talos-trend-positive,[data-theme=dark] :host.talos-trend-positive,[data-mode=dark] :host.talos-trend-positive,.dark :host.talos-trend-positive,.dark-theme :host.talos-trend-positive{--_trend-color: #4ade80;--_trend-bg: rgba(34, 197, 94, .18);--_trend-border: rgba(74, 222, 128, .3);--_trend-solid-bg: #16a34a;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(34, 197, 94, .12)}:root[data-theme=dark] :host.talos-trend-negative,:root.dark :host.talos-trend-negative,[data-theme=dark] :host.talos-trend-negative,[data-mode=dark] :host.talos-trend-negative,.dark :host.talos-trend-negative,.dark-theme :host.talos-trend-negative{--_trend-color: #f87171;--_trend-bg: rgba(239, 68, 68, .18);--_trend-border: rgba(248, 113, 113, .3);--_trend-solid-bg: #dc2626;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(239, 68, 68, .12)}:root[data-theme=dark] :host.talos-trend-neutral,:root.dark :host.talos-trend-neutral,[data-theme=dark] :host.talos-trend-neutral,[data-mode=dark] :host.talos-trend-neutral,.dark :host.talos-trend-neutral,.dark-theme :host.talos-trend-neutral{--_trend-color: #94a3b8;--_trend-bg: rgba(100, 116, 139, .18);--_trend-border: rgba(148, 163, 184, .25);--_trend-solid-bg: #475569;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .12)}\n"] });
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorComponent, decorators: [{
195
+ type: Component,
196
+ args: [{ selector: 'talos-trend-indicator', host: {
197
+ 'class': 'talos-trend-indicator',
198
+ '[class.talos-trend-badge]': 'variant() === "badge"',
199
+ '[class.talos-trend-subtle]': 'variant() === "subtle"',
200
+ '[class.talos-trend-text]': 'variant() === "text"',
201
+ '[class.talos-trend-bordered]': 'variant() === "bordered"',
202
+ '[class.talos-trend-solid]': 'variant() === "solid"',
203
+ '[class.talos-trend-horizontal]': 'layout() === "horizontal"',
204
+ '[class.talos-trend-vertical]': 'layout() === "vertical"',
205
+ '[class.talos-trend-positive]': 'computedStatus() === "positive"',
206
+ '[class.talos-trend-negative]': 'computedStatus() === "negative"',
207
+ '[class.talos-trend-neutral]': 'computedStatus() === "neutral"',
208
+ '[class.talos-trend-xs]': 'size() === "xs"',
209
+ '[class.talos-trend-sm]': 'size() === "sm"',
210
+ '[class.talos-trend-md]': 'size() === "md"',
211
+ '[class.talos-trend-lg]': 'size() === "lg"',
212
+ '[attr.role]': '"status"',
213
+ '[attr.aria-label]': 'computedAriaLabel()'
214
+ }, template: "<span class=\"talos-trend-main\">\n @if (showIcon()) {\n <span class=\"talos-trend-icon-wrapper\" aria-hidden=\"true\">\n @switch (iconType()) {\n @case ('arrow-vertical') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 12.5V3.5M8 3.5L4.5 7M8 3.5L11.5 7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 3.5V12.5M8 12.5L4.5 9M8 12.5L11.5 9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('chevron') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 10L8 5.5L12.5 10\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 6L8 10.5L12.5 6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('triangle') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 4.5L13 12H3L8 4.5Z\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 11.5L3 4H13L8 11.5Z\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <rect x=\"3.5\" y=\"7\" width=\"9\" height=\"2\" rx=\"1\"/>\n </svg>\n }\n }\n @default {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 11.5L11.5 4M11.5 4H6M11.5 4V9.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 4.5L11.5 12M11.5 12H6M11.5 12V6.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n }\n </span>\n }\n\n @if (!iconOnly()) {\n <span class=\"talos-trend-value\">{{ displayValue() }}</span>\n }\n</span>\n\n@if (label()) {\n <span class=\"talos-trend-label\">{{ label() }}</span>\n}\n\n", styles: [":host{display:inline-flex;vertical-align:middle;box-sizing:border-box;font-family:inherit;font-weight:600;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;--_trend-color: #64748b;--_trend-bg: #f1f5f9;--_trend-border: #e2e8f0;--_trend-solid-bg: #64748b;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .1)}:host.talos-trend-positive{--_trend-color: #15803d;--_trend-bg: #dcfce7;--_trend-border: #bbf7d0;--_trend-solid-bg: #16a34a;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(22, 163, 74, .12)}:host.talos-trend-negative{--_trend-color: #b91c1c;--_trend-bg: #fee2e2;--_trend-border: #fecaca;--_trend-solid-bg: #dc2626;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(220, 38, 38, .12)}:host.talos-trend-neutral{--_trend-color: #475569;--_trend-bg: #f1f5f9;--_trend-border: #e2e8f0;--_trend-solid-bg: #64748b;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .1)}:host.talos-trend-horizontal{flex-direction:row;align-items:center;gap:.25rem}:host.talos-trend-horizontal .talos-trend-label{font-weight:400;opacity:.8;margin-left:.125rem}:host.talos-trend-vertical{flex-direction:column;align-items:flex-start;gap:.125rem}:host.talos-trend-vertical .talos-trend-label{font-weight:400;opacity:.75;font-size:.85em}:host .talos-trend-main{display:inline-flex;align-items:center;gap:.25rem;line-height:1}:host .talos-trend-icon-wrapper{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}:host .talos-trend-icon{display:block;width:.875rem;height:.875rem;flex-shrink:0}:host .talos-trend-icon--fill{fill:currentColor}:host .talos-trend-value{letter-spacing:-.01em}:host.talos-trend-xs{font-size:.6875rem}:host.talos-trend-xs .talos-trend-icon{width:.625rem;height:.625rem}:host.talos-trend-xs.talos-trend-badge,:host.talos-trend-xs.talos-trend-subtle,:host.talos-trend-xs.talos-trend-bordered,:host.talos-trend-xs.talos-trend-solid{padding:.125rem .375rem;border-radius:9999px}:host.talos-trend-sm{font-size:.75rem}:host.talos-trend-sm .talos-trend-icon{width:.75rem;height:.75rem}:host.talos-trend-sm.talos-trend-badge,:host.talos-trend-sm.talos-trend-subtle,:host.talos-trend-sm.talos-trend-bordered,:host.talos-trend-sm.talos-trend-solid{padding:.1875rem .5rem;border-radius:9999px}:host.talos-trend-md{font-size:.8125rem}:host.talos-trend-md .talos-trend-icon{width:.875rem;height:.875rem}:host.talos-trend-md.talos-trend-badge,:host.talos-trend-md.talos-trend-subtle,:host.talos-trend-md.talos-trend-bordered,:host.talos-trend-md.talos-trend-solid{padding:.25rem .625rem;border-radius:9999px}:host.talos-trend-lg{font-size:.9375rem}:host.talos-trend-lg .talos-trend-icon{width:1rem;height:1rem}:host.talos-trend-lg.talos-trend-badge,:host.talos-trend-lg.talos-trend-subtle,:host.talos-trend-lg.talos-trend-bordered,:host.talos-trend-lg.talos-trend-solid{padding:.3125rem .75rem;border-radius:9999px}:host.talos-trend-badge{background-color:var(--_trend-bg);color:var(--_trend-color)}:host.talos-trend-subtle{background-color:var(--_trend-subtle-bg);color:var(--_trend-color)}:host.talos-trend-bordered{background-color:var(--_trend-bg);border:1px solid var(--_trend-border);color:var(--_trend-color)}:host.talos-trend-solid{background-color:var(--_trend-solid-bg);color:var(--_trend-solid-text);box-shadow:0 1px 2px #00000014}:host.talos-trend-text{padding:0;background:transparent;color:var(--_trend-color)}:root[data-theme=dark] :host.talos-trend-positive,:root.dark :host.talos-trend-positive,[data-theme=dark] :host.talos-trend-positive,[data-mode=dark] :host.talos-trend-positive,.dark :host.talos-trend-positive,.dark-theme :host.talos-trend-positive{--_trend-color: #4ade80;--_trend-bg: rgba(34, 197, 94, .18);--_trend-border: rgba(74, 222, 128, .3);--_trend-solid-bg: #16a34a;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(34, 197, 94, .12)}:root[data-theme=dark] :host.talos-trend-negative,:root.dark :host.talos-trend-negative,[data-theme=dark] :host.talos-trend-negative,[data-mode=dark] :host.talos-trend-negative,.dark :host.talos-trend-negative,.dark-theme :host.talos-trend-negative{--_trend-color: #f87171;--_trend-bg: rgba(239, 68, 68, .18);--_trend-border: rgba(248, 113, 113, .3);--_trend-solid-bg: #dc2626;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(239, 68, 68, .12)}:root[data-theme=dark] :host.talos-trend-neutral,:root.dark :host.talos-trend-neutral,[data-theme=dark] :host.talos-trend-neutral,[data-mode=dark] :host.talos-trend-neutral,.dark :host.talos-trend-neutral,.dark-theme :host.talos-trend-neutral{--_trend-color: #94a3b8;--_trend-bg: rgba(100, 116, 139, .18);--_trend-border: rgba(148, 163, 184, .25);--_trend-solid-bg: #475569;--_trend-solid-text: #ffffff;--_trend-subtle-bg: rgba(100, 116, 139, .12)}\n"] }]
215
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }], previous: [{ type: i0.Input, args: [{ isSignal: true, alias: "previous", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], polarity: [{ type: i0.Input, args: [{ isSignal: true, alias: "polarity", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], iconType: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconType", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], decimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimals", required: false }] }], showSign: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSign", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], valueFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueFormatter", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
216
+
217
+ class TalosTrendIndicatorModule {
218
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
219
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorModule, imports: [TalosTrendIndicatorComponent], exports: [TalosTrendIndicatorComponent] });
220
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorModule });
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosTrendIndicatorModule, decorators: [{
223
+ type: NgModule,
224
+ args: [{
225
+ imports: [TalosTrendIndicatorComponent],
226
+ exports: [TalosTrendIndicatorComponent]
227
+ }]
228
+ }] });
229
+
230
+ /**
231
+ * Generated bundle index. Do not edit.
232
+ */
233
+
234
+ export { TalosTrendIndicatorComponent, TalosTrendIndicatorModule };
235
+ //# sourceMappingURL=weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui-data-display-trend-indicator.mjs","sources":["../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.types.ts","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.component.ts","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.component.html","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.module.ts","../../../projects/talos-ui/data-display/trend-indicator/weeehaoooz-talos-ui-data-display-trend-indicator.ts"],"sourcesContent":["/**\n * Types and interfaces for TalosTrendIndicatorComponent\n */\n\nexport type TrendDirection = 'up' | 'down' | 'flat' | 'auto';\n\nexport type TrendPolarity = 'normal' | 'inverse' | 'neutral';\n\nexport type TrendVariant = 'badge' | 'subtle' | 'text' | 'bordered' | 'solid';\n\nexport type TrendSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type TrendLayout = 'horizontal' | 'vertical';\n\nexport type TrendIconType = 'arrow-diagonal' | 'arrow-vertical' | 'chevron' | 'triangle';\n\nexport type TrendStatus = 'auto' | 'positive' | 'negative' | 'neutral';\n\nexport type TrendFormat = 'percentage' | 'currency' | 'number' | 'points' | 'custom';\n\nexport interface TrendCalculationResult {\n delta: number;\n deltaPercentage: number;\n direction: 'up' | 'down' | 'flat';\n status: 'positive' | 'negative' | 'neutral';\n formattedText: string;\n}\n\n","import { Component, computed, input } from '@angular/core';\nimport {\n TrendCalculationResult,\n TrendDirection,\n TrendFormat,\n TrendIconType,\n TrendLayout,\n TrendPolarity,\n TrendSize,\n TrendStatus,\n TrendVariant\n} from './trend-indicator.types';\n\n@Component({\n selector: 'talos-trend-indicator',\n templateUrl: './trend-indicator.component.html',\n styleUrl: './trend-indicator.component.scss',\n host: {\n 'class': 'talos-trend-indicator',\n '[class.talos-trend-badge]': 'variant() === \"badge\"',\n '[class.talos-trend-subtle]': 'variant() === \"subtle\"',\n '[class.talos-trend-text]': 'variant() === \"text\"',\n '[class.talos-trend-bordered]': 'variant() === \"bordered\"',\n '[class.talos-trend-solid]': 'variant() === \"solid\"',\n '[class.talos-trend-horizontal]': 'layout() === \"horizontal\"',\n '[class.talos-trend-vertical]': 'layout() === \"vertical\"',\n '[class.talos-trend-positive]': 'computedStatus() === \"positive\"',\n '[class.talos-trend-negative]': 'computedStatus() === \"negative\"',\n '[class.talos-trend-neutral]': 'computedStatus() === \"neutral\"',\n '[class.talos-trend-xs]': 'size() === \"xs\"',\n '[class.talos-trend-sm]': 'size() === \"sm\"',\n '[class.talos-trend-md]': 'size() === \"md\"',\n '[class.talos-trend-lg]': 'size() === \"lg\"',\n '[attr.role]': '\"status\"',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosTrendIndicatorComponent {\n /** Explicit value to display (e.g. 14.2, -5.3, \"+12%\") */\n readonly value = input<number | string | null>(null);\n\n /** Current value for automatic delta calculation */\n readonly current = input<number | null>(null);\n\n /** Previous value for automatic delta calculation */\n readonly previous = input<number | null>(null);\n\n /** Explicit direction override or 'auto' */\n readonly direction = input<TrendDirection>('auto');\n\n /** Explicit status override or 'auto' */\n readonly status = input<TrendStatus>('auto');\n\n /** Polarity: normal (+ is good), inverse (+ is bad), neutral */\n readonly polarity = input<TrendPolarity>('normal');\n\n /** Visual variant */\n readonly variant = input<TrendVariant>('badge');\n\n /** Layout orientation: horizontal or vertical */\n readonly layout = input<TrendLayout>('horizontal');\n\n /** Icon shape / style */\n readonly iconType = input<TrendIconType>('arrow-diagonal');\n\n /** Size preset */\n readonly size = input<TrendSize>('md');\n\n /** Value formatting mode */\n readonly format = input<TrendFormat>('percentage');\n\n /** Prefix string before number */\n readonly prefix = input<string>('');\n\n /** Suffix string after number (e.g. '%', 'pts') */\n readonly suffix = input<string>('');\n\n /** Number of decimal places */\n readonly decimals = input<number>(1);\n\n /** Whether to show '+' / '-' sign */\n readonly showSign = input<boolean>(true);\n\n /** Whether to show arrow icon */\n readonly showIcon = input<boolean>(true);\n\n /** Show only the icon without text */\n readonly iconOnly = input<boolean>(false);\n\n /** Secondary comparison label (e.g. 'vs last month') */\n readonly label = input<string>('');\n\n /** Currency symbol when format is 'currency' */\n readonly currencySymbol = input<string>('$');\n\n /** Custom formatter function */\n readonly valueFormatter = input<((calc: TrendCalculationResult) => string) | null>(null);\n\n /** Accessible label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Calculation result */\n readonly calculation = computed<TrendCalculationResult>(() => {\n const cur = this.current();\n const prev = this.previous();\n const val = this.value();\n const dec = this.decimals();\n\n let delta = 0;\n let deltaPct = 0;\n let dir: 'up' | 'down' | 'flat' = 'flat';\n\n if (cur !== null && prev !== null) {\n delta = cur - prev;\n deltaPct = prev !== 0 ? ((cur - prev) / Math.abs(prev)) * 100 : cur > 0 ? 100 : cur < 0 ? -100 : 0;\n if (delta > 0.0001) dir = 'up';\n else if (delta < -0.0001) dir = 'down';\n else dir = 'flat';\n } else if (typeof val === 'number') {\n delta = val;\n deltaPct = val;\n if (val > 0.0001) dir = 'up';\n else if (val < -0.0001) dir = 'down';\n else dir = 'flat';\n } else if (typeof val === 'string') {\n const parsed = parseFloat(val.replace(/[^0-9.-]/g, ''));\n delta = isNaN(parsed) ? 0 : parsed;\n deltaPct = delta;\n if (val.includes('+') || delta > 0.0001) dir = 'up';\n else if (val.includes('-') || delta < -0.0001) dir = 'down';\n else dir = 'flat';\n }\n\n // Force direction override if specified\n const explicitDir = this.direction();\n if (explicitDir !== 'auto') {\n dir = explicitDir;\n }\n\n // Determine status (positive / negative / neutral) based on polarity or explicit override\n const explicitStatus = this.status();\n let calculatedStatus: 'positive' | 'negative' | 'neutral' = 'neutral';\n\n if (explicitStatus !== 'auto') {\n calculatedStatus = explicitStatus;\n } else {\n const pol = this.polarity();\n if (pol === 'neutral' || dir === 'flat') {\n calculatedStatus = 'neutral';\n } else if (pol === 'normal') {\n calculatedStatus = dir === 'up' ? 'positive' : 'negative';\n } else if (pol === 'inverse') {\n calculatedStatus = dir === 'up' ? 'negative' : 'positive';\n }\n }\n\n // Format text\n let formattedText = '';\n const customFmt = this.valueFormatter();\n if (customFmt) {\n formattedText = customFmt({ delta, deltaPercentage: deltaPct, direction: dir, status: calculatedStatus, formattedText: '' });\n } else if (typeof val === 'string' && cur === null) {\n formattedText = val;\n } else {\n const sign = this.showSign() ? (dir === 'up' ? '+' : dir === 'down' ? '-' : '') : '';\n const absDelta = Math.abs(delta);\n const absPct = Math.abs(deltaPct);\n const pfx = this.prefix();\n const sfx = this.suffix();\n\n switch (this.format()) {\n case 'percentage':\n formattedText = `${sign}${pfx}${absPct.toFixed(dec)}%${sfx}`;\n break;\n case 'currency':\n formattedText = `${sign}${this.currencySymbol()}${pfx}${absDelta.toFixed(dec)}${sfx}`;\n break;\n case 'points':\n formattedText = `${sign}${pfx}${absDelta.toFixed(dec)} pts${sfx}`;\n break;\n case 'number':\n default:\n formattedText = `${sign}${pfx}${absDelta.toFixed(dec)}${sfx}`;\n break;\n }\n }\n\n return {\n delta,\n deltaPercentage: deltaPct,\n direction: dir,\n status: calculatedStatus,\n formattedText\n };\n });\n\n readonly computedStatus = computed(() => this.calculation().status);\n readonly computedDirection = computed(() => this.calculation().direction);\n readonly displayValue = computed(() => this.calculation().formattedText);\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n const calc = this.calculation();\n const dirWord = calc.direction === 'up' ? 'Increased by' : calc.direction === 'down' ? 'Decreased by' : 'No change';\n const labelText = this.label() ? ` (${this.label()})` : '';\n return `Trend: ${dirWord} ${calc.formattedText}${labelText}`;\n });\n}\n\n","<span class=\"talos-trend-main\">\n @if (showIcon()) {\n <span class=\"talos-trend-icon-wrapper\" aria-hidden=\"true\">\n @switch (iconType()) {\n @case ('arrow-vertical') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 12.5V3.5M8 3.5L4.5 7M8 3.5L11.5 7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 3.5V12.5M8 12.5L4.5 9M8 12.5L11.5 9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('chevron') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 10L8 5.5L12.5 10\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 6L8 10.5L12.5 6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('triangle') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 4.5L13 12H3L8 4.5Z\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 11.5L3 4H13L8 11.5Z\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <rect x=\"3.5\" y=\"7\" width=\"9\" height=\"2\" rx=\"1\"/>\n </svg>\n }\n }\n @default {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 11.5L11.5 4M11.5 4H6M11.5 4V9.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 4.5L11.5 12M11.5 12H6M11.5 12V6.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n }\n </span>\n }\n\n @if (!iconOnly()) {\n <span class=\"talos-trend-value\">{{ displayValue() }}</span>\n }\n</span>\n\n@if (label()) {\n <span class=\"talos-trend-label\">{{ label() }}</span>\n}\n\n","import { NgModule } from '@angular/core';\nimport { TalosTrendIndicatorComponent } from './trend-indicator.component';\n\n@NgModule({\n imports: [TalosTrendIndicatorComponent],\n exports: [TalosTrendIndicatorComponent]\n})\nexport class TalosTrendIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}