@hanzogui/themes 8.0.1 → 8.1.1

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 (79) hide show
  1. package/dist/cjs/brands.native.js.map +1 -1
  2. package/dist/cjs/componentThemeDefinitions.native.js.map +1 -1
  3. package/dist/cjs/generated-new.native.js.map +1 -1
  4. package/dist/cjs/generated-v3.native.js.map +1 -1
  5. package/dist/cjs/generated-v4-hanzogui.native.js.map +1 -1
  6. package/dist/cjs/generated-v4.native.js.map +1 -1
  7. package/dist/cjs/generated-v5-subtle.native.js.map +1 -1
  8. package/dist/cjs/generated-v5.native.js.map +1 -1
  9. package/dist/cjs/helpers.native.js.map +1 -1
  10. package/dist/cjs/index.native.js.map +1 -1
  11. package/dist/cjs/opacify.native.js.map +1 -1
  12. package/dist/cjs/palettes.native.js.map +1 -1
  13. package/dist/cjs/shadows.native.js.map +1 -1
  14. package/dist/cjs/subtleChildrenThemes.native.js.map +1 -1
  15. package/dist/cjs/templates.native.js.map +1 -1
  16. package/dist/cjs/themes-new.native.js.map +1 -1
  17. package/dist/cjs/themes-old.native.js.map +1 -1
  18. package/dist/cjs/themes.native.js.map +1 -1
  19. package/dist/cjs/tokens.native.js.map +1 -1
  20. package/dist/cjs/utils.native.js.map +1 -1
  21. package/dist/cjs/v3-themes.native.js.map +1 -1
  22. package/dist/cjs/v3-tokens.native.js.map +1 -1
  23. package/dist/cjs/v3.native.js.map +1 -1
  24. package/dist/cjs/v4-default.native.js.map +1 -1
  25. package/dist/cjs/v4-hanzogui.native.js.map +1 -1
  26. package/dist/cjs/v4-tokens.native.js.map +1 -1
  27. package/dist/cjs/v4.native.js.map +1 -1
  28. package/dist/cjs/v5-subtle.native.js.map +1 -1
  29. package/dist/cjs/v5-templates.native.js.map +1 -1
  30. package/dist/cjs/v5-themes-subtle.native.js.map +1 -1
  31. package/dist/cjs/v5-themes.native.js.map +1 -1
  32. package/dist/cjs/v5-tokens.native.js.map +1 -1
  33. package/dist/cjs/v5.native.js.map +1 -1
  34. package/dist/esm/brands.native.js.map +1 -1
  35. package/dist/esm/componentThemeDefinitions.native.js.map +1 -1
  36. package/dist/esm/generated-new.native.js.map +1 -1
  37. package/dist/esm/generated-v3.native.js.map +1 -1
  38. package/dist/esm/generated-v4-hanzogui.native.js.map +1 -1
  39. package/dist/esm/generated-v4.native.js.map +1 -1
  40. package/dist/esm/generated-v5-subtle.native.js.map +1 -1
  41. package/dist/esm/generated-v5.native.js.map +1 -1
  42. package/dist/esm/helpers.native.js.map +1 -1
  43. package/dist/esm/opacify.native.js.map +1 -1
  44. package/dist/esm/palettes.native.js.map +1 -1
  45. package/dist/esm/shadows.native.js.map +1 -1
  46. package/dist/esm/subtleChildrenThemes.native.js.map +1 -1
  47. package/dist/esm/templates.native.js.map +1 -1
  48. package/dist/esm/themes-new.native.js.map +1 -1
  49. package/dist/esm/themes-old.native.js.map +1 -1
  50. package/dist/esm/themes.native.js.map +1 -1
  51. package/dist/esm/tokens.native.js.map +1 -1
  52. package/dist/esm/utils.native.js.map +1 -1
  53. package/dist/esm/v3-themes.native.js.map +1 -1
  54. package/dist/esm/v3-tokens.native.js.map +1 -1
  55. package/dist/esm/v3.native.js.map +1 -1
  56. package/dist/esm/v4-default.native.js.map +1 -1
  57. package/dist/esm/v4-hanzogui.native.js.map +1 -1
  58. package/dist/esm/v4-tokens.native.js.map +1 -1
  59. package/dist/esm/v4.native.js.map +1 -1
  60. package/dist/esm/v5-subtle.native.js.map +1 -1
  61. package/dist/esm/v5-templates.native.js.map +1 -1
  62. package/dist/esm/v5-themes-subtle.native.js.map +1 -1
  63. package/dist/esm/v5-themes.native.js.map +1 -1
  64. package/dist/esm/v5-tokens.native.js.map +1 -1
  65. package/dist/esm/v5.native.js.map +1 -1
  66. package/package.json +38 -7
  67. package/types/tokens.d.ts +1002 -21
  68. package/types/tokens.d.ts.map +1 -1
  69. package/types/v3-themes.d.ts +15278 -148
  70. package/types/v3-themes.d.ts.map +1 -1
  71. package/types/v4-default.d.ts +262 -6
  72. package/types/v4-default.d.ts.map +1 -1
  73. package/types/v4-hanzogui.d.ts +184 -3
  74. package/types/v4-hanzogui.d.ts.map +1 -1
  75. package/types/v5-themes-subtle.d.ts +72 -72
  76. package/types/v5-themes.d.ts +72 -72
  77. package/.turbo/turbo-build.log +0 -2
  78. package/tests/v5-themes.test.ts +0 -215
  79. package/tsconfig.json +0 -43
