@breadstone/mosaik-themes 0.0.181 → 0.0.182

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 (178) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/index.cjs +2922 -0
  3. package/index.cjs.map +1 -0
  4. package/index.d.mts +540 -0
  5. package/index.d.ts +540 -0
  6. package/index.js +2903 -0
  7. package/index.js.map +1 -0
  8. package/package.json +9 -10
  9. package/tailwind/v3/index.d.ts +0 -1
  10. package/tailwind/v3/index.d.ts.map +1 -1
  11. package/tailwind/v3/index.js +0 -4
  12. package/tailwind/v3/index.js.map +1 -1
  13. package/Index.d.ts +0 -31
  14. package/Index.d.ts.map +0 -1
  15. package/Index.js +0 -21
  16. package/Index.js.map +0 -1
  17. package/Theming/BootstrapTheme.d.ts +0 -12
  18. package/Theming/BootstrapTheme.d.ts.map +0 -1
  19. package/Theming/BootstrapTheme.js +0 -138
  20. package/Theming/BootstrapTheme.js.map +0 -1
  21. package/Theming/CosmopolitanTheme.d.ts +0 -13
  22. package/Theming/CosmopolitanTheme.d.ts.map +0 -1
  23. package/Theming/CosmopolitanTheme.js +0 -127
  24. package/Theming/CosmopolitanTheme.js.map +0 -1
  25. package/Theming/FluentTheme.d.ts +0 -4
  26. package/Theming/FluentTheme.d.ts.map +0 -1
  27. package/Theming/FluentTheme.js +0 -12
  28. package/Theming/FluentTheme.js.map +0 -1
  29. package/Theming/JoyTheme.d.ts +0 -13
  30. package/Theming/JoyTheme.d.ts.map +0 -1
  31. package/Theming/JoyTheme.js +0 -437
  32. package/Theming/JoyTheme.js.map +0 -1
  33. package/Theming/MaterialTheme.d.ts +0 -4
  34. package/Theming/MaterialTheme.d.ts.map +0 -1
  35. package/Theming/MaterialTheme.js +0 -12
  36. package/Theming/MaterialTheme.js.map +0 -1
  37. package/Theming/MemphisTheme.d.ts +0 -13
  38. package/Theming/MemphisTheme.d.ts.map +0 -1
  39. package/Theming/MemphisTheme.js +0 -383
  40. package/Theming/MemphisTheme.js.map +0 -1
  41. package/Theming/Strategies/CosmopolitanThemeGeneratorStrategy.d.ts +0 -16
  42. package/Theming/Strategies/CosmopolitanThemeGeneratorStrategy.d.ts.map +0 -1
  43. package/Theming/Strategies/CosmopolitanThemeGeneratorStrategy.js +0 -48
  44. package/Theming/Strategies/CosmopolitanThemeGeneratorStrategy.js.map +0 -1
  45. package/Theming/Strategies/JoyThemeGeneratorStrategy.d.ts +0 -17
  46. package/Theming/Strategies/JoyThemeGeneratorStrategy.d.ts.map +0 -1
  47. package/Theming/Strategies/JoyThemeGeneratorStrategy.js +0 -27
  48. package/Theming/Strategies/JoyThemeGeneratorStrategy.js.map +0 -1
  49. package/Theming/Strategies/MaterialThemeGeneratorStrategy.d.ts +0 -15
  50. package/Theming/Strategies/MaterialThemeGeneratorStrategy.d.ts.map +0 -1
  51. package/Theming/Strategies/MaterialThemeGeneratorStrategy.js +0 -84
  52. package/Theming/Strategies/MaterialThemeGeneratorStrategy.js.map +0 -1
  53. package/Theming/Strategies/MemphisThemeGeneratorStrategy.d.ts +0 -17
  54. package/Theming/Strategies/MemphisThemeGeneratorStrategy.d.ts.map +0 -1
  55. package/Theming/Strategies/MemphisThemeGeneratorStrategy.js +0 -27
  56. package/Theming/Strategies/MemphisThemeGeneratorStrategy.js.map +0 -1
  57. package/Theming/Strategies/TailwindThemeGeneratorStrategy.d.ts +0 -48
  58. package/Theming/Strategies/TailwindThemeGeneratorStrategy.d.ts.map +0 -1
  59. package/Theming/Strategies/TailwindThemeGeneratorStrategy.js +0 -69
  60. package/Theming/Strategies/TailwindThemeGeneratorStrategy.js.map +0 -1
  61. package/Theming/Strategies/index.d.ts +0 -7
  62. package/Theming/Strategies/index.d.ts.map +0 -1
  63. package/Theming/Strategies/index.js +0 -8
  64. package/Theming/Strategies/index.js.map +0 -1
  65. package/Theming/Strategies/interfaces/IThemeGeneratorStrategy.d.ts +0 -27
  66. package/Theming/Strategies/interfaces/IThemeGeneratorStrategy.d.ts.map +0 -1
  67. package/Theming/Strategies/interfaces/IThemeGeneratorStrategy.js +0 -3
  68. package/Theming/Strategies/interfaces/IThemeGeneratorStrategy.js.map +0 -1
  69. package/Theming/ThemeFactory.d.ts +0 -41
  70. package/Theming/ThemeFactory.d.ts.map +0 -1
  71. package/Theming/ThemeFactory.js +0 -58
  72. package/Theming/ThemeFactory.js.map +0 -1
  73. package/Theming/ThemeGenerator.d.ts +0 -25
  74. package/Theming/ThemeGenerator.d.ts.map +0 -1
  75. package/Theming/ThemeGenerator.js +0 -74
  76. package/Theming/ThemeGenerator.js.map +0 -1
  77. package/Theming/ThemeObserver.d.ts +0 -56
  78. package/Theming/ThemeObserver.d.ts.map +0 -1
  79. package/Theming/ThemeObserver.js +0 -135
  80. package/Theming/ThemeObserver.js.map +0 -1
  81. package/Theming/Tokens/BootstrapTokens.d.ts +0 -93
  82. package/Theming/Tokens/BootstrapTokens.d.ts.map +0 -1
  83. package/Theming/Tokens/BootstrapTokens.js +0 -93
  84. package/Theming/Tokens/BootstrapTokens.js.map +0 -1
  85. package/Theming/Tokens/CosmopolitanTokens.d.ts +0 -215
  86. package/Theming/Tokens/CosmopolitanTokens.d.ts.map +0 -1
  87. package/Theming/Tokens/CosmopolitanTokens.js +0 -215
  88. package/Theming/Tokens/CosmopolitanTokens.js.map +0 -1
  89. package/Theming/Tokens/FluentTokens.d.ts +0 -32
  90. package/Theming/Tokens/FluentTokens.d.ts.map +0 -1
  91. package/Theming/Tokens/FluentTokens.js +0 -32
  92. package/Theming/Tokens/FluentTokens.js.map +0 -1
  93. package/Theming/Tokens/JoyTokens.d.ts +0 -502
  94. package/Theming/Tokens/JoyTokens.d.ts.map +0 -1
  95. package/Theming/Tokens/JoyTokens.js +0 -502
  96. package/Theming/Tokens/JoyTokens.js.map +0 -1
  97. package/Theming/Tokens/MaterialTokens.d.ts +0 -24
  98. package/Theming/Tokens/MaterialTokens.d.ts.map +0 -1
  99. package/Theming/Tokens/MaterialTokens.js +0 -24
  100. package/Theming/Tokens/MaterialTokens.js.map +0 -1
  101. package/Theming/Tokens/MemphisTokens.d.ts +0 -394
  102. package/Theming/Tokens/MemphisTokens.d.ts.map +0 -1
  103. package/Theming/Tokens/MemphisTokens.js +0 -394
  104. package/Theming/Tokens/MemphisTokens.js.map +0 -1
  105. package/Theming/Utils/CssAspectRatio.d.ts +0 -14
  106. package/Theming/Utils/CssAspectRatio.d.ts.map +0 -1
  107. package/Theming/Utils/CssAspectRatio.js +0 -31
  108. package/Theming/Utils/CssAspectRatio.js.map +0 -1
  109. package/Theming/Utils/CssColor.d.ts +0 -30
  110. package/Theming/Utils/CssColor.d.ts.map +0 -1
  111. package/Theming/Utils/CssColor.js +0 -23
  112. package/Theming/Utils/CssColor.js.map +0 -1
  113. package/Theming/Utils/CssLength.d.ts +0 -67
  114. package/Theming/Utils/CssLength.d.ts.map +0 -1
  115. package/Theming/Utils/CssLength.js +0 -149
  116. package/Theming/Utils/CssLength.js.map +0 -1
  117. package/Theming/Utils/CssShadow.d.ts +0 -27
  118. package/Theming/Utils/CssShadow.d.ts.map +0 -1
  119. package/Theming/Utils/CssShadow.js +0 -46
  120. package/Theming/Utils/CssShadow.js.map +0 -1
  121. package/Theming/Utils/CssTime.d.ts +0 -18
  122. package/Theming/Utils/CssTime.d.ts.map +0 -1
  123. package/Theming/Utils/CssTime.js +0 -24
  124. package/Theming/Utils/CssTime.js.map +0 -1
  125. package/Theming/Utils/ITheme.d.ts +0 -30
  126. package/Theming/Utils/ITheme.d.ts.map +0 -1
  127. package/Theming/Utils/ITheme.js +0 -37
  128. package/Theming/Utils/ITheme.js.map +0 -1
  129. package/Theming/Utils/IThemeElevation.d.ts +0 -10
  130. package/Theming/Utils/IThemeElevation.d.ts.map +0 -1
  131. package/Theming/Utils/IThemeElevation.js +0 -3
  132. package/Theming/Utils/IThemeElevation.js.map +0 -1
  133. package/Theming/Utils/IThemeLayout.d.ts +0 -12
  134. package/Theming/Utils/IThemeLayout.d.ts.map +0 -1
  135. package/Theming/Utils/IThemeLayout.js +0 -3
  136. package/Theming/Utils/IThemeLayout.js.map +0 -1
  137. package/Theming/Utils/IThemeMetadata.d.ts +0 -15
  138. package/Theming/Utils/IThemeMetadata.d.ts.map +0 -1
  139. package/Theming/Utils/IThemeMetadata.js +0 -3
  140. package/Theming/Utils/IThemeMetadata.js.map +0 -1
  141. package/Theming/Utils/IThemePalette.d.ts +0 -22
  142. package/Theming/Utils/IThemePalette.d.ts.map +0 -1
  143. package/Theming/Utils/IThemePalette.js +0 -18
  144. package/Theming/Utils/IThemePalette.js.map +0 -1
  145. package/Theming/Utils/IThemeScheme.d.ts +0 -10
  146. package/Theming/Utils/IThemeScheme.d.ts.map +0 -1
  147. package/Theming/Utils/IThemeScheme.js +0 -3
  148. package/Theming/Utils/IThemeScheme.js.map +0 -1
  149. package/Theming/Utils/IThemeTypography.d.ts +0 -10
  150. package/Theming/Utils/IThemeTypography.d.ts.map +0 -1
  151. package/Theming/Utils/IThemeTypography.js +0 -3
  152. package/Theming/Utils/IThemeTypography.js.map +0 -1
  153. package/Theming/Utils/IThemeTypographyFontType.d.ts +0 -16
  154. package/Theming/Utils/IThemeTypographyFontType.d.ts.map +0 -1
  155. package/Theming/Utils/IThemeTypographyFontType.js +0 -3
  156. package/Theming/Utils/IThemeTypographyFontType.js.map +0 -1
  157. package/tailwind/v3/factories/index.d.ts +0 -6
  158. package/tailwind/v3/factories/index.d.ts.map +0 -1
  159. package/tailwind/v3/factories/index.js +0 -24
  160. package/tailwind/v3/factories/index.js.map +0 -1
  161. /package/{Themes → themes}/___bootstrap-tokens.css +0 -0
  162. /package/{Themes → themes}/___cosmopolitan-tokens.css +0 -0
  163. /package/{Themes → themes}/___fluent-tokens.css +0 -0
  164. /package/{Themes → themes}/___joy-tokens.css +0 -0
  165. /package/{Themes → themes}/___material-tokens.css +0 -0
  166. /package/{Themes → themes}/___memphis-tokens.css +0 -0
  167. /package/{Themes → themes}/bootstrap-tokens.scss +0 -0
  168. /package/{Themes → themes}/bootstrap.scss +0 -0
  169. /package/{Themes → themes}/cosmopolitan-tokens.scss +0 -0
  170. /package/{Themes → themes}/cosmopolitan.scss +0 -0
  171. /package/{Themes → themes}/fluent-tokens.scss +0 -0
  172. /package/{Themes → themes}/fluent.scss +0 -0
  173. /package/{Themes → themes}/joy-tokens.scss +0 -0
  174. /package/{Themes → themes}/joy.scss +0 -0
  175. /package/{Themes → themes}/material-tokens.scss +0 -0
  176. /package/{Themes → themes}/material.scss +0 -0
  177. /package/{Themes → themes}/memphis-tokens.scss +0 -0
  178. /package/{Themes → themes}/memphis.scss +0 -0
