phaser-wind 0.1.0 → 0.2.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 (44) hide show
  1. package/README.md +243 -10
  2. package/dist/color/color-picker.d.ts +12 -2
  3. package/dist/color/color-picker.d.ts.map +1 -1
  4. package/dist/color/color-picker.js +59 -2
  5. package/dist/color/color-picker.js.map +1 -1
  6. package/dist/color/color-picker.spec.js +19 -0
  7. package/dist/color/color-picker.spec.js.map +1 -1
  8. package/dist/examples/nested-theme-example.d.ts +28 -0
  9. package/dist/examples/nested-theme-example.d.ts.map +1 -0
  10. package/dist/examples/nested-theme-example.js +313 -0
  11. package/dist/examples/nested-theme-example.js.map +1 -0
  12. package/dist/examples/usage-example.d.ts +17 -0
  13. package/dist/examples/usage-example.d.ts.map +1 -0
  14. package/dist/examples/usage-example.js +158 -0
  15. package/dist/examples/usage-example.js.map +1 -0
  16. package/dist/font/font-picker.d.ts +93 -0
  17. package/dist/font/font-picker.d.ts.map +1 -0
  18. package/dist/font/font-picker.js +212 -0
  19. package/dist/font/font-picker.js.map +1 -0
  20. package/dist/font/index.d.ts +1 -0
  21. package/dist/font/index.d.ts.map +1 -1
  22. package/dist/font/index.js +1 -0
  23. package/dist/font/index.js.map +1 -1
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/theme/index.d.ts +3 -0
  29. package/dist/theme/index.d.ts.map +1 -0
  30. package/dist/theme/index.js +3 -0
  31. package/dist/theme/index.js.map +1 -0
  32. package/dist/theme/theme-config.d.ts +162 -0
  33. package/dist/theme/theme-config.d.ts.map +1 -0
  34. package/dist/theme/theme-config.js +196 -0
  35. package/dist/theme/theme-config.js.map +1 -0
  36. package/dist/theme/theme-manager.d.ts +96 -0
  37. package/dist/theme/theme-manager.d.ts.map +1 -0
  38. package/dist/theme/theme-manager.js +171 -0
  39. package/dist/theme/theme-manager.js.map +1 -0
  40. package/dist/theme/type.d.ts +1 -0
  41. package/dist/theme/type.d.ts.map +1 -0
  42. package/dist/theme/type.js +2 -0
  43. package/dist/theme/type.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,313 @@