@@ -547,6 +547,78 @@ export declare const themes: Record<"light_blue" | "light_gray" | "light_green"
547
547
  yellow10: string;
548
548
  yellow11: string;
549
549
  yellow12: string;
550
+ red1: string;
551
+ red2: string;
552
+ red3: string;
553
+ red4: string;
554
+ red5: string;
555
+ red6: string;
556
+ red7: string;
557
+ red8: string;
558
+ red9: string;
559
+ red10: string;
560
+ red11: string;
561
+ red12: string;
562
+ purple1: string;
563
+ purple2: string;
564
+ purple3: string;
565
+ purple4: string;
566
+ purple5: string;
567
+ purple6: string;
568
+ purple7: string;
569
+ purple8: string;
570
+ purple9: string;
571
+ purple10: string;
572
+ purple11: string;
573
+ purple12: string;
574
+ pink1: string;
575
+ pink2: string;
576
+ pink3: string;
577
+ pink4: string;
578
+ pink5: string;
579
+ pink6: string;
580
+ pink7: string;
581
+ pink8: string;
582
+ pink9: string;
583
+ pink10: string;
584
+ pink11: string;
585
+ pink12: string;
586
+ orange1: string;
587
+ orange2: string;
588
+ orange3: string;
589
+ orange4: string;
590
+ orange5: string;
591
+ orange6: string;
592
+ orange7: string;
593
+ orange8: string;
594
+ orange9: string;
595
+ orange10: string;
596
+ orange11: string;
597
+ orange12: string;
598
+ green1: string;
599
+ green2: string;
600
+ green3: string;
601
+ green4: string;
602
+ green5: string;
603
+ green6: string;
604
+ green7: string;
605
+ green8: string;
606
+ green9: string;
607
+ green10: string;
608
+ green11: string;
609
+ green12: string;
610
+ gray1: string;
611
+ gray2: string;
612
+ gray3: string;
613
+ gray4: string;
614
+ gray5: string;
615
+ gray6: string;
616
+ gray7: string;
617
+ gray8: string;
618
+ gray9: string;
619
+ gray10: string;
620
+ gray11: string;
621
+ gray12: string;
550
622
  color: string;
551
623
  shadowColor: string;
552
624
  borderColor: string;
@@ -624,78 +696,6 @@ export declare const themes: Record<"light_blue" | "light_gray" | "light_green"
624
696
  white10: string;
625
697
  white6: string;
626
698
  white11: string;
