@breadstone/mosaik-themes 0.0.12-beta.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 (143) hide show
  1. package/Index.d.ts +25 -0
  2. package/Index.d.ts.map +1 -0
  3. package/Index.js +16 -0
  4. package/Index.js.map +1 -0
  5. package/LICENSE +21 -0
  6. package/Themes/___bootstrap-tokens.css +80 -0
  7. package/Themes/___cosmopolitan-tokens.css +208 -0
  8. package/Themes/___default-tokens.css +8 -0
  9. package/Themes/___fluent-tokens.css +19 -0
  10. package/Themes/___joy-tokens.css +496 -0
  11. package/Themes/___material-tokens.css +11 -0
  12. package/Themes/___retro-tokens.css +386 -0
  13. package/Themes/bootstrap-tokens.scss +78 -0
  14. package/Themes/bootstrap.scss +167 -0
  15. package/Themes/cosmopolitan-tokens.scss +206 -0
  16. package/Themes/cosmopolitan.scss +6362 -0
  17. package/Themes/default-tokens.scss +6 -0
  18. package/Themes/default.scss +5589 -0
  19. package/Themes/fluent-tokens.scss +17 -0
  20. package/Themes/fluent.scss +1641 -0
  21. package/Themes/joy-tokens.scss +494 -0
  22. package/Themes/joy.scss +7093 -0
  23. package/Themes/material-tokens.scss +9 -0
  24. package/Themes/material.scss +98 -0
  25. package/Themes/retro-tokens.scss +384 -0
  26. package/Themes/retro.scss +6856 -0
  27. package/Theming/BootstrapTheme.d.ts +10 -0
  28. package/Theming/BootstrapTheme.d.ts.map +1 -0
  29. package/Theming/BootstrapTheme.js +135 -0
  30. package/Theming/BootstrapTheme.js.map +1 -0
  31. package/Theming/CosmopolitanTheme.d.ts +11 -0
  32. package/Theming/CosmopolitanTheme.d.ts.map +1 -0
  33. package/Theming/CosmopolitanTheme.js +124 -0
  34. package/Theming/CosmopolitanTheme.js.map +1 -0
  35. package/Theming/FluentTheme.d.ts +2 -0
  36. package/Theming/FluentTheme.d.ts.map +1 -0
  37. package/Theming/FluentTheme.js +9 -0
  38. package/Theming/FluentTheme.js.map +1 -0
  39. package/Theming/JoyTheme.d.ts +11 -0
  40. package/Theming/JoyTheme.d.ts.map +1 -0
  41. package/Theming/JoyTheme.js +434 -0
  42. package/Theming/JoyTheme.js.map +1 -0
  43. package/Theming/MaterialTheme.d.ts +2 -0
  44. package/Theming/MaterialTheme.d.ts.map +1 -0
  45. package/Theming/MaterialTheme.js +9 -0
  46. package/Theming/MaterialTheme.js.map +1 -0
  47. package/Theming/RetroTheme.d.ts +11 -0
  48. package/Theming/RetroTheme.d.ts.map +1 -0
  49. package/Theming/RetroTheme.js +380 -0
  50. package/Theming/RetroTheme.js.map +1 -0
  51. package/Theming/ThemeFactory.d.ts +38 -0
  52. package/Theming/ThemeFactory.d.ts.map +1 -0
  53. package/Theming/ThemeFactory.js +58 -0
  54. package/Theming/ThemeFactory.js.map +1 -0
  55. package/Theming/ThemeGenerator.d.ts +27 -0
  56. package/Theming/ThemeGenerator.d.ts.map +1 -0
  57. package/Theming/ThemeGenerator.js +179 -0
  58. package/Theming/ThemeGenerator.js.map +1 -0
  59. package/Theming/ThemeObserver.d.ts +56 -0
  60. package/Theming/ThemeObserver.d.ts.map +1 -0
  61. package/Theming/ThemeObserver.js +134 -0
  62. package/Theming/ThemeObserver.js.map +1 -0
  63. package/Theming/Tokens/BootstrapTokens.d.ts +82 -0
  64. package/Theming/Tokens/BootstrapTokens.d.ts.map +1 -0
  65. package/Theming/Tokens/BootstrapTokens.js +82 -0
  66. package/Theming/Tokens/BootstrapTokens.js.map +1 -0
  67. package/Theming/Tokens/CosmopolitanTokens.d.ts +210 -0
  68. package/Theming/Tokens/CosmopolitanTokens.d.ts.map +1 -0
  69. package/Theming/Tokens/CosmopolitanTokens.js +210 -0
  70. package/Theming/Tokens/CosmopolitanTokens.js.map +1 -0
  71. package/Theming/Tokens/DefaultTokens.d.ts +10 -0
  72. package/Theming/Tokens/DefaultTokens.d.ts.map +1 -0
  73. package/Theming/Tokens/DefaultTokens.js +10 -0
  74. package/Theming/Tokens/DefaultTokens.js.map +1 -0
  75. package/Theming/Tokens/FluentTokens.d.ts +21 -0
  76. package/Theming/Tokens/FluentTokens.d.ts.map +1 -0
  77. package/Theming/Tokens/FluentTokens.js +21 -0
  78. package/Theming/Tokens/FluentTokens.js.map +1 -0
  79. package/Theming/Tokens/JoyTokens.d.ts +498 -0
  80. package/Theming/Tokens/JoyTokens.d.ts.map +1 -0
  81. package/Theming/Tokens/JoyTokens.js +498 -0
  82. package/Theming/Tokens/JoyTokens.js.map +1 -0
  83. package/Theming/Tokens/MaterialTokens.d.ts +13 -0
  84. package/Theming/Tokens/MaterialTokens.d.ts.map +1 -0
  85. package/Theming/Tokens/MaterialTokens.js +13 -0
  86. package/Theming/Tokens/MaterialTokens.js.map +1 -0
  87. package/Theming/Tokens/RetroTokens.d.ts +388 -0
  88. package/Theming/Tokens/RetroTokens.d.ts.map +1 -0
  89. package/Theming/Tokens/RetroTokens.js +388 -0
  90. package/Theming/Tokens/RetroTokens.js.map +1 -0
  91. package/Theming/Utils/CssAspectRatio.d.ts +14 -0
  92. package/Theming/Utils/CssAspectRatio.d.ts.map +1 -0
  93. package/Theming/Utils/CssAspectRatio.js +31 -0
  94. package/Theming/Utils/CssAspectRatio.js.map +1 -0
  95. package/Theming/Utils/CssColor.d.ts +21 -0
  96. package/Theming/Utils/CssColor.d.ts.map +1 -0
  97. package/Theming/Utils/CssColor.js +16 -0
  98. package/Theming/Utils/CssColor.js.map +1 -0
  99. package/Theming/Utils/CssLength.d.ts +47 -0
  100. package/Theming/Utils/CssLength.d.ts.map +1 -0
  101. package/Theming/Utils/CssLength.js +116 -0
  102. package/Theming/Utils/CssLength.js.map +1 -0
  103. package/Theming/Utils/CssShadow.d.ts +27 -0
  104. package/Theming/Utils/CssShadow.d.ts.map +1 -0
  105. package/Theming/Utils/CssShadow.js +45 -0
  106. package/Theming/Utils/CssShadow.js.map +1 -0
  107. package/Theming/Utils/CssTime.d.ts +18 -0
  108. package/Theming/Utils/CssTime.d.ts.map +1 -0
  109. package/Theming/Utils/CssTime.js +24 -0
  110. package/Theming/Utils/CssTime.js.map +1 -0
  111. package/Theming/Utils/ITheme.d.ts +27 -0
  112. package/Theming/Utils/ITheme.d.ts.map +1 -0
  113. package/Theming/Utils/ITheme.js +34 -0
  114. package/Theming/Utils/ITheme.js.map +1 -0
  115. package/Theming/Utils/IThemeElevation.d.ts +10 -0
  116. package/Theming/Utils/IThemeElevation.d.ts.map +1 -0
  117. package/Theming/Utils/IThemeElevation.js +3 -0
  118. package/Theming/Utils/IThemeElevation.js.map +1 -0
  119. package/Theming/Utils/IThemeLayout.d.ts +12 -0
  120. package/Theming/Utils/IThemeLayout.d.ts.map +1 -0
  121. package/Theming/Utils/IThemeLayout.js +3 -0
  122. package/Theming/Utils/IThemeLayout.js.map +1 -0
  123. package/Theming/Utils/IThemeMetadata.d.ts +15 -0
  124. package/Theming/Utils/IThemeMetadata.d.ts.map +1 -0
  125. package/Theming/Utils/IThemeMetadata.js +3 -0
  126. package/Theming/Utils/IThemeMetadata.js.map +1 -0
  127. package/Theming/Utils/IThemePalette.d.ts +17 -0
  128. package/Theming/Utils/IThemePalette.d.ts.map +1 -0
  129. package/Theming/Utils/IThemePalette.js +15 -0
  130. package/Theming/Utils/IThemePalette.js.map +1 -0
  131. package/Theming/Utils/IThemeScheme.d.ts +10 -0
  132. package/Theming/Utils/IThemeScheme.d.ts.map +1 -0
  133. package/Theming/Utils/IThemeScheme.js +3 -0
  134. package/Theming/Utils/IThemeScheme.js.map +1 -0
  135. package/Theming/Utils/IThemeTypography.d.ts +10 -0
  136. package/Theming/Utils/IThemeTypography.d.ts.map +1 -0
  137. package/Theming/Utils/IThemeTypography.js +3 -0
  138. package/Theming/Utils/IThemeTypography.js.map +1 -0
  139. package/Theming/Utils/IThemeTypographyFontType.d.ts +16 -0
  140. package/Theming/Utils/IThemeTypographyFontType.d.ts.map +1 -0
  141. package/Theming/Utils/IThemeTypographyFontType.js +3 -0
  142. package/Theming/Utils/IThemeTypographyFontType.js.map +1 -0
  143. package/package.json +29 -0
