@xivdyetools/core 2.7.0 → 4.0.2

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 (156) hide show
  1. package/README.md +85 -67
  2. package/dist/blending/blending.d.ts +22 -0
  3. package/dist/blending/blending.d.ts.map +1 -0
  4. package/dist/blending/blending.js +129 -0
  5. package/dist/blending/blending.js.map +1 -0
  6. package/dist/blending/conversions.d.ts +53 -0
  7. package/dist/blending/conversions.d.ts.map +1 -0
  8. package/dist/blending/conversions.js +256 -0
  9. package/dist/blending/conversions.js.map +1 -0
  10. package/dist/blending/index.d.ts +8 -0
  11. package/dist/blending/index.d.ts.map +1 -0
  12. package/dist/blending/index.js +3 -0
  13. package/dist/blending/index.js.map +1 -0
  14. package/dist/blending/types.d.ts +36 -0
  15. package/dist/blending/types.d.ts.map +1 -0
  16. package/dist/blending/types.js +21 -0
  17. package/dist/blending/types.js.map +1 -0
  18. package/dist/config/band-calibration.d.ts +68 -0
  19. package/dist/config/band-calibration.d.ts.map +1 -0
  20. package/dist/config/band-calibration.js +196 -0
  21. package/dist/config/band-calibration.js.map +1 -0
  22. package/dist/config/band-vocabulary.d.ts +82 -0
  23. package/dist/config/band-vocabulary.d.ts.map +1 -0
  24. package/dist/config/band-vocabulary.js +117 -0
  25. package/dist/config/band-vocabulary.js.map +1 -0
  26. package/dist/config/consolidated-ids.js +2 -2
  27. package/dist/config/consolidated-ids.js.map +1 -1
  28. package/dist/config/dye-vocabulary.d.ts +45 -0
  29. package/dist/config/dye-vocabulary.d.ts.map +1 -0
  30. package/dist/config/dye-vocabulary.js +58 -0
  31. package/dist/config/dye-vocabulary.js.map +1 -0
  32. package/dist/config/facewear.d.ts +24 -0
  33. package/dist/config/facewear.d.ts.map +1 -0
  34. package/dist/config/facewear.js +35 -0
  35. package/dist/config/facewear.js.map +1 -0
  36. package/dist/config/learn-links.d.ts +70 -0
  37. package/dist/config/learn-links.d.ts.map +1 -0
  38. package/dist/config/learn-links.js +171 -0
  39. package/dist/config/learn-links.js.map +1 -0
  40. package/dist/config/product-links.d.ts +44 -0
  41. package/dist/config/product-links.d.ts.map +1 -0
  42. package/dist/config/product-links.js +44 -0
  43. package/dist/config/product-links.js.map +1 -0
  44. package/dist/constants/index.d.ts +14 -1
  45. package/dist/constants/index.d.ts.map +1 -1
  46. package/dist/constants/index.js +38 -22
  47. package/dist/constants/index.js.map +1 -1
  48. package/dist/data/character_colors/race_specific/hair_colors.json +1 -1
  49. package/dist/data/character_colors/race_specific/skin_colors.json +1 -1
  50. package/dist/data/dyes.json +1127 -0
  51. package/dist/data/facewear_colors.json +57 -0
  52. package/dist/data/locales/de.json +4 -50
  53. package/dist/data/locales/en.json +4 -50
  54. package/dist/data/locales/fr.json +4 -50
  55. package/dist/data/locales/ja.json +4 -50
  56. package/dist/data/locales/ko.json +4 -50
  57. package/dist/data/locales/zh.json +4 -50
  58. package/dist/data/presets.json +59 -301
  59. package/dist/index.d.ts +156 -17
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +114 -10
  62. package/dist/index.js.map +1 -1
  63. package/dist/services/APIService.d.ts +7 -61
  64. package/dist/services/APIService.d.ts.map +1 -1
  65. package/dist/services/APIService.js +43 -154
  66. package/dist/services/APIService.js.map +1 -1
  67. package/dist/services/CharacterColorService.d.ts +8 -36
  68. package/dist/services/CharacterColorService.d.ts.map +1 -1
  69. package/dist/services/CharacterColorService.js +20 -68
  70. package/dist/services/CharacterColorService.js.map +1 -1
  71. package/dist/services/ColorService.d.ts +55 -68
  72. package/dist/services/ColorService.d.ts.map +1 -1
  73. package/dist/services/ColorService.js +86 -94
  74. package/dist/services/ColorService.js.map +1 -1
  75. package/dist/services/DyeService.d.ts +10 -103
  76. package/dist/services/DyeService.d.ts.map +1 -1
  77. package/dist/services/DyeService.js +13 -156
  78. package/dist/services/DyeService.js.map +1 -1
  79. package/dist/services/LocalizationService.d.ts +3 -33
  80. package/dist/services/LocalizationService.d.ts.map +1 -1
  81. package/dist/services/LocalizationService.js +2 -44
  82. package/dist/services/LocalizationService.js.map +1 -1
  83. package/dist/services/PaletteService.d.ts +8 -9
  84. package/dist/services/PaletteService.d.ts.map +1 -1
  85. package/dist/services/PaletteService.js +2 -21
  86. package/dist/services/PaletteService.js.map +1 -1
  87. package/dist/services/PresetService.d.ts +2 -34
  88. package/dist/services/PresetService.d.ts.map +1 -1
  89. package/dist/services/PresetService.js +12 -59
  90. package/dist/services/PresetService.js.map +1 -1
  91. package/dist/services/chara/chara-models.d.ts +68 -0
  92. package/dist/services/chara/chara-models.d.ts.map +1 -0
  93. package/dist/services/chara/chara-models.js +87 -0
  94. package/dist/services/chara/chara-models.js.map +1 -0
  95. package/dist/services/chara/chara-parser.d.ts +101 -0
  96. package/dist/services/chara/chara-parser.d.ts.map +1 -0
  97. package/dist/services/chara/chara-parser.js +299 -0
  98. package/dist/services/chara/chara-parser.js.map +1 -0
  99. package/dist/services/chara/chara-resolver.d.ts +103 -0
  100. package/dist/services/chara/chara-resolver.d.ts.map +1 -0
  101. package/dist/services/chara/chara-resolver.js +233 -0
  102. package/dist/services/chara/chara-resolver.js.map +1 -0
  103. package/dist/services/color/ColorConverter.d.ts +107 -35
  104. package/dist/services/color/ColorConverter.d.ts.map +1 -1
  105. package/dist/services/color/ColorConverter.js +159 -48
  106. package/dist/services/color/ColorConverter.js.map +1 -1
  107. package/dist/services/color/ColorManipulator.d.ts +11 -0
  108. package/dist/services/color/ColorManipulator.d.ts.map +1 -1
  109. package/dist/services/color/ColorManipulator.js +14 -0
  110. package/dist/services/color/ColorManipulator.js.map +1 -1
  111. package/dist/services/color/ColorblindnessSimulator.d.ts +17 -0
  112. package/dist/services/color/ColorblindnessSimulator.d.ts.map +1 -1
  113. package/dist/services/color/ColorblindnessSimulator.js +53 -1
  114. package/dist/services/color/ColorblindnessSimulator.js.map +1 -1
  115. package/dist/services/color/SpectralMixer.d.ts +0 -34
  116. package/dist/services/color/SpectralMixer.d.ts.map +1 -1
  117. package/dist/services/color/SpectralMixer.js +0 -73
  118. package/dist/services/color/SpectralMixer.js.map +1 -1
  119. package/dist/services/dye/DyeDatabase.d.ts +0 -21
  120. package/dist/services/dye/DyeDatabase.d.ts.map +1 -1
  121. package/dist/services/dye/DyeDatabase.js +78 -103
  122. package/dist/services/dye/DyeDatabase.js.map +1 -1
  123. package/dist/services/dye/DyeSearch.d.ts +17 -31
  124. package/dist/services/dye/DyeSearch.d.ts.map +1 -1
  125. package/dist/services/dye/DyeSearch.js +31 -67
  126. package/dist/services/dye/DyeSearch.js.map +1 -1
  127. package/dist/services/dye/HarmonyGenerator.d.ts +11 -18
  128. package/dist/services/dye/HarmonyGenerator.d.ts.map +1 -1
  129. package/dist/services/dye/HarmonyGenerator.js +24 -35
  130. package/dist/services/dye/HarmonyGenerator.js.map +1 -1
  131. package/dist/services/localization/LocaleLoader.d.ts.map +1 -1
  132. package/dist/services/localization/LocaleLoader.js +0 -1
  133. package/dist/services/localization/LocaleLoader.js.map +1 -1
  134. package/dist/services/localization/TranslationProvider.d.ts +1 -42
  135. package/dist/services/localization/TranslationProvider.d.ts.map +1 -1
  136. package/dist/services/localization/TranslationProvider.js +4 -82
  137. package/dist/services/localization/TranslationProvider.js.map +1 -1
  138. package/dist/types/index.d.ts +39 -52
  139. package/dist/types/index.d.ts.map +1 -1
  140. package/dist/types/index.js +50 -10
  141. package/dist/types/index.js.map +1 -1
  142. package/dist/utils/index.d.ts +35 -122
  143. package/dist/utils/index.d.ts.map +1 -1
  144. package/dist/utils/index.js +45 -422
  145. package/dist/utils/index.js.map +1 -1
  146. package/dist/utils/kd-tree.d.ts +0 -4
  147. package/dist/utils/kd-tree.d.ts.map +1 -1
  148. package/dist/utils/kd-tree.js +0 -6
  149. package/dist/utils/kd-tree.js.map +1 -1
  150. package/package.json +23 -14
  151. package/dist/data/character_colors/index.json +0 -40
  152. package/dist/data/colors_xiv.json +0 -3538
  153. package/dist/version.d.ts +0 -11
  154. package/dist/version.d.ts.map +0 -1
  155. package/dist/version.js +0 -11
  156. package/dist/version.js.map +0 -1
