hudini 0.7.0 → 0.9.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 (29) hide show
  1. package/dist/components/index.d.ts +3 -1
  2. package/dist/components/index.d.ts.map +1 -1
  3. package/dist/components/index.js +3 -1
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/components/section-header/index.d.ts +2 -0
  6. package/dist/components/section-header/index.d.ts.map +1 -0
  7. package/dist/components/section-header/index.js +2 -0
  8. package/dist/components/section-header/index.js.map +1 -0
  9. package/dist/components/section-header/section-header.d.ts +155 -0
  10. package/dist/components/section-header/section-header.d.ts.map +1 -0
  11. package/dist/components/section-header/section-header.js +323 -0
  12. package/dist/components/section-header/section-header.js.map +1 -0
  13. package/dist/components/section-header/section-header.spec.d.ts +2 -0
  14. package/dist/components/section-header/section-header.spec.d.ts.map +1 -0
  15. package/dist/components/section-header/section-header.spec.js +224 -0
  16. package/dist/components/section-header/section-header.spec.js.map +1 -0
  17. package/dist/components/text-button/index.d.ts +2 -0
  18. package/dist/components/text-button/index.d.ts.map +1 -0
  19. package/dist/components/text-button/index.js +2 -0
  20. package/dist/components/text-button/index.js.map +1 -0
  21. package/dist/components/text-button/text-button.d.ts +52 -0
  22. package/dist/components/text-button/text-button.d.ts.map +1 -0
  23. package/dist/components/text-button/text-button.js +217 -0
  24. package/dist/components/text-button/text-button.js.map +1 -0
  25. package/dist/components/text-button/text-button.spec.d.ts +2 -0
  26. package/dist/components/text-button/text-button.spec.d.ts.map +1 -0
  27. package/dist/components/text-button/text-button.spec.js +196 -0
  28. package/dist/components/text-button/text-button.spec.js.map +1 -0
  29. package/package.json +1 -1