627
- gray1: string;
628
- gray2: string;
629
- gray3: string;
630
- gray4: string;
631
- gray5: string;
632
- gray6: string;
633
- gray7: string;
634
- gray8: string;
635
- gray9: string;
636
- gray10: string;
637
- gray11: string;
638
- gray12: string;
639
- red1: string;
640
- red2: string;
641
- red3: string;
642
- red4: string;
643
- red5: string;
644
- red6: string;
645
- red7: string;
646
- red8: string;
647
- red9: string;
648
- red10: string;
649
- red11: string;
650
- red12: string;
651
- green1: string;
652
- green2: string;
653
- green3: string;
654
- green4: string;
655
- green5: string;
656
- green6: string;
657
- green7: string;
658
- green8: string;
659
- green9: string;
660
- green10: string;
661
- green11: string;
662
- green12: string;
663
- orange1: string;
664
- orange2: string;
665
- orange3: string;
666
- orange4: string;
667
- orange5: string;
668
- orange6: string;
669
- orange7: string;
670
- orange8: string;
671
- orange9: string;
672
- orange10: string;
673
- orange11: string;
674
- orange12: string;
675
- pink1: string;
676
- pink2: string;
677
- pink3: string;
678
- pink4: string;
679
- pink5: string;
680
- pink6: string;
681
- pink7: string;
682
- pink8: string;
683
- pink9: string;
684
- pink10: string;
685
- pink11: string;
686
- pink12: string;
687
- purple1: string;
688
- purple2: string;
689
- purple3: string;
690
- purple4: string;
691
- purple5: string;
692
- purple6: string;
693
- purple7: string;
694
- purple8: string;
695
- purple9: string;
696
- purple10: string;
697
- purple11: string;
698
- purple12: string;
699
699
  teal1: string;
700
700
  teal2: string;
701
701
  teal3: string;