@@ -0,0 +1,179 @@
1
+ // #region Imports
2
+ import { TinyColor } from '@ctrl/tinycolor';
3
+ // #endregion
4
+ export class ThemeGenerator {
5
+ // #region Ctor
6
+ constructor() {
7
+ }
8
+ // #endregion
9
+ generatePalette(theme, baseColor, mode) {
10
+ if (mode === 'system') {
11
+ if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
12
+ mode = 'dark';
13
+ }
14
+ else {
15
+ mode = 'light';
16
+ }
17
+ }
18
+ let palette = {};
19
+ switch (theme.name) {
20
+ case 'material':
21
+ palette = this.generateMaterialPalette(baseColor, mode);
22
+ break;
23
+ case 'joy':
24
+ palette = this.generateJoyPalette(baseColor, mode);
25
+ break;
26
+ case 'retro':
27
+ palette = this.generateRetroPalette(baseColor, mode);
28
+ break;
29
+ case 'cosmopolitan':
30
+ palette = this.generateCosmopolitanPalette(baseColor, mode);
31
+ break;
32
+ default:
33
+ throw new Error(`Theme '${theme.name}' is not supported.`);
34
+ }
35
+ return palette;
36
+ }
37
+ generateScheme(theme, baseColor, mode) {
38
+ if (mode === 'system') {
39
+ if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
40
+ mode = 'dark';
41
+ }
42
+ else {
43
+ mode = 'light';
44
+ }
45
+ }
46
+ let scheme = {};
47
+ switch (theme.name) {
48
+ case 'material':
49
+ scheme = this.generateMaterialScheme(baseColor, mode);
50
+ break;
51
+ case 'joy':
52
+ scheme = this.generateJoyScheme(baseColor, mode);
53
+ break;
54
+ case 'retro':
55
+ scheme = this.generateRetroScheme(baseColor, mode);
56
+ break;
57
+ case 'cosmopolitan':
58
+ scheme = this.generateCosmopolitanScheme(baseColor, mode);
59
+ break;
60
+ default:
61
+ throw new Error(`Theme '${theme.name}' is not supported.`);
62
+ }
63
+ return scheme;
64
+ }
65
+ generateMaterialPalette(baseColor, mode) {
66
+ if (mode === 'light') {
67
+ const baseLight = new TinyColor('#ffffff');
68
+ const baseDark = new TinyColor('#000000');
69
+ const palette = {};
70
+ const steps = [0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
71
+ const amounts = [0, 12, 30, 50, 70, 85, 100, 87, 70, 54, 25];
72
+ steps.forEach((step, i) => {
73
+ const base = step <= 500 ? baseLight : baseDark;
74
+ palette[`${step}`] = new TinyColor(base).mix(baseColor, amounts[i])
75
+ .toHexString();
76
+ });
77
+ return palette;
78
+ }
79
+ const baseLight = new TinyColor('#ffffff');
80
+ const baseDark = new TinyColor('#000000');
81
+ const palette = {};
82
+ const steps = [0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
83
+ const amounts = [0, 15, 30, 45, 60, 75, 90, 100, 70, 54, 25];
84
+ steps.forEach((step, i) => {
85
+ const base = step <= 600 ? baseDark : baseLight;
86
+ palette[`${step}`] = new TinyColor(base).mix(baseColor, amounts[i])
87
+ .toHexString();
88
+ });
89
+ return palette;
90
+ }
91
+ generateMaterialScheme(baseColor, mode) {
92
+ const adjustColor = (color, amount) => `#${color.replace(/^#/, '')
93
+ .replace(/../g, (c) => `0${Math.min(255, Math.max(0, parseInt(c, 16) + amount)).toString(16)}`.slice(-2))}`;
94
+ return {
95
+ background: baseColor,
96
+ foreground: adjustColor(baseColor, mode === 'dark' ? 190 : -190),
97
+ highlight: adjustColor(baseColor, mode === 'dark' ? 30 : -30),
98
+ middlelight: adjustColor(baseColor, -50),
99
+ lowlight: adjustColor(baseColor, -80),
100
+ transparent: `${baseColor}00`,
101
+ semiTransparent: `${baseColor}aa`,
102
+ disabled: adjustColor(baseColor, -40),
103
+ contrast: adjustColor(baseColor, mode === 'dark' ? 190 : -190),
104
+ selection: adjustColor(baseColor, mode === 'dark' ? 30 : -30)
105
+ };
106
+ }
107
+ generateJoyPalette(baseColor, mode) {
108
+ // YES right 'joy' uses the same palette as 'material'
109
+ return this.generateMaterialPalette(baseColor, mode);
110
+ }
111
+ generateJoyScheme(baseColor, mode) {
112
+ // YES right 'joy' uses the same scheme as 'material'
113
+ return this.generateMaterialScheme(baseColor, mode);
114
+ }
115
+ generateRetroPalette(baseColor, mode) {
116
+ // YES right 'retro' uses the same palette as 'material'
117
+ return this.generateMaterialPalette(baseColor, mode);
118
+ }
119
+ generateRetroScheme(baseColor, mode) {
120
+ // YES right 'retro' uses the same scheme as 'material'
121
+ return this.generateMaterialScheme(baseColor, mode);
122
+ }
123
+ generateCosmopolitanPalette(baseColor, mode) {
124
+ if (mode === 'light') {
125
+ const baseLight = new TinyColor('#ffffff');
126
+ const baseDark = new TinyColor('#000000');
127
+ const palette = {};
128
+ const steps = [0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
129
+ const amounts = [0, 12, 30, 50, 70, 85, 100, 87, 70, 54, 25];
130
+ steps.forEach((step, i) => {
131
+ const base = step <= 500 ? baseLight : baseDark;
132
+ palette[`${step}`] = new TinyColor(base).mix(baseColor, amounts[i])
133
+ .toHexString();
134
+ });
135
+ return palette;
136
+ }
137
+ const baseLight = new TinyColor('#ffffff');
138
+ const baseDark = new TinyColor('#000000');
139
+ const palette = {};
140
+ const steps = [0, 100, 500];
141
+ const amounts = [0, 30, 100];
142
+ steps.forEach((step, i) => {
143
+ const base = step <= 600 ? baseDark : baseLight;
144
+ palette[`${step}`] = new TinyColor(base).mix(baseColor, amounts[i])
145
+ .toHexString();
146
+ });
147
+ return palette;
148
+ }
149
+ generateCosmopolitanScheme(baseColor, mode) {
150
+ // YES right 'retro' uses the same scheme as 'material'
151
+ return this.generateMaterialScheme(baseColor, mode);
152
+ }
153
+ }
154
+ /**
155
+ * @public
156
+ */
157
+ export class ThemeGeneratorServiceLocator {
158
+ // #region Fields
159
+ static _current = null;
160
+ // #endregion
161
+ // #region Properties
162
+ static get current() {
163
+ if (!ThemeGeneratorServiceLocator.isSet()) {
164
+ throw new Error('\'ThemeGenerator\' not set.');
165
+ }
166
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
167
+ return ThemeGeneratorServiceLocator._current;
168
+ }
169
+ // #endregion
170
+ // #region Methods
171
+ static isSet() {
172
+ return ThemeGeneratorServiceLocator._current !== null;
173
+ }
174
+ static set(current) {
175
+ ThemeGeneratorServiceLocator._current = current;
176
+ }
177
+ }
178
+ ThemeGeneratorServiceLocator.set(new ThemeGenerator());
179
+ //# sourceMappingURL=ThemeGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeGenerator.js","sourceRoot":"","sources":["../../src/Theming/ThemeGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type IEventEmitter } from '@breadstone/mosaik-elements';
2
+ /**
3
+ * Theme mode.
4
+ *
5
+ * @public
6
+ */
7
+ export type ThemeMode = 'system' | 'dark' | 'light';
8
+ /**
9
+ * Checks if the given value is a theme mode.
10
+ *
11
+ * @public
12
+ */
13
+ export declare function isThemeMode(value: unknown): value is ThemeMode;
14
+ /**
15
+ * Observer for applying themes.
16
+ *
17
+ * @public
18
+ */
19
+ export declare class ThemeObserver {
20
+ private readonly _themeChanged;
21
+ private readonly _themeModeChanged;
22
+ private _currentTheme;
23
+ private _currentThemeMode;
24
+ /**
25
+ * Constructs a new instance of the `ThemeObserver` class.
26
+ *
27
+ * @public
28
+ */
29
+ constructor();
30
+ /**
31
+ * Fires when the theme changes.
32
+ *
33
+ * @public
34
+ * @readonly
35
+ */
36
+ get themeChanged(): IEventEmitter<string>;
37
+ /**
38
+ * Fires when the theme mode changes.
39
+ *
40
+ * @public
41
+ * @readonly
42
+ */
43
+ get themeModeChanged(): IEventEmitter<ThemeMode>;
44
+ applyTheme(theme: string, themeMode: ThemeMode): void;
45
+ private observe;
46
+ }
47
+ /**
48
+ * @public
49
+ */
50
+ export declare class ThemeObserverServiceLocator {
51
+ private static _current;
52
+ static get current(): ThemeObserver;
53
+ static isSet(): boolean;
54
+ static set(current: ThemeObserver): void;
55
+ }
56
+ //# sourceMappingURL=ThemeObserver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeObserver.d.ts","sourceRoot":"","sources":["../../src/Theming/ThemeObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,6BAA6B,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;;GAIG;AACH,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAmB;IAI5C;;;;OAIG;;IAiBH;;;;;OAKG;IACH,IAAW,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,CAE/C;IAED;;;;;OAKG;IACH,IAAW,gBAAgB,IAAI,aAAa,CAAC,SAAS,CAAC,CAEtD;IAMM,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAmB5D,OAAO,CAAC,OAAO;CA2ClB;AAED;;GAEG;AACH,qBAAa,2BAA2B;IAIpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IAMrD,WAAkB,OAAO,IAAI,aAAa,CAOzC;WAMa,KAAK,IAAI,OAAO;WAIhB,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAMlD"}
@@ -0,0 +1,134 @@
1
+ import { PureEventEmitter } from '@breadstone/mosaik-elements';
2
+ /**
3
+ * Checks if the given value is a theme mode.
4
+ *
5
+ * @public
6
+ */
7
+ export function isThemeMode(value) {
8
+ return value === 'system' || value === 'dark' || value === 'light';
9
+ }
10
+ /**
11
+ * Observer for applying themes.
12
+ *
13
+ * @public
14
+ */
15
+ export class ThemeObserver {
16
+ // #region Fields
17
+ _themeChanged;
18
+ _themeModeChanged;
19
+ _currentTheme;
20
+ _currentThemeMode;
21
+ // #region Ctor
22
+ /**
23
+ * Constructs a new instance of the `ThemeObserver` class.
24
+ *
25
+ * @public
26
+ */
27
+ constructor() {
28
+ this._themeChanged = new PureEventEmitter();
29
+ this._themeModeChanged = new PureEventEmitter();
30
+ this._currentTheme = null;
31
+ this._currentThemeMode = null;
32
+ this.observe({
33
+ themeChange: (theme) => this._themeChanged.emit(theme),
34
+ themeModeChange: (themeMode) => this._themeModeChanged.emit(themeMode)
35
+ });
36
+ }
37
+ // #endregion
38
+ // #region Properties
39
+ /**
40
+ * Fires when the theme changes.
41
+ *
42
+ * @public
43
+ * @readonly
44
+ */
45
+ get themeChanged() {
46
+ return this._themeChanged;
47
+ }
48
+ /**
49
+ * Fires when the theme mode changes.
50
+ *
51
+ * @public
52
+ * @readonly
53
+ */
54
+ get themeModeChanged() {
55
+ return this._themeModeChanged;
56
+ }
57
+ // #endregion
58
+ // #region Methods
59
+ applyTheme(theme, themeMode) {
60
+ document.documentElement.setAttribute('theme', theme);
61
+ switch (themeMode) {
62
+ case 'dark':
63
+ case 'light':
64
+ document.documentElement.setAttribute('theme-mode', themeMode);
65
+ break;
66
+ case 'system':
67
+ default:
68
+ if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
69
+ document.documentElement.setAttribute('theme-mode', 'dark');
70
+ }
71
+ else {
72
+ document.documentElement.setAttribute('theme-mode', 'light');
73
+ }
74
+ break;
75
+ }
76
+ }
77
+ observe(cb) {
78
+ this._currentTheme = document.documentElement.getAttribute('theme');
79
+ this._currentThemeMode = document.documentElement.getAttribute('theme-mode');
80
+ const observer = new MutationObserver((mutations) => {
81
+ mutations.forEach((mutation) => {
82
+ if (mutation.type === 'attributes') {
83
+ if (mutation.attributeName === 'theme') {
84
+ const theme = document.documentElement.getAttribute('theme');
85
+ if (this._currentTheme !== theme) {
86
+ this._currentTheme = theme;
87
+ cb.themeChange(theme);
88
+ }
89
+ }
90
+ if (mutation.attributeName === 'theme-mode') {
91
+ const themeMode = document.documentElement.getAttribute('theme-mode');
92
+ if (!isThemeMode(themeMode)) {
93
+ throw new Error(`Invalid theme mode: ${String(themeMode)}`);
94
+ }
95
+ if (this._currentThemeMode !== themeMode) {
96
+ this._currentThemeMode = themeMode;
97
+ cb.themeModeChange(themeMode);
98
+ }
99
+ }
100
+ }
101
+ });
102
+ });
103
+ observer.observe(document.documentElement, {
104
+ attributes: true,
105
+ attributeFilter: ['theme', 'theme-mode']
106
+ });
107
+ }
108
+ }
109
+ /**
110
+ * @public
111
+ */
112
+ export class ThemeObserverServiceLocator {
113
+ // #region Fields
114
+ static _current = null;
115
+ // #endregion
116
+ // #region Properties
117
+ static get current() {
118
+ if (!ThemeObserverServiceLocator.isSet()) {
119
+ throw new Error('\'ThemeObserver\' not set.');
120
+ }
121
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
122
+ return ThemeObserverServiceLocator._current;
123
+ }
124
+ // #endregion
125
+ // #region Methods
126
+ static isSet() {
127
+ return ThemeObserverServiceLocator._current !== null;
128
+ }
129
+ static set(current) {
130
+ ThemeObserverServiceLocator._current = current;
131
+ }
132
+ }
133
+ ThemeObserverServiceLocator.set(new ThemeObserver());
134
+ //# sourceMappingURL=ThemeObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeObserver.js","sourceRoot":"","sources":["../../src/Theming/ThemeObserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ export declare const NAME = "bootstrap";
5
+ export declare const FONT_FAMILY = "'Inter', Roboto, Helvetica, sans-serif";
6
+ export declare const LAYOUT_RADIUS = "12px";
7
+ export declare const LAYOUT_SPACE = "8px";
8
+ export declare const LAYOUT_THICKNESS = "2px";
9
+ export declare const COLOR_LIGHT_PRIMARY_100 = "#cfe2ff";
10
+ export declare const COLOR_LIGHT_PRIMARY_200 = "#9ec5fe";
11
+ export declare const COLOR_LIGHT_PRIMARY_300 = "#6ea8fe";
12
+ export declare const COLOR_LIGHT_PRIMARY_400 = "#3d8bfd";
13
+ export declare const COLOR_LIGHT_PRIMARY_500 = "#0d6efd";
14
+ export declare const COLOR_LIGHT_PRIMARY_600 = "#0a58ca";
15
+ export declare const COLOR_LIGHT_PRIMARY_700 = "#084298";
16
+ export declare const COLOR_LIGHT_PRIMARY_800 = "#052c65";
17
+ export declare const COLOR_LIGHT_PRIMARY_900 = "#031633";
18
+ export declare const COLOR_LIGHT_SECONDARY_100 = "#f8f9fa";
19
+ export declare const COLOR_LIGHT_SECONDARY_200 = "#e9ecef";
20
+ export declare const COLOR_LIGHT_SECONDARY_300 = "#dee2e6";
21
+ export declare const COLOR_LIGHT_SECONDARY_400 = "#ced4da";
22
+ export declare const COLOR_LIGHT_SECONDARY_500 = "#adb5bd";
23
+ export declare const COLOR_LIGHT_SECONDARY_600 = "#6c757d";
24
+ export declare const COLOR_LIGHT_SECONDARY_700 = "#495057";
25
+ export declare const COLOR_LIGHT_SECONDARY_800 = "#343a40";
26
+ export declare const COLOR_LIGHT_SECONDARY_900 = "#212529";
27
+ export declare const COLOR_DARK_PRIMARY_100 = "#cfe2ff";
28
+ export declare const COLOR_DARK_PRIMARY_200 = "#9ec5fe";
29
+ export declare const COLOR_DARK_PRIMARY_300 = "#6ea8fe";
30
+ export declare const COLOR_DARK_PRIMARY_400 = "#3d8bfd";
31
+ export declare const COLOR_DARK_PRIMARY_500 = "#0d6efd";
32
+ export declare const COLOR_DARK_PRIMARY_600 = "#0a58ca";
33
+ export declare const COLOR_DARK_PRIMARY_700 = "#084298";
34
+ export declare const COLOR_DARK_PRIMARY_800 = "#052c65";
35
+ export declare const COLOR_DARK_PRIMARY_900 = "#031633";
36
+ export declare const COLOR_DARK_SECONDARY_100 = "#f8f9fa";
37
+ export declare const COLOR_DARK_SECONDARY_200 = "#e9ecef";
38
+ export declare const COLOR_DARK_SECONDARY_300 = "#dee2e6";
39
+ export declare const COLOR_DARK_SECONDARY_400 = "#ced4da";
40
+ export declare const COLOR_DARK_SECONDARY_500 = "#adb5bd";
41
+ export declare const COLOR_DARK_SECONDARY_600 = "#6c757d";
42
+ export declare const COLOR_DARK_SECONDARY_700 = "#495057";
43
+ export declare const COLOR_DARK_SECONDARY_800 = "#343a40";
44
+ export declare const COLOR_DARK_SECONDARY_900 = "#212529";
45
+ export declare const TYPOGRAPHY_HEADLINE1_FONT_SIZE = "80px";
46
+ export declare const TYPOGRAPHY_HEADLINE1_LINE_HEIGHT = "1.2";
47
+ export declare const TYPOGRAPHY_HEADLINE1_FONT_WEIGHT = "300";
48
+ export declare const TYPOGRAPHY_HEADLINE1_LETTER_SPACING = "0";
49
+ export declare const TYPOGRAPHY_HEADLINE1_TEXT_DECORATION = "none";
50
+ export declare const TYPOGRAPHY_HEADLINE1_TEXT_TRANSFORM = "none";
51
+ export declare const TYPOGRAPHY_HEADLINE2_FONT_SIZE = "72px";
52
+ export declare const TYPOGRAPHY_HEADLINE2_LINE_HEIGHT = "1.2";
53
+ export declare const TYPOGRAPHY_HEADLINE2_FONT_WEIGHT = "300";
54
+ export declare const TYPOGRAPHY_HEADLINE2_LETTER_SPACING = "0";
55
+ export declare const TYPOGRAPHY_HEADLINE2_TEXT_DECORATION = "none";
56
+ export declare const TYPOGRAPHY_HEADLINE2_TEXT_TRANSFORM = "none";
57
+ export declare const TYPOGRAPHY_HEADLINE3_FONT_SIZE = "64px";
58
+ export declare const TYPOGRAPHY_HEADLINE3_LINE_HEIGHT = "1.2";
59
+ export declare const TYPOGRAPHY_HEADLINE3_FONT_WEIGHT = "300";
60
+ export declare const TYPOGRAPHY_HEADLINE3_LETTER_SPACING = "0";
61
+ export declare const TYPOGRAPHY_HEADLINE3_TEXT_DECORATION = "none";
62
+ export declare const TYPOGRAPHY_HEADLINE3_TEXT_TRANSFORM = "none";
63
+ export declare const TYPOGRAPHY_HEADLINE4_FONT_SIZE = "56px";
64
+ export declare const TYPOGRAPHY_HEADLINE4_LINE_HEIGHT = "1.2";
65
+ export declare const TYPOGRAPHY_HEADLINE4_FONT_WEIGHT = "300";
66
+ export declare const TYPOGRAPHY_HEADLINE4_LETTER_SPACING = "0";
67
+ export declare const TYPOGRAPHY_HEADLINE4_TEXT_DECORATION = "none";
68
+ export declare const TYPOGRAPHY_HEADLINE4_TEXT_TRANSFORM = "none";
69
+ export declare const TYPOGRAPHY_HEADLINE5_FONT_SIZE = "48px";
70
+ export declare const TYPOGRAPHY_HEADLINE5_LINE_HEIGHT = "1.2";
71
+ export declare const TYPOGRAPHY_HEADLINE5_FONT_WEIGHT = "300";
72
+ export declare const TYPOGRAPHY_HEADLINE5_LETTER_SPACING = "0";
73
+ export declare const TYPOGRAPHY_HEADLINE5_TEXT_DECORATION = "none";
74
+ export declare const TYPOGRAPHY_HEADLINE5_TEXT_TRANSFORM = "none";
75
+ export declare const TYPOGRAPHY_HEADLINE6_FONT_SIZE = "40px";
76
+ export declare const TYPOGRAPHY_HEADLINE6_LINE_HEIGHT = "1.2";
77
+ export declare const TYPOGRAPHY_HEADLINE6_FONT_WEIGHT = "300";
78
+ export declare const TYPOGRAPHY_HEADLINE6_LETTER_SPACING = "0";
79
+ export declare const TYPOGRAPHY_HEADLINE6_TEXT_DECORATION = "none";
80
+ export declare const TYPOGRAPHY_HEADLINE6_TEXT_TRANSFORM = "none";
81
+ export declare const ELEVATION_NONE = "none";
82
+ //# sourceMappingURL=BootstrapTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BootstrapTokens.d.ts","sourceRoot":"","sources":["../../../src/Theming/Tokens/BootstrapTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ export const NAME = "bootstrap";
5
+ export const FONT_FAMILY = "'Inter', Roboto, Helvetica, sans-serif";
6
+ export const LAYOUT_RADIUS = "12px";
7
+ export const LAYOUT_SPACE = "8px";
8
+ export const LAYOUT_THICKNESS = "2px";
9
+ export const COLOR_LIGHT_PRIMARY_100 = "#cfe2ff";
10
+ export const COLOR_LIGHT_PRIMARY_200 = "#9ec5fe";
11
+ export const COLOR_LIGHT_PRIMARY_300 = "#6ea8fe";
12
+ export const COLOR_LIGHT_PRIMARY_400 = "#3d8bfd";
13
+ export const COLOR_LIGHT_PRIMARY_500 = "#0d6efd";
14
+ export const COLOR_LIGHT_PRIMARY_600 = "#0a58ca";
15
+ export const COLOR_LIGHT_PRIMARY_700 = "#084298";
16
+ export const COLOR_LIGHT_PRIMARY_800 = "#052c65";
17
+ export const COLOR_LIGHT_PRIMARY_900 = "#031633";
18
+ export const COLOR_LIGHT_SECONDARY_100 = "#f8f9fa";
19
+ export const COLOR_LIGHT_SECONDARY_200 = "#e9ecef";
20
+ export const COLOR_LIGHT_SECONDARY_300 = "#dee2e6";
21
+ export const COLOR_LIGHT_SECONDARY_400 = "#ced4da";
22
+ export const COLOR_LIGHT_SECONDARY_500 = "#adb5bd";
23
+ export const COLOR_LIGHT_SECONDARY_600 = "#6c757d";
24
+ export const COLOR_LIGHT_SECONDARY_700 = "#495057";
25
+ export const COLOR_LIGHT_SECONDARY_800 = "#343a40";
26
+ export const COLOR_LIGHT_SECONDARY_900 = "#212529";
27
+ export const COLOR_DARK_PRIMARY_100 = "#cfe2ff";
28
+ export const COLOR_DARK_PRIMARY_200 = "#9ec5fe";
29
+ export const COLOR_DARK_PRIMARY_300 = "#6ea8fe";
30
+ export const COLOR_DARK_PRIMARY_400 = "#3d8bfd";
31
+ export const COLOR_DARK_PRIMARY_500 = "#0d6efd";
32
+ export const COLOR_DARK_PRIMARY_600 = "#0a58ca";
33
+ export const COLOR_DARK_PRIMARY_700 = "#084298";
34
+ export const COLOR_DARK_PRIMARY_800 = "#052c65";
35
+ export const COLOR_DARK_PRIMARY_900 = "#031633";
36
+ export const COLOR_DARK_SECONDARY_100 = "#f8f9fa";
37
+ export const COLOR_DARK_SECONDARY_200 = "#e9ecef";
38
+ export const COLOR_DARK_SECONDARY_300 = "#dee2e6";
39
+ export const COLOR_DARK_SECONDARY_400 = "#ced4da";
40
+ export const COLOR_DARK_SECONDARY_500 = "#adb5bd";
41
+ export const COLOR_DARK_SECONDARY_600 = "#6c757d";
42
+ export const COLOR_DARK_SECONDARY_700 = "#495057";
43
+ export const COLOR_DARK_SECONDARY_800 = "#343a40";
44
+ export const COLOR_DARK_SECONDARY_900 = "#212529";
45
+ export const TYPOGRAPHY_HEADLINE1_FONT_SIZE = "80px";
46
+ export const TYPOGRAPHY_HEADLINE1_LINE_HEIGHT = "1.2";
47
+ export const TYPOGRAPHY_HEADLINE1_FONT_WEIGHT = "300";
48
+ export const TYPOGRAPHY_HEADLINE1_LETTER_SPACING = "0";
49
+ export const TYPOGRAPHY_HEADLINE1_TEXT_DECORATION = "none";
50
+ export const TYPOGRAPHY_HEADLINE1_TEXT_TRANSFORM = "none";
51
+ export const TYPOGRAPHY_HEADLINE2_FONT_SIZE = "72px";
52
+ export const TYPOGRAPHY_HEADLINE2_LINE_HEIGHT = "1.2";
53
+ export const TYPOGRAPHY_HEADLINE2_FONT_WEIGHT = "300";
54
+ export const TYPOGRAPHY_HEADLINE2_LETTER_SPACING = "0";
55
+ export const TYPOGRAPHY_HEADLINE2_TEXT_DECORATION = "none";
56
+ export const TYPOGRAPHY_HEADLINE2_TEXT_TRANSFORM = "none";
57
+ export const TYPOGRAPHY_HEADLINE3_FONT_SIZE = "64px";
58
+ export const TYPOGRAPHY_HEADLINE3_LINE_HEIGHT = "1.2";
59
+ export const TYPOGRAPHY_HEADLINE3_FONT_WEIGHT = "300";
60
+ export const TYPOGRAPHY_HEADLINE3_LETTER_SPACING = "0";
61
+ export const TYPOGRAPHY_HEADLINE3_TEXT_DECORATION = "none";
62
+ export const TYPOGRAPHY_HEADLINE3_TEXT_TRANSFORM = "none";
63
+ export const TYPOGRAPHY_HEADLINE4_FONT_SIZE = "56px";
64
+ export const TYPOGRAPHY_HEADLINE4_LINE_HEIGHT = "1.2";
65
+ export const TYPOGRAPHY_HEADLINE4_FONT_WEIGHT = "300";
66
+ export const TYPOGRAPHY_HEADLINE4_LETTER_SPACING = "0";
67
+ export const TYPOGRAPHY_HEADLINE4_TEXT_DECORATION = "none";
68
+ export const TYPOGRAPHY_HEADLINE4_TEXT_TRANSFORM = "none";
69
+ export const TYPOGRAPHY_HEADLINE5_FONT_SIZE = "48px";
70
+ export const TYPOGRAPHY_HEADLINE5_LINE_HEIGHT = "1.2";
71
+ export const TYPOGRAPHY_HEADLINE5_FONT_WEIGHT = "300";
72
+ export const TYPOGRAPHY_HEADLINE5_LETTER_SPACING = "0";
73
+ export const TYPOGRAPHY_HEADLINE5_TEXT_DECORATION = "none";
74
+ export const TYPOGRAPHY_HEADLINE5_TEXT_TRANSFORM = "none";
75
+ export const TYPOGRAPHY_HEADLINE6_FONT_SIZE = "40px";
76
+ export const TYPOGRAPHY_HEADLINE6_LINE_HEIGHT = "1.2";
77
+ export const TYPOGRAPHY_HEADLINE6_FONT_WEIGHT = "300";
78
+ export const TYPOGRAPHY_HEADLINE6_LETTER_SPACING = "0";
79
+ export const TYPOGRAPHY_HEADLINE6_TEXT_DECORATION = "none";
80
+ export const TYPOGRAPHY_HEADLINE6_TEXT_TRANSFORM = "none";
81
+ export const ELEVATION_NONE = "none";
82
+ //# sourceMappingURL=BootstrapTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BootstrapTokens.js","sourceRoot":"","sources":["../../../src/Theming/Tokens/BootstrapTokens.ts"],"names":[],"mappings":"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"}