mis-crystal-design-system 18.0.25 → 18.1.0-signal-test

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 (185) hide show
  1. package/action-list/action-list.component.d.ts +17 -15
  2. package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
  3. package/button/button.component.d.ts +35 -13
  4. package/button/button.directive.d.ts +10 -8
  5. package/button/button.directive.scss +13 -15
  6. package/checkbox/checkbox.component.d.ts +15 -12
  7. package/chip/chip.component.d.ts +9 -11
  8. package/datepicker_v2/models/dp-config.model.d.ts +1 -0
  9. package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
  10. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
  11. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
  12. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
  13. package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
  14. package/drawer/drawer.scss +1 -1
  15. package/dropdown/calculate-container-height.directive.d.ts +7 -8
  16. package/dropdown/dropdown.component.d.ts +41 -49
  17. package/dynamic-form/dynamic-form.component.d.ts +20 -16
  18. package/esm2022/action-list/action-list.component.mjs +113 -90
  19. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +257 -327
  20. package/esm2022/button/button.component.mjs +56 -49
  21. package/esm2022/button/button.directive.mjs +36 -40
  22. package/esm2022/checkbox/checkbox.component.mjs +75 -70
  23. package/esm2022/chip/chip.component.mjs +20 -33
  24. package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
  25. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
  26. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +203 -173
  27. package/esm2022/datepicker_v2/utils/index.mjs +2 -1
  28. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
  29. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +283 -236
  30. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
  31. package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
  32. package/esm2022/dropdown/dropdown.component.mjs +163 -187
  33. package/esm2022/dynamic-form/dynamic-form.component.mjs +119 -73
  34. package/esm2022/fab/fab.component.mjs +30 -34
  35. package/esm2022/filter/filter-panel/filter-panel.component.mjs +61 -59
  36. package/esm2022/input/directives/input/input.directive.mjs +22 -26
  37. package/esm2022/input/mis-input.component.mjs +42 -46
  38. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +42 -52
  39. package/esm2022/loader/loader.component.mjs +8 -11
  40. package/esm2022/mobile-filter/mobile-filter.component.mjs +62 -62
  41. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
  42. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
  43. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
  44. package/esm2022/phone-input/phone-input.component.mjs +21 -43
  45. package/esm2022/public-api.mjs +1 -1
  46. package/esm2022/radio-button/radio-button.component.mjs +15 -27
  47. package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
  48. package/esm2022/slider/slider.component.mjs +23 -33
  49. package/esm2022/slider/slider.module.mjs +4 -11
  50. package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
  51. package/esm2022/snackbar/snackbar.service.mjs +3 -2
  52. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +231 -344
  53. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
  54. package/esm2022/star-rating/star-rating.component.mjs +58 -72
  55. package/esm2022/switch/switch.component.mjs +34 -36
  56. package/esm2022/table/actions-cell/actions-cell.component.mjs +56 -55
  57. package/esm2022/table/custom-table-cell.directive.mjs +22 -18
  58. package/esm2022/table/filter/filter.component.mjs +60 -42
  59. package/esm2022/table/sort-icons.directive.mjs +16 -8
  60. package/esm2022/table/sub-table/sub-table.component.mjs +42 -45
  61. package/esm2022/table/table.component.mjs +182 -166
  62. package/esm2022/timepicker/timepicker.component.mjs +245 -160
  63. package/esm2022/timepicker/timepicker.directive.mjs +3 -2
  64. package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
  65. package/esm2022/toast/toast.component.mjs +7 -8
  66. package/esm2022/toast/toast.data.service.mjs +15 -9
  67. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
  68. package/esm2022/tooltip/tooltip.directive.mjs +4 -4
  69. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
  70. package/fab/fab.component.d.ts +12 -8
  71. package/fesm2022/mis-crystal-design-system-action-list.mjs +112 -89
  72. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  73. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +254 -325
  74. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  75. package/fesm2022/mis-crystal-design-system-button.mjs +89 -86
  76. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  77. package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
  78. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  79. package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
  80. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  81. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +243 -241
  82. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  83. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +306 -284
  84. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  85. package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
  86. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  87. package/fesm2022/mis-crystal-design-system-dropdown.mjs +184 -205
  88. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  89. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +119 -73
  90. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  91. package/fesm2022/mis-crystal-design-system-fab.mjs +29 -33
  92. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  93. package/fesm2022/mis-crystal-design-system-filter.mjs +60 -58
  94. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  95. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +41 -51
  96. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  97. package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
  98. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  99. package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
  100. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  101. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +61 -61
  102. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  103. package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
  104. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  105. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
  106. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  107. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
  108. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  109. package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
  110. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  111. package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
  112. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  113. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
  114. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  115. package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
  116. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  117. package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
  118. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  119. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +305 -446
  120. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  121. package/fesm2022/mis-crystal-design-system-star-rating.mjs +57 -71
  122. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  123. package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
  124. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  125. package/fesm2022/mis-crystal-design-system-table.mjs +368 -324
  126. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  127. package/fesm2022/mis-crystal-design-system-timepicker.mjs +246 -160
  128. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  129. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
  130. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  131. package/fesm2022/mis-crystal-design-system-toast.mjs +19 -14
  132. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  133. package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
  134. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  135. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
  136. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  137. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  138. package/filter/filter-panel/filter-panel.component.d.ts +14 -14
  139. package/input/directives/input/input.directive.d.ts +6 -10
  140. package/input/mis-input.component.d.ts +12 -13
  141. package/input/mis-input.component.scss +18 -18
  142. package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
  143. package/loader/loader.component.d.ts +3 -6
  144. package/mobile-filter/mobile-filter.component.d.ts +15 -15
  145. package/modal/modal.scss +1 -1
  146. package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
  147. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
  148. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
  149. package/package.json +17 -23
  150. package/phone-input/phone-input.component.d.ts +16 -18
  151. package/radio-button/radio-button.component.d.ts +9 -11
  152. package/ske-loader/ske-loader.component.d.ts +8 -11
  153. package/slider/slider.component.d.ts +8 -11
  154. package/slider/slider.module.d.ts +1 -2
  155. package/snackbar/snackbar/snackbar.component.d.ts +3 -3
  156. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
  157. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
  158. package/star-rating/star-rating.component.d.ts +18 -18
  159. package/styles/mis-color-constants.scss +0 -204
  160. package/styles/mis-icons.scss +56 -56
  161. package/styles/mis-old-icon-styles.scss +21 -21
  162. package/switch/switch.component.d.ts +8 -10
  163. package/table/actions-cell/actions-cell.component.d.ts +14 -14
  164. package/table/custom-table-cell.directive.d.ts +3 -3
  165. package/table/filter/filter.component.d.ts +9 -9
  166. package/table/sub-table/sub-table.component.d.ts +5 -5
  167. package/table/table.component.d.ts +38 -35
  168. package/timepicker/timepicker.component.d.ts +29 -28
  169. package/timerangepicker/timerangepicker.component.d.ts +36 -33
  170. package/toast/toast.data.service.d.ts +1 -1
  171. package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
  172. package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
  173. package/dynamic-theme/branding.types.d.ts +0 -84
  174. package/dynamic-theme/dynamic-theme.module.d.ts +0 -9
  175. package/dynamic-theme/dynamic-theme.service.d.ts +0 -89
  176. package/dynamic-theme/index.d.ts +0 -1
  177. package/dynamic-theme/public_api.d.ts +0 -3
  178. package/esm2022/dynamic-theme/branding.types.mjs +0 -93
  179. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +0 -25
  180. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +0 -193
  181. package/esm2022/dynamic-theme/index.mjs +0 -2
  182. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +0 -5
  183. package/esm2022/dynamic-theme/public_api.mjs +0 -4
  184. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +0 -313
  185. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +0 -1