@@ -1,2 +0,0 @@
1
- $ hanzogui-build
2
- built @hanzogui/themes in 2757 ms
@@ -1,215 +0,0 @@
1
- import { describe, expect, test, assertType } from 'vitest'
2
- import {
3
- createV5Theme,
4
- themes as defaultThemes,
5
- defaultChildrenThemes,
6
- } from '../src/v5-themes'
7
- import { opacify, interpolateColor } from '../src/opacify'
8
-
9
- describe('opacify', () => {
10
- test('converts hex to hex with alpha', () => {
11
- expect(opacify('#ff0000', 0.5)).toBe('#ff000080')
12
- expect(opacify('#fff', 0.25)).toBe('#ffffff40') // shorthand
13
- })
14
-
15
- test('converts hsl to hsla', () => {
16
- expect(opacify('hsl(0, 100%, 50%)', 0.5)).toBe('hsla(0, 100%, 50%, 0.5)')
17
- })
18
-
19
- test('returns unsupported formats unchanged', () => {
20
- expect(opacify('rgb(255, 0, 0)', 0.5)).toBe('rgb(255, 0, 0)')
21
- expect(opacify('invalid', 0.5)).toBe('invalid')
22
- })
23
- })
24
-
25
- describe('interpolateColor', () => {
26
- test('interpolates between colors', () => {
27
- expect(interpolateColor('#000000', '#ffffff', 0)).toBe('rgb(0, 0, 0)')
28
- expect(interpolateColor('#000000', '#ffffff', 1)).toBe('rgb(255, 255, 255)')
29
- expect(interpolateColor('#000000', '#ffffff', 0.5)).toBe('rgb(128, 128, 128)')
30
- })
31
-
32
- test('handles different color formats', () => {
33
- expect(interpolateColor('rgb(0, 0, 0)', 'rgb(255, 255, 255)', 0.5)).toBe(
34
- 'rgb(128, 128, 128)'
35
- )
36
- expect(interpolateColor('hsl(0, 100%, 50%)', 'hsl(0, 100%, 100%)', 0.5)).toMatch(
37
- /^rgb/
38
- )
39
- })
40
-
41
- test('returns first color on invalid input', () => {
42
- expect(interpolateColor('#ff0000', 'invalid', 0.5)).toBe('#ff0000')
43
- })
44
- })
45
-
46
- describe('v5 themes', () => {
47
- test('generates expected theme structure', () => {
48
- const keys = Object.keys(defaultThemes)
49
-
50
- // Base + accent
51
- expect(keys).toContain('light')
52
- expect(keys).toContain('dark')
53
- expect(keys).toContain('light_accent')
54
-
55
- // Children themes
56
- expect(keys).toContain('light_blue')
57
- expect(keys).toContain('dark_red')
58
- })
59
-
60
- test('light and dark themes have different values', () => {
61
- expect(defaultThemes.light.background).not.toBe(defaultThemes.dark.background)
62
- expect(defaultThemes.light.color).not.toBe(defaultThemes.dark.color)
63
- })
64
-
65
- test('accent themes are inverted', () => {
66
- expect(defaultThemes.light.background).not.toBe(defaultThemes.light_accent.background)
67
- expect(defaultThemes.dark.background).not.toBe(defaultThemes.dark_accent.background)
68
- })
69
-
70
- test('getTheme computes opacity and interpolation colors', () => {
71
- // Opacity variants
72
- expect(defaultThemes.light.color01).toBeDefined()
73
- expect(defaultThemes.light.background01).toBeDefined()
74
- expect(defaultThemes.light.background08).toBeDefined()
75
- expect(defaultThemes.light.outlineColor).toBeDefined()
76
-
77
- // Works on all theme types
78
- expect(defaultThemes.light_blue.color01).toBeDefined()
79
- })
80
-
81
- test('children colors spread to base theme extras', () => {
82
- expect(defaultThemes.light.blue1).toBe(defaultChildrenThemes.blue.light.blue1)
83
- expect(defaultThemes.light.blue12).toBe(defaultChildrenThemes.blue.light.blue12)
84
- expect(defaultThemes.dark.blue1).toBe(defaultChildrenThemes.blue.dark.blue1)
85
- })
86
-
87
- test('includes shadow and whiteBlack colors', () => {
88
- expect(defaultThemes.light.shadow1).toBeDefined()
89
- expect(defaultThemes.light.shadow6).toBeDefined()
90
- expect(defaultThemes.light.white).toBe('rgba(255,255,255,1)')
91
- expect(defaultThemes.light.black).toBe('rgba(0,0,0,1)')
92
- })
93
-
94
- test('has color1-12 and accent1-12 tokens', () => {
95
- expect(defaultThemes.light.color1).toBeDefined()
96
- expect(defaultThemes.light.color12).toBeDefined()
97
- expect(defaultThemes.light.accent1).toBeDefined()
98
- expect(defaultThemes.light.accent12).toBeDefined()
99
- })
100
- })
101
-
102
- describe('createV5Theme options', () => {
103
- test('custom palettes affect black/white colors', () => {
104
- const themes = createV5Theme({
105
- darkPalette: [
106
- '#111',
107
- '#222',
108
- '#333',
109
- '#444',
110
- '#555',
111
- '#666',
112
- '#777',
113
- '#888',
114
- '#999',
115
- '#aaa',
116
- '#bbb',
117
- '#ccc',
118
- ],
119
- })
120
- expect(themes.light.black1).toBe('#111')
121
- expect(themes.light.black12).toBe('#ccc')
122
- })
123
-
124
- test('componentThemes: false removes component themes', () => {
125
- const themes = createV5Theme({ componentThemes: false })
126
- const keys = Object.keys(themes)
127
- expect(keys.filter((k) => k.includes('Button'))).toHaveLength(0)
128
- })
129
-
130
- test('empty childrenThemes produces minimal themes', () => {
131
- const themes = createV5Theme({ childrenThemes: {} })
132
- const keys = Object.keys(themes)
133
- expect(keys).toContain('light')
134
- expect(keys).toContain('light_black') // internal
135
- expect(keys).not.toContain('light_blue')
136
- })
137
-
138
- test('custom childrenThemes adds color themes', () => {
139
- const themes = createV5Theme({
140
- childrenThemes: {
141
- brand: {
142
- light: { brand1: '#e0f7fa', brand12: '#00251a' },
143
- dark: { brand1: '#00251a', brand12: '#e0f7fa' },
144
- },
145
- },
146
- })
147
- expect(themes.light.brand1).toBe('#e0f7fa')
148
- expect(themes.dark.brand1).toBe('#00251a')
149
- })
150
-
151
- test('grandChildrenThemes override defaults', () => {
152
- const themes = createV5Theme({
153
- grandChildrenThemes: { custom: { template: 'surface1' } },
154
- })
155
- const keys = Object.keys(themes)
156
- expect(keys).toContain('light_blue_custom')
157
- expect(keys).not.toContain('light_blue_accent')
158
- })
159
-
160
- test('custom getTheme merges on top of built-in computed values', () => {
161
- const themes = createV5Theme({
162
- getTheme: ({ palette }) => ({
163
- myOverlay: opacify(palette![7]!, 0.5),
164
- outlineColor: '#123456',
165
- }),
166
- })
167
-
168
- expect(themes.light.color01).toBeDefined()
169
- expect(themes.light.myOverlay).toBeDefined()
170
- expect(themes.light.outlineColor).toBe('#123456')
171
- })
172
- })
173
-
174
- describe('defaultChildrenThemes', () => {
175
- test('has expected structure', () => {
176
- expect(Object.keys(defaultChildrenThemes.blue.light)).toHaveLength(12)
177
- expect(defaultChildrenThemes.neutral.light).toEqual(
178
- defaultChildrenThemes.neutral.dark
179
- )
180
- })
181
- })
182
-
183
- describe('type safety', () => {
184
- test('theme values are string | number', () => {
185
- assertType<string | number>(defaultThemes.light.background)
186
- assertType<string | number>(defaultThemes.light.color01)
187
- assertType<string | number>(defaultThemes.light.blue1)
188
- })
189
-
190
- test('custom themes infer types correctly', () => {
191
- const themes = createV5Theme({
192
- childrenThemes: {
193
- brand: {
194
- light: { brand1: '#fff', brand12: '#000' },
195
- dark: { brand1: '#000', brand12: '#fff' },
196
- },
197
- },
198
- })
199
- // brand colors should be typed
200
- assertType<string | number>(themes.light.brand1)
201
- })
202
-
203
- test('custom getTheme values infer types correctly', () => {
204
- const themes = createV5Theme({
205
- getTheme: ({ palette }) => ({
206
- myOverlay: opacify(palette![7]!, 0.5),
207
- }),
208
- })
209
-
210
- assertType<string | number>(themes.light.myOverlay)
211
- assertType<string | number>(themes.dark.outlineColor)
212
- // @ts-expect-error
213
- themes.light.nonValidCustomKey
214
- })
215
- })
package/tsconfig.json DELETED
@@ -1,43 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.json",
3
- "compilerOptions": {
4
- "composite": true
5
- },
6
- "exclude": [
7
- "types",
8
- "tests",
9
- "v2.d.ts",
10
- "v2.js",
11
- "v2-themes.cjs",
12
- "v2-themes.d.ts",
13
- "v3.d.ts",
14
- "v3.cjs",
15
- "v3-themes.cjs",
16
- "v3-themes.d.ts",
17
- "v4.d.ts",
18
- "v4.cjs",
19
- "v5.d.ts",
20
- "v5.cjs",
21
- "v5-subtle.d.ts",
22
- "v5-subtle.cjs",
23
- "dist",
24
- "**/__tests__"
25
- ],
26
- "references": [
27
- {
28
- "path": "../cli"
29
- },
30
- {
31
- "path": "../colors"
32
- },
33
- {
34
- "path": "../create-theme"
35
- },
36
- {
37
- "path": "../theme-builder"
38
- },
39
- {
40
- "path": "../web"
41
- }
42
- ]
43
- }