1
+ /* eslint-disable max-lines */
2
+ /* eslint-disable max-lines-per-function */
3
+ /* eslint-disable no-console */
4
+ /* eslint-disable sonarjs/no-duplicate-string */
5
+ /* eslint-disable no-magic-numbers */
6
+ /**
7
+ * Example usage of Phaser Wind with nested theme structure
8
+ * This file demonstrates the new complex theme system
9
+ */
10
+ import Phaser from 'phaser';
11
+ import { ColorPicker, EffectPicker, FontPicker, FontSizePicker, SpacingPicker, ThemeManager, TypographyPicker, createTheme, defaultDarkTheme, defaultLightTheme, } from '..';
12
+ // Example 1: Creating complex nested theme
13
+ export const createGameTheme = () => createTheme({
14
+ fonts: {
15
+ primary: 'Inter, system-ui, sans-serif',
16
+ secondary: 'Roboto, Arial, sans-serif',
17
+ display: 'Orbitron, monospace', // Sci-fi font for game
18
+ ui: 'Poppins, sans-serif',
19
+ },
20
+ colors: {
21
+ // Brand colors
22
+ primary: 'purple-600',
23
+ secondary: 'cyan-500',
24
+ accent: 'yellow-400',
25
+ // Game-specific colors
26
+ 'player-health': 'green-500',
27
+ 'player-health-low': 'red-500',
28
+ 'player-mana': 'blue-500',
29
+ 'enemy-health': 'red-600',
30
+ 'item-rare': 'purple-400',
31
+ 'item-epic': 'orange-400',
32
+ 'item-legendary': 'yellow-400',
33
+ // UI colors
34
+ 'ui-background': 'slate-900',
35
+ 'ui-panel': 'slate-800',
36
+ 'ui-button': 'slate-700',
37
+ 'ui-button-hover': 'slate-600',
38
+ 'ui-text': 'white',
39
+ 'ui-text-muted': 'slate-400',
40
+ // Feedback colors
41
+ success: 'green-400',
42
+ warning: 'yellow-400',
43
+ error: 'red-400',
44
+ info: 'blue-400',
45
+ },
46
+ spacing: {
47
+ xs: 4,
48
+ sm: 8,
49
+ md: 16,
50
+ lg: 24,
51
+ xl: 32,
52
+ xxl: 48,
53
+ huge: 64,
54
+ massive: 96,
55
+ },
56
+ typography: {
57
+ 'title-huge': {
58
+ fontSize: '6xl',
59
+ fontFamily: 'fonts.display', // Reference to fonts.display
60
+ fontWeight: 700,
61
+ lineHeight: 1.1,
62
+ },
63
+ 'title-large': {
64
+ fontSize: '4xl',
65
+ fontFamily: 'fonts.display',
66
+ fontWeight: 600,
67
+ lineHeight: 1.2,
68
+ },
69
+ heading: {
70
+ fontSize: '2xl',
71
+ fontFamily: 'fonts.ui',
72
+ fontWeight: 500,
73
+ lineHeight: 1.3,
74
+ },
75
+ body: {
76
+ fontSize: 'md',
77
+ fontFamily: 'fonts.primary',
78
+ fontWeight: 400,
79
+ lineHeight: 1.5,
80
+ },
81
+ caption: {
82
+ fontSize: 'sm',
83
+ fontFamily: 'fonts.primary',
84
+ fontWeight: 400,
85
+ lineHeight: 1.4,
86
+ },
87
+ },
88
+ effects: {
89
+ 'glow-primary': {
90
+ blur: 8,
91
+ offsetX: 0,
92
+ offsetY: 0,
93
+ color: 'colors.primary', // Reference to colors.primary
94
+ alpha: 0.6,
95
+ },
96
+ 'shadow-ui': {
97
+ blur: 4,
98
+ offsetX: 0,
99
+ offsetY: 2,
100
+ color: 'black',
101
+ alpha: 0.3,
102
+ },
103
+ 'shadow-heavy': {
104
+ blur: 16,
105
+ offsetX: 0,
106
+ offsetY: 8,
107
+ color: 'black',
108
+ alpha: 0.4,
109
+ },
110
+ },
111
+ // Custom category
112
+ animations: {
113
+ 'fade-duration': 300,
114
+ 'slide-duration': 400,
115
+ 'bounce-intensity': 1.2,
116
+ },
117
+ });
118
+ // Example 2: Using the new theme system
119
+ export class AdvancedGameScene extends Phaser.Scene {
120
+ create() {
121
+ // Initialize custom theme
122
+ const gameTheme = createGameTheme();
123
+ ThemeManager.init(gameTheme);
124
+ this.createBackground();
125
+ this.createHUD();
126
+ this.createGameElements();
127
+ this.createUI();
128
+ }
129
+ createBackground() {
130
+ // Create gradient background using theme colors
131
+ const bg = this.add.graphics();
132
+ bg.fillGradientStyle(ColorPicker.hex('ui-background'), // Top-left
133
+ ColorPicker.hex('ui-panel'), // Top-right
134
+ ColorPicker.hex('ui-panel'), // Bottom-left
135
+ ColorPicker.hex('ui-background') // Bottom-right
136
+ );
137
+ bg.fillRect(0, 0, this.cameras.main.width, this.cameras.main.height);
138
+ }
139
+ createHUD() {
140
+ const hudY = SpacingPicker.px('md');
141
+ // Game title using typography token
142
+ const titleStyle = TypographyPicker.phaserStyle('title-huge');
143
+ this.add
144
+ .text(this.cameras.main.centerX, hudY, 'CYBER QUEST', {
145
+ ...titleStyle,
146
+ color: ColorPicker.rgb('primary'),
147
+ })
148
+ .setOrigin(0.5);
149
+ // Player stats using spacing and colors from theme
150
+ this.createStatBar(SpacingPicker.px('lg'), hudY + SpacingPicker.px('xl'), 'Health', 'player-health', 0.8);
151
+ this.createStatBar(SpacingPicker.px('lg'), hudY + SpacingPicker.px('xl') + SpacingPicker.px('lg'), 'Mana', 'player-mana', 0.6);
152
+ }
153
+ createStatBar(x, y, label, colorKey, percentage) {
154
+ const width = 200;
155
+ const height = SpacingPicker.px('md');
156
+ // Label using typography
157
+ const labelStyle = TypographyPicker.phaserStyle('caption');
158
+ this.add.text(x, y - SpacingPicker.px('sm'), label, {
159
+ ...labelStyle,
160
+ color: ColorPicker.rgb('ui-text'),
161
+ });
162
+ // Background bar
163
+ this.add
164
+ .rectangle(x, y, width, height, ColorPicker.hex('ui-panel'))
165
+ .setOrigin(0, 0.5);
166
+ // Fill bar
167
+ const fillWidth = width * percentage;
168
+ this.add
169
+ .rectangle(x, y, fillWidth, height - 2, ColorPicker.hex(colorKey))
170
+ .setOrigin(0, 0.5);
171
+ // Text overlay
172
+ const bodyStyle = TypographyPicker.phaserStyle('body');
173
+ this.add
174
+ .text(x + width / 2, y, `${Math.round(percentage * 100)}%`, {
175
+ ...bodyStyle,
176
+ color: ColorPicker.rgb('ui-text'),
177
+ })
178
+ .setOrigin(0.5);
179
+ }
180
+ createGameElements() {
181
+ const centerX = this.cameras.main.centerX;
182
+ const centerY = this.cameras.main.centerY;
183
+ // Player character
184
+ const player = this.add.circle(centerX - SpacingPicker.px('massive'), centerY, SpacingPicker.px('lg'), ColorPicker.hex('primary'));
185
+ // Enemy
186
+ const enemy = this.add.circle(centerX + SpacingPicker.px('massive'), centerY, SpacingPicker.px('xl'), ColorPicker.hex('enemy-health'));
187
+ // Items with different rarities
188
+ this.createItem(centerX - SpacingPicker.px('lg'), centerY + SpacingPicker.px('huge'), 'item-rare');
189
+ this.createItem(centerX, centerY + SpacingPicker.px('huge'), 'item-epic');
190
+ this.createItem(centerX + SpacingPicker.px('lg'), centerY + SpacingPicker.px('huge'), 'item-legendary');
191
+ console.log('Game elements created:', { player, enemy });
192
+ }
193
+ createItem(x, y, rarityColor) {
194
+ // Item background
195
+ this.add.star(x, y, 5, SpacingPicker.px('sm'), SpacingPicker.px('md'), ColorPicker.hex(rarityColor));
196
+ // Item glow effect (simulated)
197
+ this.add.circle(x, y, SpacingPicker.px('lg'), ColorPicker.hex(rarityColor), 0.2);
198
+ }
199
+ createUI() {
200
+ const bottomY = this.cameras.main.height - SpacingPicker.px('xl');
201
+ // Action buttons
202
+ this.createButton(this.cameras.main.centerX - SpacingPicker.px('huge'), bottomY, 'ATTACK', 'error');
203
+ this.createButton(this.cameras.main.centerX, bottomY, 'DEFEND', 'warning');
204
+ this.createButton(this.cameras.main.centerX + SpacingPicker.px('huge'), bottomY, 'HEAL', 'success');
205
+ }
206
+ createButton(x, y, text, variant) {
207
+ const width = SpacingPicker.px('massive');
208
+ const height = SpacingPicker.px('xl');
209
+ // Button background
210
+ const button = this.add
211
+ .rectangle(x, y, width, height, ColorPicker.hex('ui-button'))
212
+ .setInteractive()
213
+ .on('pointerover', () => {
214
+ button.setFillStyle(ColorPicker.hex('ui-button-hover'));
215
+ })
216
+ .on('pointerout', () => {
217
+ button.setFillStyle(ColorPicker.hex('ui-button'));
218
+ })
219
+ .on('pointerdown', () => {
220
+ console.log(`${text} button clicked!`);
221
+ });
222
+ // Button text
223
+ const buttonStyle = TypographyPicker.phaserStyle('heading');
224
+ this.add
225
+ .text(x, y, text, {
226
+ ...buttonStyle,
227
+ color: ColorPicker.rgb(variant),
228
+ })
229
+ .setOrigin(0.5);
230
+ }
231
+ }
232
+ // Example 3: Theme switching and dynamic updates
233
+ export const demonstrateThemeSwitching = () => {
234
+ // Register multiple themes
235
+ ThemeManager.registerTheme('light', defaultLightTheme);
236
+ ThemeManager.registerTheme('dark', defaultDarkTheme);
237
+ ThemeManager.registerTheme('game', createGameTheme());
238
+ // Listen for theme changes
239
+ const unsubscribe = ThemeManager.onThemeChange(newTheme => {
240
+ console.log('Theme changed!', {
241
+ fonts: Object.keys(newTheme.fonts ?? {}),
242
+ colors: Object.keys(newTheme.colors ?? {}),
243
+ spacing: Object.keys(newTheme.spacing ?? {}),
244
+ });
245
+ });
246
+ // Start with game theme
247
+ ThemeManager.setTheme('game');
248
+ // Switch themes after delays
249
+ setTimeout(() => ThemeManager.setTheme('dark'), 2000);
250
+ setTimeout(() => ThemeManager.setTheme('light'), 4000);
251
+ setTimeout(() => ThemeManager.setTheme('game'), 6000);
252
+ // Clean up after demo
253
+ setTimeout(() => unsubscribe(), 8000);
254
+ };
255
+ // Example 4: Direct API usage
256
+ export const demonstrateAPIUsage = () => {
257
+ const gameTheme = createGameTheme();
258
+ ThemeManager.init(gameTheme);
259
+ console.log('=== Theme API Demo ===');
260
+ // Colors
261
+ console.log('Primary color (RGB):', ColorPicker.rgb('primary'));
262
+ console.log('Primary color (HEX):', ColorPicker.hex('primary'));
263
+ console.log('UI background:', ColorPicker.rgb('ui-background'));
264
+ // Fonts
265
+ console.log('Display font:', FontPicker.family('display'));
266
+ console.log('Available fonts:', FontPicker.getAvailableFonts());
267
+ // Spacing
268
+ console.log('Large spacing:', SpacingPicker.px('lg'));
269
+ console.log('Available spacing:', SpacingPicker.getAvailableSpacing());
270
+ // Typography
271
+ console.log('Title style:', TypographyPicker.style('title-huge'));
272
+ console.log('Phaser title style:', TypographyPicker.phaserStyle('title-huge'));
273
+ // Effects
274
+ console.log('Primary glow:', EffectPicker.config('glow-primary'));
275
+ // Direct theme access
276
+ console.log('Custom animation duration:', ThemeManager.getToken('animations.fade-duration'));
277
+ // Font size (still works)
278
+ console.log('XL font size:', FontSizePicker.css('xl'));
279
+ };
280
+ // Example 5: Creating themed components
281
+ export class ThemedButton {
282
+ background;
283
+ text;
284
+ constructor(scene, x, y, label, variant = 'primary') {
285
+ const width = SpacingPicker.px('massive');
286
+ const height = SpacingPicker.px('xl');
287
+ // Background with theme colors
288
+ this.background = scene.add
289
+ .rectangle(x, y, width, height, ColorPicker.hex('ui-button'))
290
+ .setInteractive()
291
+ .on('pointerover', () => this.onHover())
292
+ .on('pointerout', () => this.onLeave())
293
+ .on('pointerdown', () => this.onClick());
294
+ // Text with theme typography and colors
295
+ const textStyle = TypographyPicker.phaserStyle('heading');
296
+ this.text = scene.add
297
+ .text(x, y, label, {
298
+ ...textStyle,
299
+ color: ColorPicker.rgb(variant),
300
+ })
301
+ .setOrigin(0.5);
302
+ }
303
+ onHover() {
304
+ this.background.setFillStyle(ColorPicker.hex('ui-button-hover'));
305
+ }
306
+ onLeave() {
307
+ this.background.setFillStyle(ColorPicker.hex('ui-button'));
308
+ }
309
+ onClick() {
310
+ console.log(`Themed button clicked: ${this.text.text}`);
311
+ }
312
+ }
313
+ //# sourceMappingURL=nested-theme-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-theme-example.js","sourceRoot":"","sources":["../../src/examples/nested-theme-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Example usage of Phaser Wind with custom themes
3
+ * This file demonstrates how to set up and use custom themes
4
+ */
5
+ import Phaser from 'phaser';
6
+ export declare const setupDefaultThemes: () => void;
7
+ export declare const setupCustomTheme: () => void;
8
+ export declare class ExampleGameScene extends Phaser.Scene {
9
+ create(): void;
10
+ private createUI;
11
+ private createHealthBar;
12
+ private createPanel;
13
+ private createGameElements;
14
+ }
15
+ export declare const setupThemeSwitching: () => void;
16
+ export declare const setupExtendedTheme: () => void;
17
+ //# sourceMappingURL=usage-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-example.d.ts","sourceRoot":"","sources":["../../src/examples/usage-example.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAY5B,eAAO,MAAM,kBAAkB,QAAO,IAMrC,CAAC;AAGF,eAAO,MAAM,gBAAgB,QAAO,IAwBnC,CAAC;AAGF,qBAAa,gBAAiB,SAAQ,MAAM,CAAC,KAAK;IAChD,MAAM,IAAI,IAAI;IASd,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,kBAAkB;CAmB3B;AAGD,eAAO,MAAM,mBAAmB,QAAO,IAuBtC,CAAC;AAGF,eAAO,MAAM,kBAAkB,QAAO,IAgBrC,CAAC"}
@@ -0,0 +1,158 @@
1
+ /* eslint-disable no-console */
2
+ /* eslint-disable sonarjs/no-duplicate-string */
3
+ /* eslint-disable no-magic-numbers */
4
+ /**
5
+ * Example usage of Phaser Wind with custom themes
6
+ * This file demonstrates how to set up and use custom themes
7
+ */
8
+ import Phaser from 'phaser';
9
+ import { ColorPicker, FontSizePicker, ThemeManager, createTheme, defaultDarkTheme, defaultLightTheme, } from '..';
10
+ // Example 1: Using default themes
11
+ export const setupDefaultThemes = () => {
12
+ // Initialize with light theme
13
+ ThemeManager.init(defaultLightTheme);
14
+ // Register dark theme
15
+ ThemeManager.registerTheme('dark', defaultDarkTheme);
16
+ };
17
+ // Example 2: Creating custom theme
18
+ export const setupCustomTheme = () => {
19
+ const gameTheme = createTheme({
20
+ // Custom semantic tokens
21
+ primary: 'purple-600',
22
+ secondary: 'pink-500',
23
+ background: 'slate-900',
24
+ 'background-panel': 'slate-800',
25
+ text: 'white',
26
+ 'text-muted': 'slate-400',
27
+ accent: 'yellow-400',
28
+ // Game-specific tokens
29
+ 'player-health': 'green-500',
30
+ 'player-health-low': 'red-500',
31
+ 'enemy-health': 'red-600',
32
+ 'pickup-rare': 'purple-400',
33
+ 'pickup-common': 'blue-400',
34
+ 'ui-button': 'slate-700',
35
+ 'ui-button-hover': 'slate-600',
36
+ 'ui-danger': 'red-500',
37
+ 'ui-success': 'green-500',
38
+ });
39
+ ThemeManager.init(gameTheme);
40
+ };
41
+ // Example 3: Using in Phaser Scene
42
+ export class ExampleGameScene extends Phaser.Scene {
43
+ create() {
44
+ // Initialize custom theme first
45
+ setupCustomTheme();
46
+ // Now use theme tokens instead of hardcoded colors
47
+ this.createUI();
48
+ this.createGameElements();
49
+ }
50
+ createUI() {
51
+ // Background using theme token
52
+ this.add
53
+ .rectangle(0, 0, this.cameras.main.width, this.cameras.main.height, ColorPicker.hex('background'))
54
+ .setOrigin(0);
55
+ // Title using theme tokens
56
+ this.add
57
+ .text(400, 50, 'MY GAME', {
58
+ fontSize: FontSizePicker.css('4xl'),
59
+ color: ColorPicker.rgb('primary'),
60
+ })
61
+ .setOrigin(0.5);
62
+ // Health bar
63
+ this.createHealthBar(100, 100, 200, 20);
64
+ // UI Panel
65
+ this.createPanel(50, 150, 300, 200);
66
+ }
67
+ createHealthBar(x, y, width, height) {
68
+ // Background
69
+ this.add.rectangle(x, y, width, height, ColorPicker.hex('background-panel'));
70
+ // Health fill (80% health example)
71
+ const healthWidth = width * 0.8;
72
+ this.add.rectangle(x - (width - healthWidth) / 2, y, healthWidth, height - 4, ColorPicker.hex('player-health'));
73
+ // Health text
74
+ this.add
75
+ .text(x, y, '80 / 100', {
76
+ fontSize: FontSizePicker.css('sm'),
77
+ color: ColorPicker.rgb('text'),
78
+ })
79
+ .setOrigin(0.5);
80
+ }
81
+ createPanel(x, y, width, height) {
82
+ // Panel background
83
+ this.add.rectangle(x, y, width, height, ColorPicker.hex('background-panel'));
84
+ // Panel title
85
+ this.add
86
+ .text(x, y - height / 2 + 20, 'Inventory', {
87
+ fontSize: FontSizePicker.css('lg'),
88
+ color: ColorPicker.rgb('text'),
89
+ })
90
+ .setOrigin(0.5);
91
+ // Rare item
92
+ this.add.circle(x - 50, y, 15, ColorPicker.hex('pickup-rare'));
93
+ this.add
94
+ .text(x - 50, y + 25, 'Rare', {
95
+ fontSize: FontSizePicker.css('xs'),
96
+ color: ColorPicker.rgb('pickup-rare'),
97
+ })
98
+ .setOrigin(0.5);
99
+ // Common item
100
+ this.add.circle(x + 50, y, 15, ColorPicker.hex('pickup-common'));
101
+ this.add
102
+ .text(x + 50, y + 25, 'Common', {
103
+ fontSize: FontSizePicker.css('xs'),
104
+ color: ColorPicker.rgb('pickup-common'),
105
+ })
106
+ .setOrigin(0.5);
107
+ }
108
+ createGameElements() {
109
+ // Enemy with theme-based health
110
+ const enemy = this.add.circle(600, 300, 30, ColorPicker.hex('enemy-health'));
111
+ // Player with theme-based color
112
+ const player = this.add.circle(200, 300, 25, ColorPicker.hex('primary'));
113
+ // eslint-disable-next-line no-console
114
+ console.log(enemy, player);
115
+ // Pickup items with theme colors
116
+ this.add.star(400, 400, 5, 10, 20, ColorPicker.hex('pickup-rare'));
117
+ this.add.star(450, 400, 5, 8, 16, ColorPicker.hex('pickup-common'));
118
+ }
119
+ }
120
+ // Example 4: Dynamic theme switching
121
+ export const setupThemeSwitching = () => {
122
+ // Setup themes
123
+ ThemeManager.registerTheme('light', defaultLightTheme);
124
+ ThemeManager.registerTheme('dark', defaultDarkTheme);
125
+ const customTheme = createTheme({
126
+ primary: 'emerald-500',
127
+ background: 'emerald-950',
128
+ text: 'emerald-50',
129
+ 'background-panel': 'emerald-900',
130
+ });
131
+ ThemeManager.registerTheme('emerald', customTheme);
132
+ // Listen for theme changes
133
+ ThemeManager.onThemeChange(newTheme => {
134
+ console.log('Theme changed!', newTheme);
135
+ // Here you could update existing game objects with new colors
136
+ });
137
+ // Switch themes
138
+ ThemeManager.setTheme('dark');
139
+ setTimeout(() => ThemeManager.setTheme('emerald'), 2000);
140
+ setTimeout(() => ThemeManager.setTheme('light'), 4000);
141
+ };
142
+ // Example 5: Extending themes
143
+ export const setupExtendedTheme = () => {
144
+ ThemeManager.init(defaultLightTheme);
145
+ // Create variation of current theme
146
+ const winterTheme = ThemeManager.extendCurrentTheme({
147
+ primary: 'blue-400',
148
+ secondary: 'cyan-300',
149
+ accent: 'white',
150
+ background: 'blue-950',
151
+ text: 'blue-50',
152
+ 'special-snow': 'white',
153
+ 'special-ice': 'cyan-200',
154
+ });
155
+ ThemeManager.registerTheme('winter', winterTheme);
156
+ ThemeManager.setTheme('winter');
157
+ };
158
+ //# sourceMappingURL=usage-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-example.js","sourceRoot":"","sources":["../../src/examples/usage-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Font picker for accessing theme fonts and font families
3
+ */
4
+ export declare class FontPicker {
5
+ /**
6
+ * Get font family from theme
7
+ * @param key - Font key (e.g., 'primary', 'display') or full path (e.g., 'fonts.primary')
8
+ * @returns Font family string
9
+ */
10
+ static family(key: string): string;
11
+ /**
12
+ * Get all available font tokens from current theme
13
+ * @returns Array of font token keys
14
+ */
15
+ static getAvailableFonts(): string[];
16
+ }
17
+ /**
18
+ * Spacing picker for accessing theme spacing values
19
+ */
20
+ export declare class SpacingPicker {
21
+ /**
22
+ * Get spacing value in pixels from theme
23
+ * @param key - Spacing key (e.g., 'sm', 'lg') or full path (e.g., 'spacing.md')
24
+ * @returns Spacing value in pixels
25
+ */
26
+ static px(key: string): number;
27
+ /**
28
+ * Get all available spacing tokens from current theme
29
+ * @returns Array of spacing token keys
30
+ */
31
+ static getAvailableSpacing(): string[];
32
+ }
33
+ /**
34
+ * Typography picker for accessing complete typography styles from theme
35
+ */
36
+ export declare class TypographyPicker {
37
+ /**
38
+ * Get complete typography style from theme
39
+ * @param key - Typography key (e.g., 'heading', 'body') or full path
40
+ * @returns Typography style object
41
+ */
42
+ static style(key: string): {
43
+ fontSize?: string;
44
+ fontFamily?: string;
45
+ fontWeight?: number | string;
46
+ lineHeight?: number | string;
47
+ letterSpacing?: number | string;
48
+ };
49
+ /**
50
+ * Get Phaser-compatible text style from typography token
51
+ * @param key - Typography key
52
+ * @returns Object compatible with Phaser text styles
53
+ */
54
+ static phaserStyle(key: string): {
55
+ fontSize?: string;
56
+ fontFamily?: string;
57
+ fontStyle: string;
58
+ };
59
+ /**
60
+ * Get all available typography tokens from current theme
61
+ * @returns Array of typography token keys
62
+ */
63
+ static getAvailableTypography(): string[];
64
+ /**
65
+ * Resolve theme references in typography objects
66
+ * @param typographyObject - Typography style object
67
+ * @returns Resolved typography object
68
+ */
69
+ private static resolveTypographyReferences;
70
+ }
71
+ /**
72
+ * Effect picker for accessing theme effects like shadows
73
+ */
74
+ export declare class EffectPicker {
75
+ /**
76
+ * Get effect configuration from theme
77
+ * @param key - Effect key (e.g., 'shadow-md') or full path
78
+ * @returns Effect configuration object
79
+ */
80
+ static config(key: string): {
81
+ blur?: number;
82
+ offsetX?: number;
83
+ offsetY?: number;
84
+ color?: string;
85
+ alpha?: number;
86
+ };
87
+ /**
88
+ * Get all available effect tokens from current theme
89
+ * @returns Array of effect token keys
90
+ */
91
+ static getAvailableEffects(): string[];
92
+ }
93
+ //# sourceMappingURL=font-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-picker.d.ts","sourceRoot":"","sources":["../../src/font/font-picker.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,UAAU;IACrB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAuBlC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM,EAAE;CAOrC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkC9B;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAOvC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACjC;IA8BD;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;IAsBD;;;OAGG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAQzC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;CAuB3C;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAmBD;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAOvC"}