@@ -1,313 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
3
- import { BehaviorSubject } from 'rxjs';
4
-
5
- var BrandingTypes;
6
- (function (BrandingTypes) {
7
- BrandingTypes.defaultTheme = {
8
- // Brand
9
- brandPrimary: "#0937B2",
10
- brandPrimaryLight: "#3C68D0",
11
- brandPrimaryDark: "#062A99",
12
- brandPrimaryDarker: "#041F80",
13
- brandPrimaryLighter: "#638FE7",
14
- brandPrimaryLightest: "#CBDDFB",
15
- brandPrimaryHover: "#F0F3FA",
16
- brandPrimaryActive: "#DAE1F3",
17
- brandSecondary: "#ED711C",
18
- brandSecondaryLight: "#F09E65",
19
- brandSecondaryDark: "#B23600",
20
- brandSecondaryLighter: "#FFC6F2",
21
- brandAccent: "#10ADAE",
22
- brandAccentLight: "#16CBBC",
23
- brandAccentDark: "#035F6B",
24
- brandAccentLighter: "#ACDADA",
25
- // Semantic
26
- brandSuccess: "#38AF49",
27
- brandSuccessLight: "#4CAF50",
28
- brandSuccessDark: "#216531",
29
- brandSuccessLighter: "#E4F5E9",
30
- brandSuccessLightest: "#F1FFF3",
31
- brandError: "#B00020",
32
- brandErrorLight: "#F04E4E",
33
- brandErrorDark: "#A60060",
34
- brandErrorLighter: "#FAE1EA",
35
- brandErrorLightest: "#FDF2F2",
36
- brandWarning: "#FF9D00",
37
- brandWarningLight: "#D4900C",
38
- brandWarningDark: "#624000",
39
- brandWarningLighter: "#F4E7C3",
40
- brandWarningLightest: "#FAEFED",
41
- brandInfo: "#0091FF",
42
- brandInfoLight: "#35A1FF",
43
- brandInfoDark: "#0087B2",
44
- brandInfoLighter: "#CFECF9",
45
- // Text
46
- textPrimary: "#181F33",
47
- textSecondary: "#6A737D",
48
- textTertiary: "#929DAB",
49
- textDisabled: "#C8CDD3",
50
- textPrimary87: "rgba(24, 31, 51, 0.87)",
51
- textPrimary60: "rgba(24, 31, 51, 0.60)",
52
- textPrimary38: "rgba(24, 31, 51, 0.38)",
53
- textPrimary12: "rgba(24, 31, 51, 0.12)",
54
- // Background
55
- bgPrimary: "#FFFFFF",
56
- bgSecondary: "#FAFAFA",
57
- bgTertiary: "#F5F5F5",
58
- bgOverlay: "rgba(0, 0, 0, 0.32)",
59
- bgOverlayLight: "rgba(0, 0, 0, 0.12)",
60
- bgOverlayLighter: "rgba(0, 0, 0, 0.08)",
61
- bgOverlayLightest: "rgba(0, 0, 0, 0.04)",
62
- // Border
63
- borderPrimary: "#E0E0E0",
64
- borderSecondary: "#D6DCE2",
65
- borderTertiary: "#C8CDD3",
66
- borderLight: "#F1F4F8",
67
- borderPrimary12: "rgba(0, 0, 0, 0.12)",
68
- borderPrimary08: "rgba(0, 0, 0, 0.08)",
69
- borderPrimary06: "rgba(0, 0, 0, 0.06)",
70
- // Shadows
71
- shadowPrimary: "rgba(0, 0, 0, 0.12)",
72
- shadowSecondary: "rgba(0, 0, 0, 0.08)",
73
- shadowTertiary: "rgba(0, 0, 0, 0.04)",
74
- shadowLight: "rgba(0, 0, 0, 0.06)",
75
- // Status
76
- statusAvailable: "#929DAB",
77
- statusUnavailable: "#CCD3DA",
78
- statusHotseat: "#857BFF",
79
- statusMultiteam: "#10ADAE",
80
- statusSelected: "#10ADAE",
81
- statusUpcoming: "#D4900C",
82
- statusRoom: "#38AF49",
83
- statusRoomBooked: "#B23600",
84
- statusRoomUnavailable: "#181F33",
85
- // Team
86
- teamColor1: "#F8C52E",
87
- teamColor2: "#FA8E20",
88
- teamColor3: "#987CDD",
89
- teamColor4: "#16CBBC",
90
- teamColor5: "#E65010",
91
- teamColor6: "#A60060",
92
- teamColor7: "#ED323B",
93
- teamColor8: "#35A1FF",
94
- teamColor9: "#80D348",
95
- };
96
- })(BrandingTypes || (BrandingTypes = {}));
97
-
98
- class DynamicThemeService {
99
- constructor() {
100
- this.currentThemeSubject = new BehaviorSubject(BrandingTypes.defaultTheme);
101
- this.currentTheme$ = this.currentThemeSubject.asObservable();
102
- // Initialize with default theme on service creation
103
- this.applyTheme(BrandingTypes.defaultTheme);
104
- }
105
- /**
106
- * Apply a complete theme configuration to the root element
107
- * @param theme - ThemeColors object containing all color values
108
- */
109
- applyTheme(theme) {
110
- const root = document.documentElement;
111
- Object.entries(theme).forEach(([camelName, value]) => {
112
- const cssVar = `--${this.camelToKebabCase(camelName)}`;
113
- root.style.setProperty(cssVar, String(value));
114
- });
115
- // Update the current theme subject
116
- this.currentThemeSubject.next(theme);
117
- }
118
- /**
119
- * Apply partial theme updates (only specified colors will be updated)
120
- * @param partialTheme - Partial ThemeColors object with only the colors to update
121
- */
122
- applyPartialTheme(partialTheme) {
123
- const root = document.documentElement;
124
- Object.entries(partialTheme).forEach(([camelName, value]) => {
125
- if (value !== undefined) {
126
- const cssVar = `--${this.camelToKebabCase(camelName)}`;
127
- root.style.setProperty(cssVar, String(value));
128
- }
129
- });
130
- // Update the current theme with merged values
131
- const currentTheme = this.currentThemeSubject.value;
132
- const updatedTheme = { ...currentTheme, ...partialTheme };
133
- this.currentThemeSubject.next(updatedTheme);
134
- }
135
- /**
136
- * Set a single color property
137
- * @param colorKey - The camelCase key of the color property
138
- * @param colorValue - The color value (hex, rgb, rgba, etc.)
139
- */
140
- setColorProperty(colorKey, colorValue) {
141
- const root = document.documentElement;
142
- const cssVar = `--${this.camelToKebabCase(colorKey)}`;
143
- root.style.setProperty(cssVar, colorValue);
144
- // Update the current theme
145
- const currentTheme = this.currentThemeSubject.value;
146
- const updatedTheme = { ...currentTheme, [colorKey]: colorValue };
147
- this.currentThemeSubject.next(updatedTheme);
148
- }
149
- /**
150
- * Get the current theme colors
151
- * @returns Current ThemeColors object
152
- */
153
- getCurrentTheme() {
154
- return this.currentThemeSubject.value;
155
- }
156
- /**
157
- * Get a specific color value from the current theme
158
- * @param colorKey - The camelCase key of the color property
159
- * @returns The color value as string
160
- */
161
- getColorProperty(colorKey) {
162
- return this.currentThemeSubject.value[colorKey];
163
- }
164
- /**
165
- * Reset theme to default values
166
- */
167
- resetToDefault() {
168
- this.applyTheme(BrandingTypes.defaultTheme);
169
- }
170
- /**
171
- * Remove a specific CSS custom property from the root element
172
- * @param colorKey - The camelCase key of the color property to remove
173
- */
174
- removeColorProperty(colorKey) {
175
- const root = document.documentElement;
176
- const cssVar = `--${this.camelToKebabCase(colorKey)}`;
177
- root.style.removeProperty(cssVar);
178
- }
179
- /**
180
- * Get all CSS custom properties currently set on the root element
181
- * @returns Object with CSS variable names as keys and their values
182
- */
183
- getAllCSSVariables() {
184
- const root = document.documentElement;
185
- const computedStyle = getComputedStyle(root);
186
- const cssVars = {};
187
- // Get all CSS custom properties that start with our prefix
188
- for (let i = 0; i < computedStyle.length; i++) {
189
- const property = computedStyle[i];
190
- if (property.startsWith('--brand-') ||
191
- property.startsWith('--text-') ||
192
- property.startsWith('--bg-') ||
193
- property.startsWith('--border-') ||
194
- property.startsWith('--shadow-') ||
195
- property.startsWith('--status-') ||
196
- property.startsWith('--team-color-')) {
197
- cssVars[property] = computedStyle.getPropertyValue(property).trim();
198
- }
199
- }
200
- return cssVars;
201
- }
202
- /**
203
- * Apply theme with validation
204
- * @param theme - ThemeColors object to validate and apply
205
- * @returns boolean indicating if the theme was successfully applied
206
- */
207
- applyThemeWithValidation(theme) {
208
- try {
209
- // Basic validation - check if all required properties exist
210
- const requiredKeys = Object.keys(BrandingTypes.defaultTheme);
211
- const themeKeys = Object.keys(theme);
212
- const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));
213
- if (missingKeys.length > 0) {
214
- console.warn('DynamicThemeService: Missing theme properties:', missingKeys);
215
- // Apply with default values for missing keys
216
- const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };
217
- this.applyTheme(completeTheme);
218
- return false;
219
- }
220
- this.applyTheme(theme);
221
- return true;
222
- }
223
- catch (error) {
224
- console.error('DynamicThemeService: Error applying theme:', error);
225
- return false;
226
- }
227
- }
228
- /**
229
- * Convert camelCase to kebab-case for CSS custom properties
230
- * @param camelCase - The camelCase string to convert
231
- * @returns kebab-case string
232
- */
233
- camelToKebabCase(camelCase) {
234
- return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();
235
- }
236
- /**
237
- * Convert kebab-case to camelCase
238
- * @param kebabCase - The kebab-case string to convert
239
- * @returns camelCase string
240
- */
241
- kebabToCamelCase(kebabCase) {
242
- return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
243
- }
244
- /**
245
- * Create a theme preset from current applied theme
246
- * @param presetName - Name for the theme preset
247
- * @returns Theme preset object
248
- */
249
- createThemePreset(presetName) {
250
- return {
251
- name: presetName,
252
- theme: { ...this.getCurrentTheme() }
253
- };
254
- }
255
- /**
256
- * Export current theme as JSON string
257
- * @returns JSON string representation of current theme
258
- */
259
- exportThemeAsJSON() {
260
- return JSON.stringify(this.getCurrentTheme(), null, 2);
261
- }
262
- /**
263
- * Import theme from JSON string
264
- * @param jsonString - JSON string representation of theme
265
- * @returns boolean indicating success
266
- */
267
- importThemeFromJSON(jsonString) {
268
- try {
269
- const theme = JSON.parse(jsonString);
270
- return this.applyThemeWithValidation(theme);
271
- }
272
- catch (error) {
273
- console.error('DynamicThemeService: Error importing theme from JSON:', error);
274
- return false;
275
- }
276
- }
277
- static { this.ɵfac = function DynamicThemeService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeService)(); }; }
278
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DynamicThemeService, factory: DynamicThemeService.ɵfac, providedIn: 'root' }); }
279
- }
280
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeService, [{
281
- type: Injectable,
282
- args: [{
283
- providedIn: 'root'
284
- }]
285
- }], () => [], null); })();
286
-
287
- class DynamicThemeModule {
288
- constructor(themeService) {
289
- this.themeService = themeService;
290
- // Initialize the theme service when module is loaded
291
- // This ensures the default theme is applied
292
- }
293
- static { this.ɵfac = function DynamicThemeModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeModule)(i0.ɵɵinject(DynamicThemeService)); }; }
294
- static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DynamicThemeModule }); }
295
- static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
296
- DynamicThemeService
297
- ] }); }
298
- }
299
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeModule, [{
300
- type: NgModule,
301
- args: [{
302
- providers: [
303
- DynamicThemeService
304
- ]
305
- }]
306
- }], () => [{ type: DynamicThemeService }], null); })();
307
-
308
- /**
309
- * Generated bundle index. Do not edit.
310
- */
311
-
312
- export { BrandingTypes, DynamicThemeModule, DynamicThemeService };
313
- //# sourceMappingURL=mis-crystal-design-system-dynamic-theme.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mis-crystal-design-system-dynamic-theme.mjs","sources":["../../../projects/mis-components/dynamic-theme/branding.types.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.service.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.module.ts","../../../projects/mis-components/dynamic-theme/mis-crystal-design-system-dynamic-theme.ts"],"sourcesContent":["export namespace BrandingTypes {\n\n export interface ThemeColors {\n // Brand\n brandPrimary: string;\n brandPrimaryLight: string;\n brandPrimaryDark: string;\n brandPrimaryDarker: string;\n brandPrimaryLighter: string;\n brandPrimaryLightest: string;\n brandPrimaryHover: string;\n brandPrimaryActive: string;\n\n brandSecondary: string;\n brandSecondaryLight: string;\n brandSecondaryDark: string;\n brandSecondaryLighter: string;\n\n brandAccent: string;\n brandAccentLight: string;\n brandAccentDark: string;\n brandAccentLighter: string;\n\n // Semantic\n brandSuccess: string;\n brandSuccessLight: string;\n brandSuccessDark: string;\n brandSuccessLighter: string;\n brandSuccessLightest: string;\n\n brandError: string;\n brandErrorLight: string;\n brandErrorDark: string;\n brandErrorLighter: string;\n brandErrorLightest: string;\n\n brandWarning: string;\n brandWarningLight: string;\n brandWarningDark: string;\n brandWarningLighter: string;\n brandWarningLightest: string;\n\n brandInfo: string;\n brandInfoLight: string;\n brandInfoDark: string;\n brandInfoLighter: string;\n\n // Text\n textPrimary: string;\n textSecondary: string;\n textTertiary: string;\n textDisabled: string;\n\n textPrimary87: string;\n textPrimary60: string;\n textPrimary38: string;\n textPrimary12: string;\n\n // Background\n bgPrimary: string;\n bgSecondary: string;\n bgTertiary: string;\n bgOverlay: string;\n bgOverlayLight: string;\n bgOverlayLighter: string;\n bgOverlayLightest: string;\n\n // Border\n borderPrimary: string;\n borderSecondary: string;\n borderTertiary: string;\n borderLight: string;\n borderPrimary12: string;\n borderPrimary08: string;\n borderPrimary06: string;\n\n // Shadows\n shadowPrimary: string;\n shadowSecondary: string;\n shadowTertiary: string;\n shadowLight: string;\n\n // Status\n statusAvailable: string;\n statusUnavailable: string;\n statusHotseat: string;\n statusMultiteam: string;\n statusSelected: string;\n statusUpcoming: string;\n statusRoom: string;\n statusRoomBooked: string;\n statusRoomUnavailable: string;\n\n // Team\n teamColor1: string;\n teamColor2: string;\n teamColor3: string;\n teamColor4: string;\n teamColor5: string;\n teamColor6: string;\n teamColor7: string;\n teamColor8: string;\n teamColor9: string;\n }\n \n export const defaultTheme: ThemeColors = {\n // Brand\n brandPrimary: \"#0937B2\",\n brandPrimaryLight: \"#3C68D0\",\n brandPrimaryDark: \"#062A99\",\n brandPrimaryDarker: \"#041F80\",\n brandPrimaryLighter: \"#638FE7\",\n brandPrimaryLightest: \"#CBDDFB\",\n brandPrimaryHover: \"#F0F3FA\",\n brandPrimaryActive: \"#DAE1F3\",\n \n brandSecondary: \"#ED711C\",\n brandSecondaryLight: \"#F09E65\",\n brandSecondaryDark: \"#B23600\",\n brandSecondaryLighter: \"#FFC6F2\",\n \n brandAccent: \"#10ADAE\",\n brandAccentLight: \"#16CBBC\",\n brandAccentDark: \"#035F6B\",\n brandAccentLighter: \"#ACDADA\",\n \n // Semantic\n brandSuccess: \"#38AF49\",\n brandSuccessLight: \"#4CAF50\",\n brandSuccessDark: \"#216531\",\n brandSuccessLighter: \"#E4F5E9\",\n brandSuccessLightest: \"#F1FFF3\",\n \n brandError: \"#B00020\",\n brandErrorLight: \"#F04E4E\",\n brandErrorDark: \"#A60060\",\n brandErrorLighter: \"#FAE1EA\",\n brandErrorLightest: \"#FDF2F2\",\n \n brandWarning: \"#FF9D00\",\n brandWarningLight: \"#D4900C\",\n brandWarningDark: \"#624000\",\n brandWarningLighter: \"#F4E7C3\",\n brandWarningLightest: \"#FAEFED\",\n \n brandInfo: \"#0091FF\",\n brandInfoLight: \"#35A1FF\",\n brandInfoDark: \"#0087B2\",\n brandInfoLighter: \"#CFECF9\",\n \n // Text\n textPrimary: \"#181F33\",\n textSecondary: \"#6A737D\",\n textTertiary: \"#929DAB\",\n textDisabled: \"#C8CDD3\",\n \n textPrimary87: \"rgba(24, 31, 51, 0.87)\",\n textPrimary60: \"rgba(24, 31, 51, 0.60)\",\n textPrimary38: \"rgba(24, 31, 51, 0.38)\",\n textPrimary12: \"rgba(24, 31, 51, 0.12)\",\n \n // Background\n bgPrimary: \"#FFFFFF\",\n bgSecondary: \"#FAFAFA\",\n bgTertiary: \"#F5F5F5\",\n bgOverlay: \"rgba(0, 0, 0, 0.32)\",\n bgOverlayLight: \"rgba(0, 0, 0, 0.12)\",\n bgOverlayLighter: \"rgba(0, 0, 0, 0.08)\",\n bgOverlayLightest: \"rgba(0, 0, 0, 0.04)\",\n \n // Border\n borderPrimary: \"#E0E0E0\",\n borderSecondary: \"#D6DCE2\",\n borderTertiary: \"#C8CDD3\",\n borderLight: \"#F1F4F8\",\n borderPrimary12: \"rgba(0, 0, 0, 0.12)\",\n borderPrimary08: \"rgba(0, 0, 0, 0.08)\",\n borderPrimary06: \"rgba(0, 0, 0, 0.06)\",\n \n // Shadows\n shadowPrimary: \"rgba(0, 0, 0, 0.12)\",\n shadowSecondary: \"rgba(0, 0, 0, 0.08)\",\n shadowTertiary: \"rgba(0, 0, 0, 0.04)\",\n shadowLight: \"rgba(0, 0, 0, 0.06)\",\n \n // Status\n statusAvailable: \"#929DAB\",\n statusUnavailable: \"#CCD3DA\",\n statusHotseat: \"#857BFF\",\n statusMultiteam: \"#10ADAE\",\n statusSelected: \"#10ADAE\",\n statusUpcoming: \"#D4900C\",\n statusRoom: \"#38AF49\",\n statusRoomBooked: \"#B23600\",\n statusRoomUnavailable: \"#181F33\",\n \n // Team\n teamColor1: \"#F8C52E\",\n teamColor2: \"#FA8E20\",\n teamColor3: \"#987CDD\",\n teamColor4: \"#16CBBC\",\n teamColor5: \"#E65010\",\n teamColor6: \"#A60060\",\n teamColor7: \"#ED323B\",\n teamColor8: \"#35A1FF\",\n teamColor9: \"#80D348\",\n };\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BrandingTypes } from './branding.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicThemeService {\n private currentThemeSubject = new BehaviorSubject<BrandingTypes.ThemeColors>(BrandingTypes.defaultTheme);\n public currentTheme$: Observable<BrandingTypes.ThemeColors> = this.currentThemeSubject.asObservable();\n\n constructor() {\n // Initialize with default theme on service creation\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Apply a complete theme configuration to the root element\n * @param theme - ThemeColors object containing all color values\n */\n applyTheme(theme: BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n \n Object.entries(theme).forEach(([camelName, value]) => {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n });\n\n // Update the current theme subject\n this.currentThemeSubject.next(theme);\n }\n\n /**\n * Apply partial theme updates (only specified colors will be updated)\n * @param partialTheme - Partial ThemeColors object with only the colors to update\n */\n applyPartialTheme(partialTheme: Partial<BrandingTypes.ThemeColors>): void {\n const root = document.documentElement;\n \n Object.entries(partialTheme).forEach(([camelName, value]) => {\n if (value !== undefined) {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n }\n });\n\n // Update the current theme with merged values\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, ...partialTheme };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Set a single color property\n * @param colorKey - The camelCase key of the color property\n * @param colorValue - The color value (hex, rgb, rgba, etc.)\n */\n setColorProperty(colorKey: keyof BrandingTypes.ThemeColors, colorValue: string): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.setProperty(cssVar, colorValue);\n\n // Update the current theme\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, [colorKey]: colorValue };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Get the current theme colors\n * @returns Current ThemeColors object\n */\n getCurrentTheme(): BrandingTypes.ThemeColors {\n return this.currentThemeSubject.value;\n }\n\n /**\n * Get a specific color value from the current theme\n * @param colorKey - The camelCase key of the color property\n * @returns The color value as string\n */\n getColorProperty(colorKey: keyof BrandingTypes.ThemeColors): string {\n return this.currentThemeSubject.value[colorKey];\n }\n\n /**\n * Reset theme to default values\n */\n resetToDefault(): void {\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Remove a specific CSS custom property from the root element\n * @param colorKey - The camelCase key of the color property to remove\n */\n removeColorProperty(colorKey: keyof BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.removeProperty(cssVar);\n }\n\n /**\n * Get all CSS custom properties currently set on the root element\n * @returns Object with CSS variable names as keys and their values\n */\n getAllCSSVariables(): Record<string, string> {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n const cssVars: Record<string, string> = {};\n\n // Get all CSS custom properties that start with our prefix\n for (let i = 0; i < computedStyle.length; i++) {\n const property = computedStyle[i];\n if (property.startsWith('--brand-') || \n property.startsWith('--text-') || \n property.startsWith('--bg-') || \n property.startsWith('--border-') || \n property.startsWith('--shadow-') || \n property.startsWith('--status-') || \n property.startsWith('--team-color-')) {\n cssVars[property] = computedStyle.getPropertyValue(property).trim();\n }\n }\n\n return cssVars;\n }\n\n /**\n * Apply theme with validation\n * @param theme - ThemeColors object to validate and apply\n * @returns boolean indicating if the theme was successfully applied\n */\n applyThemeWithValidation(theme: BrandingTypes.ThemeColors): boolean {\n try {\n // Basic validation - check if all required properties exist\n const requiredKeys = Object.keys(BrandingTypes.defaultTheme) as (keyof BrandingTypes.ThemeColors)[];\n const themeKeys = Object.keys(theme) as (keyof BrandingTypes.ThemeColors)[];\n \n const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));\n \n if (missingKeys.length > 0) {\n console.warn('DynamicThemeService: Missing theme properties:', missingKeys);\n // Apply with default values for missing keys\n const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };\n this.applyTheme(completeTheme);\n return false;\n }\n\n this.applyTheme(theme);\n return true;\n } catch (error) {\n console.error('DynamicThemeService: Error applying theme:', error);\n return false;\n }\n }\n\n /**\n * Convert camelCase to kebab-case for CSS custom properties\n * @param camelCase - The camelCase string to convert\n * @returns kebab-case string\n */\n private camelToKebabCase(camelCase: string): string {\n return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n\n /**\n * Convert kebab-case to camelCase\n * @param kebabCase - The kebab-case string to convert\n * @returns camelCase string\n */\n private kebabToCamelCase(kebabCase: string): string {\n return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\n }\n\n /**\n * Create a theme preset from current applied theme\n * @param presetName - Name for the theme preset\n * @returns Theme preset object\n */\n createThemePreset(presetName: string): { name: string; theme: BrandingTypes.ThemeColors } {\n return {\n name: presetName,\n theme: { ...this.getCurrentTheme() }\n };\n }\n\n /**\n * Export current theme as JSON string\n * @returns JSON string representation of current theme\n */\n exportThemeAsJSON(): string {\n return JSON.stringify(this.getCurrentTheme(), null, 2);\n }\n\n /**\n * Import theme from JSON string\n * @param jsonString - JSON string representation of theme\n * @returns boolean indicating success\n */\n importThemeFromJSON(jsonString: string): boolean {\n try {\n const theme = JSON.parse(jsonString) as BrandingTypes.ThemeColors;\n return this.applyThemeWithValidation(theme);\n } catch (error) {\n console.error('DynamicThemeService: Error importing theme from JSON:', error);\n return false;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DynamicThemeService } from './dynamic-theme.service';\n\n@NgModule({\n providers: [\n DynamicThemeService\n ]\n})\nexport class DynamicThemeModule {\n constructor(private themeService: DynamicThemeService) {\n // Initialize the theme service when module is loaded\n // This ensures the default theme is applied\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DynamicThemeService"],"mappings":"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"}