@@ -1,390 +1,148 @@
1
1
  {
2
- "version": "1.0.0",
3
- "lastUpdated": "2025-12-05",
2
+ "version": "2.0.0",
3
+ "lastUpdated": "2026-08-07",
4
4
  "categories": {
5
- "jobs": {
6
- "name": "FFXIV Jobs",
7
- "description": "Color schemes inspired by job identities",
8
- "icon": "⚔️"
9
- },
10
- "grand-companies": {
11
- "name": "Grand Companies",
12
- "description": "Official Grand Company colors",
13
- "icon": "🏛️"
14
- },
15
- "seasons": {
16
- "name": "Seasons",
17
- "description": "Seasonal color palettes",
18
- "icon": "🍂"
19
- },
20
- "events": {
21
- "name": "FFXIV Events",
22
- "description": "Colors for in-game seasonal events",
23
- "icon": "🎉"
24
- },
25
- "aesthetics": {
26
- "name": "Aesthetics",
27
- "description": "General aesthetic themes",
28
- "icon": "🎨"
29
- },
30
- "community": {
31
- "name": "Community",
32
- "description": "Community-submitted palettes",
33
- "icon": "👥"
5
+ "jobs": { "name": "FFXIV Jobs", "description": "Color schemes inspired by job identities", "icon": "⚔️" },
6
+ "grand-companies": { "name": "Grand Companies", "description": "Official Grand Company colors", "icon": "🏛️" },
7
+ "seasons": { "name": "Seasons", "description": "Seasonal color palettes", "icon": "🍂" },
8
+ "events": { "name": "FFXIV Events", "description": "Colors for in-game seasonal events", "icon": "🎉" },
9
+ "aesthetics": { "name": "Aesthetics", "description": "General aesthetic themes", "icon": "🎨" },
10
+ "appearance": {
11
+ "name": "Appearance",
12
+ "description": "Palettes built around a character's own colours",
13
+ "icon": "👤"
14
+ },
15
+ "zones": {
16
+ "name": "Zones",
17
+ "description": "Palettes drawn from the places of Eorzea",
18
+ "icon": "🏔️"
19
+ },
20
+ "raids-trials": {
21
+ "name": "Raids & Trials",
22
+ "description": "Palettes from raid and trial encounters",
23
+ "icon": "🗡️"
34
24
  }
35
25
  },
36
26
  "palettes": [
37
- {
38
- "id": "job-rdm",
39
- "name": "Red Mage",
40
- "category": "jobs",
41
- "description": "The crimson elegance of the Red Mage",
42
- "dyes": [5738, 13115, 13117, 5729],
43
- "tags": ["red mage", "rdm", "caster", "melee", "crimson"]
44
- },
45
- {
46
- "id": "job-blm",
47
- "name": "Black Mage",
48
- "category": "jobs",
49
- "description": "Dark arcane power",
50
- "dyes": [5813, 13115, 13117],
51
- "tags": ["black mage", "blm", "caster", "magic", "dark"]
52
- },
53
- {
54
- "id": "job-whm",
55
- "name": "White Mage",
56
- "category": "jobs",
57
- "description": "Pure healing light",
58
- "dyes": [5729, 5785, 5746],
59
- "tags": ["white mage", "whm", "healer", "pure", "nature"]
60
- },
61
- {
62
- "id": "job-pld",
63
- "name": "Paladin",
64
- "category": "jobs",
65
- "description": "Noble defender of the realm",
66
- "dyes": [5801, 13116, 5729],
67
- "tags": ["paladin", "pld", "tank", "holy", "knight"]
68
- },
69
- {
70
- "id": "job-war",
71
- "name": "Warrior",
72
- "category": "jobs",
73
- "description": "Fury of the inner beast",
74
- "dyes": [5740, 5734, 5746],
75
- "tags": ["warrior", "war", "tank", "rage", "beast"]
76
- },
77
- {
78
- "id": "job-drk",
79
- "name": "Dark Knight",
80
- "category": "jobs",
81
- "description": "Darkness within",
82
- "dyes": [13115, 5809, 5742],
83
- "tags": ["dark knight", "drk", "tank", "darkness", "shadow"]
84
- },
85
- {
86
- "id": "job-gnb",
87
- "name": "Gunbreaker",
88
- "category": "jobs",
89
- "description": "Modern gunblade warrior",
90
- "dyes": [30121, 5730, 5734],
91
- "tags": ["gunbreaker", "gnb", "tank", "gunblade", "modern"]
92
- },
93
- {
94
- "id": "job-drg",
95
- "name": "Dragoon",
96
- "category": "jobs",
97
- "description": "Azure dragoon legacy",
98
- "dyes": [30120, 30116, 13116],
99
- "tags": ["dragoon", "drg", "melee", "dragon", "jump"]
100
- },
101
- {
102
- "id": "job-mnk",
103
- "name": "Monk",
104
- "category": "jobs",
105
- "description": "Fists of enlightenment",
106
- "dyes": [5763, 5744, 5764],
107
- "tags": ["monk", "mnk", "melee", "martial arts", "fist"]
108
- },
109
- {
110
- "id": "job-nin",
111
- "name": "Ninja",
112
- "category": "jobs",
113
- "description": "Shadow assassin",
114
- "dyes": [13115, 5742, 5809],
115
- "tags": ["ninja", "nin", "melee", "shadow", "stealth"]
116
- },
117
- {
118
- "id": "job-sam",
119
- "name": "Samurai",
120
- "category": "jobs",
121
- "description": "Wandering swordsman",
122
- "dyes": [5740, 5729, 13115],
123
- "tags": ["samurai", "sam", "melee", "sword", "bushido"]
124
- },
125
- {
126
- "id": "job-rpr",
127
- "name": "Reaper",
128
- "category": "jobs",
129
- "description": "Harbinger of death",
130
- "dyes": [5807, 13115, 5742],
131
- "tags": ["reaper", "rpr", "melee", "death", "scythe"]
132
- },
133
- {
134
- "id": "job-vpr",
135
- "name": "Viper",
136
- "category": "jobs",
137
- "description": "Venomous dual-blade striker",
138
- "dyes": [5780, 5807, 13115],
139
- "tags": ["viper", "vpr", "melee", "poison", "dual blade"]
140
- },
141
- {
142
- "id": "job-brd",
143
- "name": "Bard",
144
- "category": "jobs",
145
- "description": "Songs of the forest",
146
- "dyes": [5774, 5746, 5764],
147
- "tags": ["bard", "brd", "ranged", "music", "nature"]
148
- },
149
- {
150
- "id": "job-mch",
151
- "name": "Machinist",
152
- "category": "jobs",
153
- "description": "Industrial precision",
154
- "dyes": [30122, 5788, 5734],
155
- "tags": ["machinist", "mch", "ranged", "technology", "guns"]
156
- },
157
- {
158
- "id": "job-dnc",
159
- "name": "Dancer",
160
- "category": "jobs",
161
- "description": "Graceful performance",
162
- "dyes": [5810, 5729, 13117],
163
- "tags": ["dancer", "dnc", "ranged", "graceful", "support"]
164
- },
165
- {
166
- "id": "job-smn",
167
- "name": "Summoner",
168
- "category": "jobs",
169
- "description": "Primal summoner",
170
- "dyes": [5786, 30118, 5746],
171
- "tags": ["summoner", "smn", "caster", "primal", "egi"]
172
- },
173
- {
174
- "id": "job-sch",
175
- "name": "Scholar",
176
- "category": "jobs",
177
- "description": "Tactical healer",
178
- "dyes": [5808, 5729, 13117],
179
- "tags": ["scholar", "sch", "healer", "fairy", "tactics"]
180
- },
181
- {
182
- "id": "job-ast",
183
- "name": "Astrologian",
184
- "category": "jobs",
185
- "description": "Star-gazing healer",
186
- "dyes": [5802, 5805, 13117],
187
- "tags": ["astrologian", "ast", "healer", "stars", "cards"]
188
- },
189
- {
190
- "id": "job-sge",
191
- "name": "Sage",
192
- "category": "jobs",
193
- "description": "Barrier healer of science",
194
- "dyes": [30123, 5788, 13116],
195
- "tags": ["sage", "sge", "healer", "barrier", "nouliths"]
196
- },
197
- {
198
- "id": "job-pct",
199
- "name": "Pictomancer",
200
- "category": "jobs",
201
- "description": "Artistic magic",
202
- "dyes": [13708, 13713, 13711, 5729],
203
- "tags": ["pictomancer", "pct", "caster", "art", "paint"]
204
- },
205
27
  {
206
28
  "id": "gc-maelstrom",
207
29
  "name": "Maelstrom",
208
30
  "category": "grand-companies",
209
- "description": "Limsa Lominsa's naval forces",
210
- "dyes": [5738, 13115, 5729],
31
+ "description": "Limsa Lominsa's naval standard — storm red and jet black over sea-spray white.",
32
+ "dyes": [10, 102, 1],
211
33
  "tags": ["maelstrom", "limsa lominsa", "navy", "storm"]
212
34
  },
213
35
  {
214
36
  "id": "gc-adders",
215
37
  "name": "Twin Adders",
216
38
  "category": "grand-companies",
217
- "description": "Gridania's forest guardians",
218
- "dyes": [30118, 5774, 5746],
39
+ "description": "Gridania's forest guard — an oath kept in leaf-light and deep wood.",
40
+ "dyes": [88, 46, 18],
219
41
  "tags": ["twin adders", "gridania", "forest", "nature"]
220
42
  },
221
43
  {
222
44
  "id": "gc-flames",
223
45
  "name": "Immortal Flames",
224
46
  "category": "grand-companies",
225
- "description": "Ul'dah's desert warriors",
226
- "dyes": [5734, 13117, 5740],
47
+ "description": "Ul'dah's standing army — soot black and ember red, flames that never gutter.",
48
+ "dyes": [6, 113, 12],
227
49
  "tags": ["immortal flames", "uldah", "desert", "fire"]
228
50
  },
229
51
  {
230
52
  "id": "season-spring",
231
53
  "name": "Spring",
232
54
  "category": "seasons",
233
- "description": "Fresh blooms and new beginnings",
234
- "dyes": [5810, 5785, 5768],
55
+ "description": "First thaw — petal pink, seedling green and pale morning light.",
56
+ "dyes": [82, 57, 40],
235
57
  "tags": ["spring", "flowers", "fresh", "bloom"]
236
58
  },
237
59
  {
238
60
  "id": "season-summer",
239
61
  "name": "Summer",
240
62
  "category": "seasons",
241
- "description": "Warm beaches and sunny skies",
242
- "dyes": [5794, 30118, 5744],
63
+ "description": "High summer — deep harbour water, bright sail and warm sand.",
64
+ "dyes": [66, 88, 16],
243
65
  "tags": ["summer", "beach", "sun", "warm"]
244
66
  },
245
67
  {
246
68
  "id": "season-autumn",
247
69
  "name": "Autumn",
248
70
  "category": "seasons",
249
- "description": "Falling leaves and harvest time",
250
- "dyes": [5754, 5746, 5740],
71
+ "description": "The turning wood — pumpkin orange, mossy brown and mulled red.",
72
+ "dyes": [26, 18, 12],
251
73
  "tags": ["autumn", "fall", "leaves", "harvest"]
252
74
  },
253
75
  {
254
76
  "id": "season-winter",
255
77
  "name": "Winter",
256
78
  "category": "seasons",
257
- "description": "Frost and snow",
258
- "dyes": [5729, 5788, 13116],
79
+ "description": "Deep winter — fresh snow, ice blue and a gleam of frozen silver.",
80
+ "dyes": [1, 60, 112],
259
81
  "tags": ["winter", "snow", "frost", "cold"]
260
82
  },
261
83
  {
262
84
  "id": "event-starlight",
263
85
  "name": "Starlight Celebration",
264
86
  "category": "events",
265
- "description": "Winter holiday cheer",
266
- "dyes": [5738, 5780, 5729],
87
+ "description": "Saint's red coats and evergreen boughs on fresh snow, lighting the city squares.",
88
+ "dyes": [10, 52, 1],
267
89
  "tags": ["starlight", "christmas", "holiday", "winter"]
268
90
  },
269
91
  {
270
92
  "id": "event-moonfire",
271
93
  "name": "Moonfire Faire",
272
94
  "category": "events",
273
- "description": "Summer festival by the sea",
274
- "dyes": [5794, 5729, 13117],
95
+ "description": "Bombards by the shore — sea blue, sun-bleached white and a spark of festival flame.",
96
+ "dyes": [66, 1, 113],
275
97
  "tags": ["moonfire", "summer", "beach", "festival"]
276
98
  },
277
99
  {
278
100
  "id": "event-rising",
279
101
  "name": "The Rising",
280
102
  "category": "events",
281
- "description": "Anniversary celebration",
282
- "dyes": [13117, 5813, 30123],
103
+ "description": "The realm remembers its rebirth — anniversary gold and regal purple over pearl.",
104
+ "dyes": [113, 85, 93],
283
105
  "tags": ["rising", "anniversary", "celebration"]
284
106
  },
285
107
  {
286
108
  "id": "event-hatching",
287
109
  "name": "Hatching-tide",
288
110
  "category": "events",
289
- "description": "Spring egg festival",
290
- "dyes": [13708, 13711, 5768],
111
+ "description": "Painted archon eggs on parade — sweetshop pastels and spring ribbon.",
112
+ "dyes": [103, 106, 40],
291
113
  "tags": ["hatching", "easter", "spring", "eggs"]
292
114
  },
293
115
  {
294
116
  "id": "event-valentione",
295
117
  "name": "Valentione's Day",
296
118
  "category": "events",
297
- "description": "Day of love and affection",
298
- "dyes": [5738, 5810, 5729],
119
+ "description": "Courtship red, blushing pink and lace white — love letters done in dye.",
120
+ "dyes": [10, 82, 1],
299
121
  "tags": ["valentione", "valentine", "love", "romance"]
300
122
  },
301
123
  {
302
124
  "id": "event-heavensturn",
303
125
  "name": "Heavensturn",
304
126
  "category": "events",
305
- "description": "New year celebration",
306
- "dyes": [5740, 13117, 13115],
127
+ "description": "Ringing in the year, Far Eastern style — ceremonial red, deep lacquer and temple gold.",
128
+ "dyes": [12, 113, 102],
307
129
  "tags": ["heavensturn", "new year", "celebration"]
308
130
  },
309
131
  {
310
- "id": "aesthetic-gothic",
311
- "name": "Gothic",
312
- "category": "aesthetics",
313
- "description": "Dark and mysterious",
314
- "dyes": [13115, 5809, 5742],
315
- "tags": ["gothic", "dark", "mysterious", "elegant"]
316
- },
317
- {
318
- "id": "aesthetic-pastel",
319
- "name": "Pastel Dream",
320
- "category": "aesthetics",
321
- "description": "Soft and dreamy colors",
322
- "dyes": [13708, 13713, 13711],
323
- "tags": ["pastel", "soft", "dreamy", "cute"]
324
- },
325
- {
326
- "id": "aesthetic-military",
327
- "name": "Military",
328
- "category": "aesthetics",
329
- "description": "Tactical and rugged",
330
- "dyes": [5776, 5746, 5730],
331
- "tags": ["military", "tactical", "camo", "rugged"]
332
- },
333
- {
334
- "id": "aesthetic-royal",
335
- "name": "Royal",
336
- "category": "aesthetics",
337
- "description": "Regal and luxurious",
338
- "dyes": [13117, 5813, 30123],
339
- "tags": ["royal", "regal", "luxury", "noble"]
340
- },
341
- {
342
- "id": "aesthetic-cyberpunk",
343
- "name": "Cyberpunk",
344
- "category": "aesthetics",
345
- "description": "Neon future vibes",
346
- "dyes": [48169, 30121, 13115],
347
- "tags": ["cyberpunk", "neon", "future", "tech"]
348
- },
349
- {
350
- "id": "aesthetic-nature",
351
- "name": "Natural",
352
- "category": "aesthetics",
353
- "description": "Earth tones and greenery",
354
- "dyes": [5774, 5746, 5768],
355
- "tags": ["natural", "earth", "green", "organic"]
356
- },
357
- {
358
- "id": "aesthetic-monochrome",
359
- "name": "Monochrome",
360
- "category": "aesthetics",
361
- "description": "Classic black and white",
362
- "dyes": [13115, 5730, 5729],
363
- "tags": ["monochrome", "black", "white", "classic"]
364
- },
365
- {
366
- "id": "aesthetic-ocean",
367
- "name": "Ocean",
368
- "category": "aesthetics",
369
- "description": "Deep sea colors",
370
- "dyes": [5794, 30121, 30123],
371
- "tags": ["ocean", "sea", "blue", "water"]
372
- },
373
- {
374
- "id": "aesthetic-sunset",
375
- "name": "Sunset",
376
- "category": "aesthetics",
377
- "description": "Warm evening hues",
378
- "dyes": [5744, 5741, 5805],
379
- "tags": ["sunset", "warm", "orange", "evening"]
132
+ "id": "event-littleladies",
133
+ "name": "Little Ladies' Day",
134
+ "category": "events",
135
+ "description": "Peach blossoms for the princesses' parade — pale petals, one bright cherry, festival white.",
136
+ "dyes": [82, 87, 1],
137
+ "tags": ["little ladies day", "princess", "blossom", "pink"]
380
138
  },
381
139
  {
382
- "id": "aesthetic-forest",
383
- "name": "Forest",
384
- "category": "aesthetics",
385
- "description": "Deep woodland colors",
386
- "dyes": [5780, 5746, 13117],
387
- "tags": ["forest", "woodland", "green", "nature"]
140
+ "id": "event-allsaints",
141
+ "name": "All Saints' Wake",
142
+ "category": "events",
143
+ "description": "Pumpkin lantern, witching black and an imp's plum purple — the Continental Circus in three dyes.",
144
+ "dyes": [26, 6, 85],
145
+ "tags": ["all saints wake", "halloween", "spooky", "pumpkin"]
388
146
  }
389
147
  ]
390
148
  }
package/dist/index.d.ts CHANGED
@@ -1,29 +1,168 @@
1
1
  export { ColorService } from './services/ColorService.js';
2
- export { ColorConverter } from './services/color/ColorConverter.js';
2
+ export { /** @public */ ColorConverter } from './services/color/ColorConverter.js';
3
3
  export { DyeService } from './services/DyeService.js';
4
- export { APIService, MemoryCacheBackend } from './services/APIService.js';
5
- export type { ICacheBackend, APIServiceOptions, CacheMetrics } from './services/APIService.js';
6
- export { LocalizationService, SUPPORTED_LOCALES, extractLocaleCode, resolveLocaleFromPreference, } from './services/LocalizationService.js';
4
+ export { APIService, /** @public */ MemoryCacheBackend } from './services/APIService.js';
5
+ export type { ICacheBackend, /** @public */ APIServiceOptions } from './services/APIService.js';
6
+ export { LocalizationService, SUPPORTED_LOCALES, extractLocaleCode,
7
+ /** @public */
8
+ resolveLocaleFromPreference, } from './services/LocalizationService.js';
7
9
  export { LocaleLoader } from './services/localization/LocaleLoader.js';
8
10
  export { LocaleRegistry } from './services/localization/LocaleRegistry.js';
9
11
  export { TranslationProvider } from './services/localization/TranslationProvider.js';
10
12
  export { PresetService } from './services/PresetService.js';
11
- export type { ResolvedPreset } from './services/PresetService.js';
13
+ export type { /** @public */ ResolvedPreset } from './services/PresetService.js';
12
14
  export { PaletteService } from './services/PaletteService.js';
13
- export type { PaletteExtractionOptions, ExtractedColor, PaletteMatch, PaletteServiceOptions, } from './services/PaletteService.js';
14
- export { CharacterColorService, type CharacterMatchOptions, } from './services/CharacterColorService.js';
15
- export type { MatchingMethod, OklchWeights, MatchingConfig, } from './types/index.js';
16
- export type { HarmonyOptions, HarmonyMatchingAlgorithm, HarmonyColorSpace, } from './services/dye/HarmonyGenerator.js';
17
- export type { DeltaEFormula } from './services/color/ColorConverter.js';
18
- export type { RYB } from './services/ColorService.js';
15
+ export type {
16
+ /** @public */
17
+ PaletteExtractionOptions,
18
+ /** @public */
19
+ ExtractedColor, PaletteMatch,
20
+ /** @public */
21
+ PaletteServiceOptions, } from './services/PaletteService.js';
22
+ export { CharacterColorService,
23
+ /** @public */
24
+ type CharacterMatchOptions, } from './services/CharacterColorService.js';
25
+ export type { MatchingMethod } from './types/index.js';
26
+ export type { HarmonyOptions,
27
+ /** @public */
28
+ HarmonyMatchingAlgorithm, HarmonyColorSpace, } from './services/dye/HarmonyGenerator.js';
29
+ export type { /** @public */ DeltaEFormula } from './services/color/ColorConverter.js';
30
+ export type { /** @public */ RYB } from './services/ColorService.js';
19
31
  export type { FindClosestOptions, FindWithinDistanceOptions } from './services/dye/DyeSearch.js';
20
32
  export { isDyeExcluded, filterDyes, hasActiveFilters, EXPENSIVE_DYE_IDS, VENDOR_ACQUISITIONS, CRAFT_ACQUISITIONS, } from './services/dye/DyeFilter.js';
21
- export { MATCHING_PRESETS, } from './types/index.js';
33
+ export { MATCHING_METHODS, DEFAULT_MATCHING_METHOD, MATCHING_METHOD_TAGS, LEGACY_MATCHING_METHOD_MAP, isMatchingMethod, normalizeMatchingMethod, } from './types/index.js';
22
34
  export { CONSOLIDATED_IDS, CONSOLIDATED_DYES, isConsolidationActive, getMarketItemID, getConsolidatedDyeName, } from './config/consolidated-ids.js';
23
- export type { ConsolidationType, ConsolidatedDye, LocalizedDyeName, } from './config/consolidated-ids.js';
24
- export { RGB_MIN, RGB_MAX, HUE_MIN, HUE_MAX, SATURATION_MIN, SATURATION_MAX, VALUE_MIN, VALUE_MAX, COLOR_DISTANCE_MAX, VISION_TYPES, VISION_TYPE_LABELS, BRETTEL_MATRICES, PATTERNS, UNIVERSALIS_API_BASE, UNIVERSALIS_API_TIMEOUT, UNIVERSALIS_API_RETRY_COUNT, UNIVERSALIS_API_RETRY_DELAY, API_CACHE_TTL, API_DEBOUNCE_DELAY, API_CACHE_VERSION, API_MAX_RESPONSE_SIZE, API_RATE_LIMIT_DELAY, } from './constants/index.js';
25
- export { clamp, lerp, round, distance, unique, groupBy, sortByProperty, filterNulls, isValidHexColor, isValidRGB, isValidHSV, isString, isNumber, isArray, isObject, isNullish, sleep, retry, isAbortError, generateChecksum, } from './utils/index.js';
26
- export { default as dyeDatabase } from './data/colors_xiv.json';
35
+ export type { ConsolidationType,
36
+ /** @public */
37
+ ConsolidatedDye,
38
+ /** @public */
39
+ LocalizedDyeName, } from './config/consolidated-ids.js';
40
+ export {
41
+ /** @public */
42
+ DYE_CATEGORIES,
43
+ /** @public */
44
+ DYE_ACQUISITIONS,
45
+ /** @public */
46
+ ACQUISITION_META,
47
+ /** @public */
48
+ METALLIC_STAIN_IDS, } from './config/dye-vocabulary.js';
49
+ export type {
50
+ /** @public */ DyeCategory,
51
+ /** @public */ DyeAcquisition,
52
+ /** @public */ AcquisitionMeta, } from './config/dye-vocabulary.js';
53
+ export { BAND_VOCABULARY, BAND_METHOD_DP,
54
+ /** @public */
55
+ RATIO_BANDS, classifyBandTier,
56
+ /** @public */
57
+ classifyBandTierWithCuts,
58
+ /** @public */
59
+ deriveDistinguishCuts, roundToBandDisplay, } from './config/band-vocabulary.js';
60
+ export type {
61
+ /** @public */ BandContext,
62
+ /** @public */ BandMethod,
63
+ /** @public */ BandTier,
64
+ /** @public */ MethodBandSet, } from './config/band-vocabulary.js';
65
+ export { SOCIAL_LINKS, PRODUCT_LINKS } from './config/product-links.js';
66
+ export type { /** @public */ ProductLink } from './config/product-links.js';
67
+ export { parseCharaFile } from './services/chara/chara-parser.js';
68
+ export type {
69
+ /** @public */
70
+ ParsedCharaFile,
71
+ /** @public */
72
+ CharaColorSlotRaw,
73
+ /** @public */
74
+ CharaGearDye, CharaSlotId,
75
+ /** @public */
76
+ CharaGearSlotId,
77
+ /** @public */
78
+ CharaSlotInertReason, } from './services/chara/chara-parser.js';
79
+ export { resolveCharaColors,
80
+ /** @public */ OFF_GRID_DELTA_E2000, } from './services/chara/chara-resolver.js';
81
+ export {
82
+ /** @public */ gearModelKey,
83
+ /** @public */ weaponModelKey, charaModelKey, formatCharaModelLabel, CHARA_SLOT_SEARCH_FIELD,
84
+ /** @public */ CHARA_WEAPON_SLOTS, isCharaWeaponSlot, isWornCharaModel, } from './services/chara/chara-models.js';
85
+ export type { CharaGearModel } from './services/chara/chara-models.js';
86
+ export type { ResolvedCharaCharacter, ResolvedCharaSlot,
87
+ /** @public */
88
+ ResolvedGearDye,
89
+ /** @public */
90
+ CharaSlotVerdict,
91
+ /** @public */
92
+ CharaSlotErrorCode,
93
+ /** @public */
94
+ StainIdLookup, } from './services/chara/chara-resolver.js';
95
+ export { MANUAL_TOPICS,
96
+ /** @public */
97
+ LODESTONE_BY_REGION,
98
+ /** @public */
99
+ XIVDYETOOLS_DOCS_URL, getLearnLink, getLodestoneLink, } from './config/learn-links.js';
100
+ export type { ManualTopicId, LodestoneRegion, LearnLink,
101
+ /** @public */
102
+ ManualTopic, } from './config/learn-links.js';
103
+ export {
104
+ /** @public */
105
+ facewearColors,
106
+ /** @public */
107
+ LEGACY_FACEWEAR_ITEM_IDS,
108
+ /** @public */
109
+ getFacewearColor, getFacewearColorByLegacyItemID, } from './config/facewear.js';
110
+ export {
111
+ /** @public */
112
+ RGB_MIN,
113
+ /** @public */
114
+ RGB_MAX,
115
+ /** @public */
116
+ HUE_MIN,
117
+ /** @public */
118
+ HUE_MAX,
119
+ /** @public */
120
+ SATURATION_MIN,
121
+ /** @public */
122
+ SATURATION_MAX,
123
+ /** @public */
124
+ VALUE_MIN,
125
+ /** @public */
126
+ VALUE_MAX,
127
+ /** @public */
128
+ BRETTEL_MATRICES,
129
+ /** @public */
130
+ MACHADO_MATRICES,
131
+ /** @public */
132
+ PATTERNS, UNIVERSALIS_API_BASE,
133
+ /** @public */
134
+ UNIVERSALIS_API_TIMEOUT,
135
+ /** @public */
136
+ UNIVERSALIS_API_RETRY_COUNT,
137
+ /** @public */
138
+ UNIVERSALIS_API_RETRY_DELAY,
139
+ /** @public */
140
+ API_CACHE_TTL,
141
+ /** @public */
142
+ API_CACHE_VERSION,
143
+ /** @public */
144
+ API_MAX_RESPONSE_SIZE,
145
+ /** @public */
146
+ API_RATE_LIMIT_DELAY, } from './constants/index.js';
147
+ export {
148
+ /** @public */
149
+ clamp,
150
+ /** @public */
151
+ round,
152
+ /** @public */
153
+ isValidHexColor,
154
+ /** @public */
155
+ isValidRGB,
156
+ /** @public */
157
+ isValidHSV,
158
+ /** @public */
159
+ sleep,
160
+ /** @public */
161
+ retry,
162
+ /** @public */
163
+ isAbortError,
164
+ /** @public */
165
+ generateChecksum, abbreviateDyeName, } from './utils/index.js';
166
+ export { default as dyeDatabase } from './data/dyes.json';
27
167
  export { default as presetData } from './data/presets.json';
28
- export { VERSION } from './version.js';
29
168
  //# sourceMappingURL=index.d.ts.map