@@ -0,0 +1,196 @@
1
+ /* eslint-disable sonarjs/no-duplicate-string */
2
+ /* eslint-disable max-lines-per-function */
3
+ /* eslint-disable no-magic-numbers */
4
+ import { Scene } from 'phaser';
5
+ import { describe, expect, it, vi } from 'vitest';
6
+ // Mock phaser-wind
7
+ vi.mock('phaser-wind', () => ({
8
+ Color: {
9
+ rgb: vi.fn((color) => `rgb-${color}`),
10
+ hex: vi.fn((color) => `hex-${color}`),
11
+ },
12
+ }));
13
+ // Mock the getPWFromScene utility
14
+ vi.mock('../../utils/get-pw-from-scene', () => ({
15
+ getPWFromScene: vi.fn(() => ({
16
+ fontSize: {
17
+ px: vi.fn((size) => {
18
+ const sizes = { xs: 12, sm: 14, md: 16, lg: 18, xl: 20 };
19
+ return sizes[size] || 16;
20
+ }),
21
+ },
22
+ spacing: {
23
+ px: vi.fn((spacing) => {
24
+ const spacings = { xs: 4, sm: 8, md: 12, lg: 16, xl: 20 };
25
+ return spacings[spacing] || 12;
26
+ }),
27
+ },
28
+ radius: {
29
+ px: vi.fn((radius) => {
30
+ const radiuses = { none: 0, sm: 4, md: 8, lg: 12, xl: 16, full: 9999 };
31
+ return radiuses[radius] || 8;
32
+ }),
33
+ },
34
+ font: {
35
+ family: vi.fn((font) => {
36
+ const fonts = {
37
+ sans: 'Arial, sans-serif',
38
+ serif: 'Georgia, serif',
39
+ mono: 'Courier, monospace',
40
+ };
41
+ return fonts[font] || 'Arial, sans-serif';
42
+ }),
43
+ },
44
+ })),
45
+ }));
46
+ // Mock Phaser
47
+ vi.mock('phaser', () => {
48
+ class MockText {
49
+ text;
50
+ style;
51
+ constructor(_x, _y, text, style) {
52
+ this.text = text;
53
+ this.style = style;
54
+ }
55
+ setText(text) {
56
+ this.text = text;
57
+ return this;
58
+ }
59
+ setOrigin() {
60
+ return this;
61
+ }
62
+ setFontSize(size) {
63
+ this.style['fontSize'] = size;
64
+ return this;
65
+ }
66
+ setFontFamily(family) {
67
+ this.style['fontFamily'] = family;
68
+ return this;
69
+ }
70
+ setColor(color) {
71
+ this.style['color'] = color;
72
+ return this;
73
+ }
74
+ getBounds() {
75
+ const charWidth = 10;
76
+ const lineHeight = parseInt(this.style['fontSize']) || 16;
77
+ return {
78
+ width: this.text.length * charWidth,
79
+ height: lineHeight,
80
+ };
81
+ }
82
+ }
83
+ class MockSprite {
84
+ // eslint-disable-next-line no-unused-vars
85
+ constructor(_x, _y, _texture) { }
86
+ setOrigin() {
87
+ return this;
88
+ }
89
+ setInteractive() {
90
+ return this;
91
+ }
92
+ setTexture() {
93
+ return this;
94
+ }
95
+ on() {
96
+ return this;
97
+ }
98
+ }
99
+ class MockGraphics {
100
+ fillStyle() {
101
+ return this;
102
+ }
103
+ fillRoundedRect() {
104
+ return this;
105
+ }
106
+ generateTexture() {
107
+ return this;
108
+ }
109
+ destroy() {
110
+ return this;
111
+ }
112
+ }
113
+ class MockContainer {
114
+ // eslint-disable-next-line no-unused-vars
115
+ constructor(_scene, _x, _y) {
116
+ this.scene = _scene;
117
+ }
118
+ add() {
119
+ return this;
120
+ }
121
+ scene;
122
+ }
123
+ class Scene {
124
+ add = {
125
+ text: vi.fn((x, y, text, style) => new MockText(x, y, text, style)),
126
+ sprite: vi.fn((x, y, texture) => new MockSprite(x, y, texture)),
127
+ graphics: vi.fn(() => new MockGraphics()),
128
+ };
129
+ tweens = { add: vi.fn() };
130
+ }
131
+ class BasePlugin {
132
+ constructor() { }
133
+ }
134
+ const GameObjects = { Container: MockContainer };
135
+ const Plugins = { BasePlugin };
136
+ return { GameObjects, Scene, Plugins };
137
+ });
138
+ import { TextButton } from './text-button';
139
+ describe('TextButton', () => {
140
+ it('should create a TextButton instance', () => {
141
+ const scene = new Scene();
142
+ const textButton = new TextButton({
143
+ scene,
144
+ x: 100,
145
+ y: 100,
146
+ text: 'Click Me',
147
+ });
148
+ expect(textButton).toBeInstanceOf(TextButton);
149
+ });
150
+ it('should create with custom properties', () => {
151
+ const scene = new Scene();
152
+ const textButton = new TextButton({
153
+ scene,
154
+ x: 100,
155
+ y: 100,
156
+ text: 'Custom Button',
157
+ textSize: 'lg',
158
+ backgroundColor: 'red',
159
+ textColor: 'white',
160
+ borderRadius: 'lg',
161
+ margin: '4',
162
+ });
163
+ expect(textButton).toBeInstanceOf(TextButton);
164
+ });
165
+ it('should support method chaining', () => {
166
+ const scene = new Scene();
167
+ const textButton = new TextButton({
168
+ scene,
169
+ x: 100,
170
+ y: 100,
171
+ text: 'Test',
172
+ });
173
+ const result = textButton
174
+ .setText('Chained')
175
+ .setTextSize('lg')
176
+ .setBackgroundColor('green')
177
+ .setBorderRadius('lg')
178
+ .setMargin('4');
179
+ expect(result).toBe(textButton);
180
+ });
181
+ it('should handle borderRadius full correctly', () => {
182
+ const scene = new Scene();
183
+ const textButton = new TextButton({
184
+ scene,
185
+ x: 100,
186
+ y: 100,
187
+ text: 'Full Radius Test',
188
+ borderRadius: 'full',
189
+ });
190
+ expect(textButton).toBeInstanceOf(TextButton);
191
+ // Test setBorderRadius with 'full'
192
+ const result = textButton.setBorderRadius('full');
193
+ expect(result).toBe(textButton);
194
+ });
195
+ });
196
+ //# sourceMappingURL=text-button.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-button.spec.js","sourceRoot":"","sources":["../../../src/components/text-button/text-button.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hudini",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "🎩 Magical Phaser UI components - Reusable HUD elements for game development. Is magic, like a wizard",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",