package/index.d.mts ADDED
@@ -0,0 +1,540 @@
1
+ import { IEventEmitter } from '@breadstone/mosaik-elements';
2
+
3
+ /**
4
+ * @public
5
+ */
6
+ type CssRGBColor = `rgb(${number}, ${number}, ${number})`;
7
+ /**
8
+ * @public
9
+ */
10
+ type CssRGBAColor = `rgba(${number}, ${number}, ${number}, ${number})`;
11
+ /**
12
+ * @public
13
+ */
14
+ type CssHEXColor = `#${string}`;
15
+ /**
16
+ * @public
17
+ */
18
+ type CssNameColor = 'aliceblue' | 'antiquewhite' | 'aqua' | 'aquamarine' | 'azure' | 'beige' | 'bisque' | 'black' | 'blanchedalmond' | 'blue' | 'blueviolet' | 'brown' | 'burlywood' | 'cadetblue' | 'chartreuse' | 'chocolate' | 'coral' | 'cornflowerblue' | 'cornsilk' | 'crimson' | 'cyan' | 'darkblue' | 'darkcyan' | 'darkgoldenrod' | 'darkgray' | 'darkgreen' | 'darkgrey' | 'darkkhaki' | 'darkmagenta' | 'darkolivegreen' | 'darkorange' | 'darkorchid' | 'darkred' | 'darksalmon' | 'darkseagreen' | 'darkslateblue' | 'darkslategray' | 'darkslategrey' | 'darkturquoise' | 'darkviolet' | 'deeppink' | 'deepskyblue' | 'dimgray' | 'dimgrey' | 'dodgerblue' | 'firebrick' | 'floralwhite' | 'forestgreen' | 'fuchsia' | 'gainsboro' | 'ghostwhite' | 'gold' | 'goldenrod' | 'gray' | 'green' | 'greenyellow' | 'grey' | 'honeydew' | 'hotpink' | 'indianred' | 'indigo' | 'ivory' | 'khaki' | 'lavender' | 'lavenderblush' | 'lawngreen' | 'lemonchiffon' | 'lightblue' | 'lightcoral' | 'lightcyan' | 'lightgoldenrodyellow' | 'lightgray' | 'lightgreen' | 'lightgrey' | 'lightpink' | 'lightsalmon' | 'lightseagreen' | 'lightskyblue' | 'lightslategray' | 'lightslategrey' | 'lightsteelblue' | 'lightyellow' | 'lime' | 'limegreen' | 'linen' | 'magenta' | 'maroon' | 'mediumaquamarine' | 'mediumblue' | 'mediumorchid' | 'mediumpurple' | 'mediumseagreen' | 'mediumslateblue' | 'mediumspringgreen' | 'mediumturquoise' | 'mediumvioletred' | 'midnightblue' | 'mintcream' | 'mistyrose' | 'moccasin' | 'navajowhite' | 'navy' | 'oldlace' | 'olive' | 'olivedrab' | 'orange' | 'orangered' | 'orchid' | 'palegoldenrod' | 'palegreen' | 'paleturquoise' | 'palevioletred' | 'papayawhip' | 'peachpuff' | 'peru' | 'pink' | 'plum' | 'powderblue' | 'purple' | 'rebeccapurple' | 'red' | 'rosybrown' | 'royalblue' | 'saddlebrown' | 'salmon' | 'sandybrown' | 'seagreen' | 'seashell' | 'sienna' | 'silver' | 'skyblue' | 'slateblue' | 'slategray' | 'slategrey' | 'snow' | 'springgreen' | 'steelblue' | 'tan' | 'teal' | 'thistle' | 'tomato' | 'transparent' | 'turquoise' | 'violet' | 'wheat' | 'white' | 'whitesmoke' | 'yellow' | 'yellowgreen';
19
+ /**
20
+ * @public
21
+ */
22
+ type CssColor = CssRGBColor | CssRGBAColor | CssHEXColor;
23
+ /**
24
+ * @public
25
+ */
26
+ declare namespace CssColor {
27
+ /**
28
+ * @public
29
+ */
30
+ function isCssColor(value: unknown): value is CssColor;
31
+ }
32
+
33
+ /**
34
+ * Represents a dynamic color scheme.
35
+ *
36
+ * @public
37
+ */
38
+ interface IThemeScheme {
39
+ [key: string]: CssColor;
40
+ }
41
+
42
+ /**
43
+ * Represents a dynamic theme palette.
44
+ *
45
+ * @public
46
+ */
47
+ interface IThemePalette {
48
+ [key: string]: CssColor;
49
+ }
50
+ /**
51
+ * @public
52
+ */
53
+ declare namespace IThemePalette {
54
+ /**
55
+ * Checks if the value is a theme palette.
56
+ *
57
+ * @param value - The value to check.
58
+ * @returns The result.
59
+ */
60
+ function isThemePalette(value: unknown): value is IThemePalette;
61
+ }
62
+
63
+ /**
64
+ * @public
65
+ */
66
+ type CssLengthUnit = 'em' | 'ex' | 'ch' | 'rem' | 'vh' | 'vw' | 'vmin' | 'vmax' | 'px' | 'mm' | 'cm' | 'in' | 'pt' | 'pc' | 'mozmm';
67
+ /**
68
+ * @public
69
+ */
70
+ type CssLength = `${number}${CssLengthUnit | '%'}` | number | 'auto';
71
+ declare namespace CssLength {
72
+ /**
73
+ * Determines whether the given value is a valid CSS length.
74
+ *
75
+ * @public
76
+ * @param value - The value to check.
77
+ * @returns `true` if the value is a valid CSS length; otherwise, `false`.
78
+ */
79
+ function isCssLength(value: unknown): value is CssLength;
80
+ /**
81
+ * @public
82
+ */
83
+ function isAuto(value: unknown): value is Extract<CssLength, 'auto'>;
84
+ /**
85
+ * @public
86
+ */
87
+ function isPercentage(value: unknown): value is `${number}%`;
88
+ /**
89
+ * @public
90
+ */
91
+ function isLength(value: unknown): value is `${number}${CssLengthUnit}`;
92
+ function toNumber(value: CssLength): number;
93
+ /**
94
+ * Extracts the unit from a CSS length string.
95
+ *
96
+ * @public
97
+ * @param cssLength - The CSS length string to extract the unit from.
98
+ * @returns The unit as a `CssLengthUnit`.
99
+ * @throws Error if the input is not a valid CSS length.
100
+ */
101
+ function extractUnit(cssLength: `${number}${CssLengthUnit | '%'}`): CssLengthUnit;
102
+ /**
103
+ * Extracts the numeric value from a CSS length string.
104
+ *
105
+ * @public
106
+ * @param cssLength - The CSS length string to extract the value from.
107
+ * @returns The numeric value as a number.
108
+ * @throws Error if the input is not a valid CSS length.
109
+ */
110
+ function extractValue(cssLength: `${number}${CssLengthUnit | '%'}`): number;
111
+ /**
112
+ * Converts pixel values to rem units.
113
+ *
114
+ * @public
115
+ * @param pixel - The pixel value to convert.
116
+ * @returns The converted value in rem units.
117
+ */
118
+ function pxToRem(pixel: `${number}${Extract<CssLengthUnit, 'px'>}`): string;
119
+ /**
120
+ * Tries to parse a value into a `CssLength`.
121
+ *
122
+ * @public
123
+ * @param value - The value to parse.
124
+ * @param defaultUnit - The default unit to use if the value is a string without a unit.
125
+ * @returns The parsed `CssLength` or `undefined` if parsing fails.
126
+ */
127
+ function tryParse(value: unknown, defaultUnit?: CssLengthUnit): CssLength | undefined;
128
+ }
129
+
130
+ /**
131
+ * Represents a valid CSS box-shadow value (single or multiple).
132
+ *
133
+ * @public
134
+ */
135
+ type CssShadowSingle = 'none' | `${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}` | `inset ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}` | `${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}` | `inset ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}` | `${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}` | `inset ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${`${number}${Extract<CssLengthUnit, 'px'>}`} ${CssColor}`;
136
+ /**
137
+ * Represents a valid CSS box-shadow value, including multiple shadows.
138
+ *
139
+ * @public
140
+ */
141
+ type CssShadow = CssShadowSingle | `${CssShadowSingle}, ${CssShadowSingle}` | `${CssShadowSingle}, ${CssShadowSingle}, ${CssShadowSingle}`;
142
+ /**
143
+ * @public
144
+ */
145
+ declare namespace CssShadow {
146
+ /**
147
+ * Checks if the given value is a valid CSS box-shadow (single or multiple).
148
+ *
149
+ * @param value - The value to check.
150
+ * @returns `true` if the value is a valid CSS box-shadow, otherwise `false`.
151
+ */
152
+ function isCssShadow(value: unknown): value is CssShadow;
153
+ }
154
+
155
+ /**
156
+ * Represents dynamic shadow elevation styles.
157
+ *
158
+ * @public
159
+ */
160
+ interface IThemeElevation {
161
+ [key: string]: CssShadow;
162
+ }
163
+
164
+ /**
165
+ * Represents dynamic layout properties.
166
+ *
167
+ * @public
168
+ */
169
+ interface IThemeLayout {
170
+ thickness?: CssLength;
171
+ radius?: CssLength;
172
+ space?: CssLength;
173
+ }
174
+
175
+ /**
176
+ * Represents dynamic typography styles.
177
+ *
178
+ * @public
179
+ */
180
+ interface IThemeTypographyFontType {
181
+ fontFamily?: string;
182
+ fontSize: `${number}${Extract<CssLengthUnit, 'px'>}`;
183
+ lineHeight: `${number}${Extract<CssLengthUnit, 'px'>}` | `${number}`;
184
+ fontWeight: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
185
+ letterSpacing: `${number}${Extract<CssLengthUnit, 'px'>}` | `${number}` | 'normal';
186
+ textDecoration: 'none' | 'underline' | 'overline' | 'line-through';
187
+ textTransform: 'none' | 'capitalize' | 'uppercase' | 'lowercase';
188
+ }
189
+
190
+ /**
191
+ * Represents dynamic typography styles.
192
+ *
193
+ * @public
194
+ */
195
+ interface IThemeTypography {
196
+ [key: string]: IThemeTypographyFontType;
197
+ }
198
+
199
+ /**
200
+ * Represents a dynamic theme system.
201
+ *
202
+ * @public
203
+ */
204
+ interface ITheme {
205
+ name: string;
206
+ scheme: Record<string, IThemeScheme>;
207
+ palette: Record<string, Record<string, IThemePalette | CssColor>>;
208
+ fontFamily: string;
209
+ typography: IThemeTypography;
210
+ layout: IThemeLayout;
211
+ elevation: Record<string, IThemeElevation>;
212
+ }
213
+ /**
214
+ * @public
215
+ */
216
+ declare namespace ITheme {
217
+ function getScheme(theme: ITheme, mode: string): IThemeScheme;
218
+ function getSchemeColor(theme: ITheme, mode: string, key: string): CssColor;
219
+ function getPalette(theme: ITheme, mode: string, palette: string): IThemePalette;
220
+ function getPaletteColor(theme: ITheme, mode: string, palette: string, key: string): CssColor;
221
+ }
222
+
223
+ /**
224
+ * @public
225
+ */
226
+ interface IThemeMetadata {
227
+ theme: ITheme;
228
+ palettes: Array<string>;
229
+ paletteVariants: Array<string>;
230
+ schemes: Array<string>;
231
+ schemeVariants: Array<string>;
232
+ elevation: Array<string>;
233
+ elevationVariants: Array<string>;
234
+ typographies: Array<string>;
235
+ }
236
+
237
+ declare namespace BootstrapTheme {
238
+ const BOOTSTRAP_THEME: ITheme;
239
+ const BOOTSTRAP_THEME_PALETTES: string[];
240
+ const BOOTSTRAP_THEME_PALETTE_VARIANTS: string[];
241
+ const BOOTSTRAP_THEME_SCHEMES: string[];
242
+ const BOOTSTRAP_THEME_SCHEME_VARIANTS: string[];
243
+ const BOOTSTRAP_THEME_ELEVATION: string[];
244
+ const BOOTSTRAP_THEME_ELEVATION_VARIANTS: string[];
245
+ const BOOTSTRAP_THEME_METADATA: IThemeMetadata;
246
+ }
247
+
248
+ declare namespace JoyTheme {
249
+ const JOY_THEME: ITheme;
250
+ const JOY_THEME_PALETTES: string[];
251
+ const JOY_THEME_PALETTE_VARIANTS: string[];
252
+ const JOY_THEME_SCHEMES: string[];
253
+ const JOY_THEME_SCHEME_VARIANTS: string[];
254
+ const JOY_THEME_ELEVATION: string[];
255
+ const JOY_THEME_ELEVATION_VARIANTS: string[];
256
+ const JOY_THEME_TYPOGRAPHY: string[];
257
+ const JOY_THEME_METADATA: IThemeMetadata;
258
+ }
259
+
260
+ declare namespace MemphisTheme {
261
+ const MEMPHIS_THEME: ITheme;
262
+ const MEMPHIS_THEME_PALETTES: string[];
263
+ const MEMPHIS_THEME_PALETTE_VARIANTS: string[];
264
+ const MEMPHIS_THEME_SCHEMES: string[];
265
+ const MEMPHIS_THEME_SCHEME_VARIANTS: string[];
266
+ const MEMPHIS_THEME_ELEVATION: string[];
267
+ const MEMPHIS_THEME_ELEVATION_VARIANTS: string[];
268
+ const MEMPHIS_THEME_TYPOGRAPHY: string[];
269
+ const MEMPHIS_THEME_METADATA: IThemeMetadata;
270
+ }
271
+
272
+ declare namespace CosmopolitanTheme {
273
+ const COSMOPOLITAN_THEME: ITheme;
274
+ const COSMOPOLITAN_THEME_PALETTES: string[];
275
+ const COSMOPOLITAN_THEME_PALETTE_VARIANTS: string[];
276
+ const COSMOPOLITAN_THEME_SCHEMES: string[];
277
+ const COSMOPOLITAN_THEME_SCHEME_VARIANTS: string[];
278
+ const COSMOPOLITAN_THEME_ELEVATION: string[];
279
+ const COSMOPOLITAN_THEME_ELEVATION_VARIANTS: string[];
280
+ const COSMOPOLITAN_THEME_TYPOGRAPHY: string[];
281
+ const COSMOPOLITAN_THEME_METADATA: IThemeMetadata;
282
+ }
283
+
284
+ /**
285
+ * @public
286
+ */
287
+ type CssAspectRatio = 'auto' | `${number}` | `${number}/${number}`;
288
+ /**
289
+ * @public
290
+ */
291
+ declare namespace CssAspectRatio {
292
+ /**
293
+ * @public
294
+ */
295
+ function isCssAspectRatio(value: unknown): value is CssAspectRatio;
296
+ }
297
+
298
+ /**
299
+ * @public
300
+ */
301
+ type CssTimeUnit = 's' | 'ms';
302
+ /**
303
+ * @public
304
+ */
305
+ type CssTime = `${string}${CssTimeUnit}` | number | 0;
306
+ /**
307
+ * @public
308
+ */
309
+ declare namespace CssTime {
310
+ /**
311
+ * @public
312
+ */
313
+ function isCssTime(value: unknown): value is CssTime;
314
+ }
315
+
316
+ /**
317
+ * Theme mode.
318
+ *
319
+ * @public
320
+ */
321
+ type ThemeMode = 'system' | 'dark' | 'light';
322
+ /**
323
+ * Observer for applying themes.
324
+ *
325
+ * @public
326
+ */
327
+ declare class ThemeObserver {
328
+ private readonly _themeChanged;
329
+ private readonly _themeModeChanged;
330
+ private _currentTheme;
331
+ private _currentThemeMode;
332
+ /**
333
+ * Constructs a new instance of the `ThemeObserver` class.
334
+ *
335
+ * @public
336
+ */
337
+ constructor();
338
+ /**
339
+ * Fires when the theme changes.
340
+ *
341
+ * @public
342
+ * @readonly
343
+ */
344
+ get themeChanged(): IEventEmitter<string>;
345
+ /**
346
+ * Fires when the theme mode changes.
347
+ *
348
+ * @public
349
+ * @readonly
350
+ */
351
+ get themeModeChanged(): IEventEmitter<ThemeMode>;
352
+ applyTheme(theme: string, themeMode: ThemeMode): void;
353
+ private observe;
354
+ }
355
+ /**
356
+ * @public
357
+ */
358
+ declare class ThemeObserverServiceLocator {
359
+ private static _current;
360
+ static get current(): ThemeObserver;
361
+ static isSet(): boolean;
362
+ static set(current: ThemeObserver): void;
363
+ }
364
+
365
+ /**
366
+ * @public
367
+ */
368
+ declare class ThemeGenerator {
369
+ private readonly _strategies;
370
+ constructor();
371
+ generatePalette(theme: ITheme, baseColor: CssColor, mode: 'dark' | 'light' | 'system'): IThemePalette;
372
+ generateScheme(theme: ITheme, baseColor: CssColor, mode: 'dark' | 'light' | 'system'): IThemeScheme;
373
+ private resolveMode;
374
+ private getStrategy;
375
+ }
376
+ /**
377
+ * @public
378
+ */
379
+ declare class ThemeGeneratorServiceLocator {
380
+ private static _current;
381
+ static get current(): ThemeGenerator;
382
+ static isSet(): boolean;
383
+ static set(current: ThemeGenerator): void;
384
+ }
385
+
386
+ /**
387
+ * Strategy interface for theme-specific palette and scheme generation.
388
+ *
389
+ * @public
390
+ */
391
+ interface IThemeGeneratorStrategy {
392
+ /**
393
+ * Generates a color palette for the theme.
394
+ *
395
+ * @param baseColor - The base color to generate the palette from
396
+ * @param mode - The color mode (dark or light)
397
+ * @returns The generated palette
398
+ */
399
+ generatePalette(baseColor: CssColor, mode: 'dark' | 'light'): IThemePalette;
400
+ /**
401
+ * Generates a color scheme for the theme.
402
+ *
403
+ * @param baseColor - The base color to generate the scheme from
404
+ * @param mode - The color mode (dark or light)
405
+ * @returns The generated scheme
406
+ */
407
+ generateScheme(baseColor: CssColor, mode: 'dark' | 'light'): IThemeScheme;
408
+ }
409
+
410
+ /**
411
+ * Factory function type for creating theme generator strategies.
412
+ *
413
+ * @public
414
+ */
415
+ type ThemeGeneratorFactoryFn = () => IThemeGeneratorStrategy;
416
+
417
+ /**
418
+ * Material Design theme generator strategy.
419
+ *
420
+ * @public
421
+ */
422
+ declare class MaterialThemeGeneratorStrategy implements IThemeGeneratorStrategy {
423
+ constructor();
424
+ generatePalette(baseColor: CssColor, mode: 'dark' | 'light'): IThemePalette;
425
+ generateScheme(baseColor: CssColor, mode: 'dark' | 'light'): IThemeScheme;
426
+ }
427
+ /**
428
+ * Generates a Material theme generator strategy.
429
+ *
430
+ * @public
431
+ */
432
+ declare function createMaterialTheme(): ThemeGeneratorFactoryFn;
433
+
434
+ /**
435
+ * Joy UI theme generator strategy.
436
+ * Uses the same generation logic as Material Design.
437
+ *
438
+ * @public
439
+ */
440
+ declare class JoyThemeGeneratorStrategy implements IThemeGeneratorStrategy {
441
+ private readonly _materialStrategy;
442
+ constructor();
443
+ generatePalette(baseColor: CssColor, mode: 'dark' | 'light'): IThemePalette;
444
+ generateScheme(baseColor: CssColor, mode: 'dark' | 'light'): IThemeScheme;
445
+ }
446
+ /**
447
+ * Generates a Joy theme generator strategy.
448
+ *
449
+ * @public
450
+ */
451
+ declare function createJoyTheme(): ThemeGeneratorFactoryFn;
452
+
453
+ /**
454
+ * Memphis theme generator strategy.
455
+ * Uses the same generation logic as Material Design.
456
+ *
457
+ * @public
458
+ */
459
+ declare class MemphisThemeGeneratorStrategy implements IThemeGeneratorStrategy {
460
+ private readonly _materialStrategy;
461
+ constructor();
462
+ generatePalette(baseColor: CssColor, mode: 'dark' | 'light'): IThemePalette;
463
+ generateScheme(baseColor: CssColor, mode: 'dark' | 'light'): IThemeScheme;
464
+ }
465
+ /**
466
+ * Generates a Memphis theme generator strategy.
467
+ *
468
+ * @public
469
+ */
470
+ declare function createMemphisTheme(): ThemeGeneratorFactoryFn;
471
+
472
+ /**
473
+ * Cosmopolitan theme generator strategy.
474
+ *
475
+ * @public
476
+ */
477
+ declare class CosmopolitanThemeGeneratorStrategy implements IThemeGeneratorStrategy {
478
+ private readonly _materialStrategy;
479
+ constructor();
480
+ generatePalette(baseColor: CssColor, mode: 'dark' | 'light'): IThemePalette;
481
+ generateScheme(baseColor: CssColor, mode: 'dark' | 'light'): IThemeScheme;
482
+ }
483
+ /**
484
+ * Generates a Cosmopolitan theme generator strategy.
485
+ *
486
+ * @public
487
+ */
488
+ declare function createCosmopolitanTheme(): ThemeGeneratorFactoryFn;
489
+
490
+ /**
491
+ * Tailwind-like strategy.
492
+ *
493
+ * Generates a color palette with the following shade steps:
494
+ * 50, 100, 200, 300, 400, 500, 600, 700, 800, 900.
495
+ *
496
+ * Each returned color is a hex string (CssColor).
497
+ */
498
+ declare class TailwindThemeGeneratorStrategy implements IThemeGeneratorStrategy {
499
+ /**
500
+ * Generates a palette of shades based on a base/accent color.
501
+ *
502
+ * @param baseColor - The base/accent color (e.g. "#3498db")
503
+ * @param mode - 'light' or 'dark' mode: determines how light or dark the palette extremes are.
504
+ * @returns An IThemePalette mapping each shade step to a hex color.
505
+ *
506
+ * Example (light mode, baseColor = blue-ish):
507
+ * {
508
+ * "50": "#f5faff",
509
+ * "100": "#e1f3ff",
510
+ * ...
511
+ * "500": "#3498db",
512
+ * ...
513
+ * "900": "#0a2d4b"
514
+ * }
515
+ */
516
+ generatePalette(baseColor: CssColor, mode: 'light' | 'dark'): IThemePalette;
517
+ /**
518
+ * Generates a semantic color scheme for UI usage, based on the generated palette.
519
+ *
520
+ * @param baseColor - The base/accent color
521
+ * @param mode - 'light' or 'dark'
522
+ * @returns An IThemeScheme with semantic color roles.
523
+ *
524
+ * Returned keys:
525
+ * - background → shade "50"
526
+ * - foreground → shade "900"
527
+ * - primary → shade "500"
528
+ * - accent → shade "700"
529
+ * - muted → shade "300"
530
+ */
531
+ generateScheme(baseColor: CssColor, mode: 'light' | 'dark'): IThemeScheme;
532
+ }
533
+ /**
534
+ * Generates a Tailwind theme generator strategy.
535
+ *
536
+ * @public
537
+ */
538
+ declare function createTailwindTheme(): ThemeGeneratorFactoryFn;
539
+
540
+ export { BootstrapTheme, CosmopolitanTheme, CosmopolitanThemeGeneratorStrategy, CssAspectRatio, CssColor, type CssHEXColor, CssLength, type CssLengthUnit, type CssNameColor, type CssRGBAColor, type CssRGBColor, CssShadow, type CssShadowSingle, CssTime, type CssTimeUnit, ITheme, type IThemeElevation, type IThemeGeneratorStrategy, type IThemeLayout, type IThemeMetadata, IThemePalette, type IThemeScheme, type IThemeTypography, type IThemeTypographyFontType, JoyTheme, JoyThemeGeneratorStrategy, MaterialThemeGeneratorStrategy, MemphisTheme, MemphisThemeGeneratorStrategy, TailwindThemeGeneratorStrategy, ThemeGenerator, ThemeGeneratorServiceLocator, type ThemeMode, ThemeObserver, ThemeObserverServiceLocator, createCosmopolitanTheme, createJoyTheme, createMaterialTheme, createMemphisTheme, createTailwindTheme };