@rafters/color-utils 0.2.3

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.
@@ -0,0 +1,2452 @@
1
+ /**
2
+ * Hub/Spoke Color Name Data Structure
3
+ *
4
+ * Each hue hub contains semantically-appropriate color names organized by
5
+ * lightness and chroma bands. The hub (hue) is the semantic anchor - it
6
+ * determines what kind of color this is. The spokes (L×C matrix) contain
7
+ * words that are semantically compatible with both the hue AND the L/C values.
8
+ *
9
+ * Structure:
10
+ * - 18 hue hubs (20° each)
11
+ * - Each hub has a 5×4 matrix (L bands × C bands)
12
+ * - Each cell contains 10+ semantically-appropriate words
13
+ * - Temperature selects which hub variant to use
14
+ * - Fractional L/C values sub-select within the word list
15
+ *
16
+ * RESERVED SEGMENTS (#1637): no entry may be 'to', 'via', or 'from', nor
17
+ * contain one as a hyphen segment (e.g. 'door-to-door' is forbidden;
18
+ * 'tomato' and 'torch' are fine). The fill signature parser splits names
19
+ * on '-to-'. Enforced by the reservation test in test/naming.test.ts.
20
+ */
21
+
22
+ /**
23
+ * Lightness bands (5 levels)
24
+ * Maps to L bucket ranges for semantic compatibility
25
+ */
26
+ export type LightnessBand = 'veryDark' | 'dark' | 'mid' | 'light' | 'veryLight';
27
+
28
+ /**
29
+ * Chroma bands (4 levels)
30
+ * Maps to C bucket ranges for semantic compatibility
31
+ */
32
+ export type ChromaBand = 'muted' | 'moderate' | 'saturated' | 'vivid';
33
+
34
+ /**
35
+ * A cell in the L×C matrix containing semantically-appropriate words
36
+ */
37
+ export type HueCell = readonly string[];
38
+
39
+ /**
40
+ * The L×C matrix for a single hue hub
41
+ * Organized as [LightnessBand][ChromaBand] → words[]
42
+ */
43
+ export type HueMatrix = {
44
+ readonly [L in LightnessBand]: {
45
+ readonly [C in ChromaBand]: HueCell;
46
+ };
47
+ };
48
+
49
+ /**
50
+ * A complete hue hub with temperature variants
51
+ */
52
+ export type HueHub = {
53
+ readonly warm: HueMatrix;
54
+ readonly cool: HueMatrix;
55
+ readonly neutral: HueMatrix;
56
+ };
57
+
58
+ /**
59
+ * Map L bucket (0-9) to lightness band
60
+ */
61
+ export function getLightnessBand(lBucket: number): LightnessBand {
62
+ if (lBucket <= 1) return 'veryDark'; // 0.0-0.2
63
+ if (lBucket <= 3) return 'dark'; // 0.2-0.4
64
+ if (lBucket <= 5) return 'mid'; // 0.4-0.6
65
+ if (lBucket <= 7) return 'light'; // 0.6-0.8
66
+ return 'veryLight'; // 0.8-1.0
67
+ }
68
+
69
+ /**
70
+ * Map C bucket (0-7) to chroma band
71
+ */
72
+ export function getChromaBand(cBucket: number): ChromaBand {
73
+ if (cBucket <= 1) return 'muted'; // 0.00-0.06
74
+ if (cBucket <= 3) return 'moderate'; // 0.06-0.15
75
+ if (cBucket <= 5) return 'saturated'; // 0.15-0.25
76
+ return 'vivid'; // 0.25+
77
+ }
78
+
79
+ /**
80
+ * Calculate sub-index within a word list using fractional position
81
+ * This uses the "leftover" precision after bucketing to deterministically
82
+ * select which synonym to use.
83
+ *
84
+ * @param value - The original L, C, or H value
85
+ * @param bucketSize - The size of each bucket
86
+ * @param wordCount - Number of words available in the cell
87
+ * @returns Index into the word array (0 to wordCount-1)
88
+ */
89
+ export function getSubIndex(value: number, bucketSize: number, wordCount: number): number {
90
+ if (wordCount <= 1) return 0;
91
+ // Get position within bucket (0.0 to 1.0)
92
+ const withinBucket = (value % bucketSize) / bucketSize;
93
+ // Map to word index
94
+ return Math.min(Math.floor(withinBucket * wordCount), wordCount - 1);
95
+ }
96
+
97
+ // ============================================================================
98
+ // HUE HUBS - Organized by hue angle
99
+ // ============================================================================
100
+
101
+ /**
102
+ * Red Hub (0-20°)
103
+ * Core semantic: fire, blood, passion, danger, warmth
104
+ */
105
+ export const RED_HUB: HueHub = {
106
+ warm: {
107
+ veryDark: {
108
+ muted: [
109
+ 'oxblood',
110
+ 'dried-blood',
111
+ 'old-brick',
112
+ 'dark-clay',
113
+ 'burnt-earth',
114
+ 'aged-wine',
115
+ 'dark-rust',
116
+ 'iron-oxide',
117
+ 'terra-preta',
118
+ 'dark-madder',
119
+ ],
120
+ moderate: [
121
+ 'mahogany',
122
+ 'maroon',
123
+ 'burgundy',
124
+ 'cordovan',
125
+ 'wine',
126
+ 'blood',
127
+ 'liver',
128
+ 'puce',
129
+ 'dark-cherry',
130
+ 'mulled-wine',
131
+ ],
132
+ saturated: [
133
+ 'crimson',
134
+ 'carmine',
135
+ 'garnet',
136
+ 'ruby-dark',
137
+ 'pomegranate',
138
+ 'cranberry',
139
+ 'dark-scarlet',
140
+ 'blood-red',
141
+ 'oxheart',
142
+ 'pigeon-blood',
143
+ ],
144
+ vivid: [
145
+ 'blood-orange',
146
+ 'vermillion-dark',
147
+ 'firebrick',
148
+ 'dark-flame',
149
+ 'ember-glow',
150
+ 'molten-core',
151
+ 'lava-dark',
152
+ 'hot-coal',
153
+ 'inferno-dark',
154
+ 'dragon-blood',
155
+ ],
156
+ },
157
+ dark: {
158
+ muted: [
159
+ 'brick',
160
+ 'terracotta-dark',
161
+ 'rust',
162
+ 'dried-rose',
163
+ 'faded-barn',
164
+ 'weathered-brick',
165
+ 'old-copper',
166
+ 'patina-red',
167
+ 'dusty-cedar',
168
+ 'clay-pot',
169
+ ],
170
+ moderate: [
171
+ 'auburn',
172
+ 'chestnut',
173
+ 'russet',
174
+ 'sienna-red',
175
+ 'cinnamon-bark',
176
+ 'redwood',
177
+ 'sequoia',
178
+ 'cedar',
179
+ 'cayenne',
180
+ 'paprika',
181
+ ],
182
+ saturated: [
183
+ 'ruby',
184
+ 'cardinal',
185
+ 'cherry',
186
+ 'apple-red',
187
+ 'fire-engine',
188
+ 'candy-apple',
189
+ 'lipstick',
190
+ 'lacquer-red',
191
+ 'enamel-red',
192
+ 'geranium',
193
+ ],
194
+ vivid: [
195
+ 'scarlet',
196
+ 'vermillion',
197
+ 'flame',
198
+ 'blaze',
199
+ 'fire',
200
+ 'torch',
201
+ 'signal-red',
202
+ 'racing-red',
203
+ 'ferrari',
204
+ 'hot-rod',
205
+ ],
206
+ },
207
+ mid: {
208
+ muted: [
209
+ 'salmon-dark',
210
+ 'dusty-rose',
211
+ 'old-rose',
212
+ 'rosewood',
213
+ 'mauve-red',
214
+ 'antique-rose',
215
+ 'canyon-rose',
216
+ 'desert-rose',
217
+ 'adobe',
218
+ 'terra-rosa',
219
+ ],
220
+ moderate: [
221
+ 'coral-red',
222
+ 'poppy',
223
+ 'tomato',
224
+ 'pepper',
225
+ 'hibiscus',
226
+ 'carnation',
227
+ 'zinnia',
228
+ 'dahlia-red',
229
+ 'begonia',
230
+ 'impatiens',
231
+ ],
232
+ saturated: [
233
+ 'red',
234
+ 'true-red',
235
+ 'primary-red',
236
+ 'pure-red',
237
+ 'stop-sign',
238
+ 'fire-truck',
239
+ 'emergency',
240
+ 'alert-red',
241
+ 'danger',
242
+ 'warning-red',
243
+ ],
244
+ vivid: [
245
+ 'neon-red',
246
+ 'electric-red',
247
+ 'laser-red',
248
+ 'fluorescent-red',
249
+ 'hot-red',
250
+ 'vivid-red',
251
+ 'intense-red',
252
+ 'brilliant-red',
253
+ 'radiant-red',
254
+ 'blazing-red',
255
+ ],
256
+ },
257
+ light: {
258
+ muted: [
259
+ 'salmon',
260
+ 'rose-dust',
261
+ 'blush-pink',
262
+ 'dusty-pink',
263
+ 'muted-coral',
264
+ 'faded-rose',
265
+ 'vintage-rose',
266
+ 'tea-rose',
267
+ 'pressed-rose',
268
+ 'dried-petal',
269
+ ],
270
+ moderate: [
271
+ 'coral',
272
+ 'peach-red',
273
+ 'guava',
274
+ 'watermelon',
275
+ 'grapefruit',
276
+ 'papaya',
277
+ 'melon-red',
278
+ 'cantaloupe-blush',
279
+ 'apricot-red',
280
+ 'mango-red',
281
+ ],
282
+ saturated: [
283
+ 'light-red',
284
+ 'bright-coral',
285
+ 'strawberry',
286
+ 'raspberry-light',
287
+ 'cherry-blossom',
288
+ 'rose-red',
289
+ 'petal-red',
290
+ 'bloom-red',
291
+ 'spring-red',
292
+ 'fresh-red',
293
+ ],
294
+ vivid: [
295
+ 'hot-pink-red',
296
+ 'electric-coral',
297
+ 'neon-salmon',
298
+ 'vivid-coral',
299
+ 'bright-flame',
300
+ 'sunrise-red',
301
+ 'dawn-red',
302
+ 'morning-glory-red',
303
+ 'tropical-red',
304
+ 'paradise-red',
305
+ ],
306
+ },
307
+ veryLight: {
308
+ muted: [
309
+ 'blush',
310
+ 'rose-quartz',
311
+ 'powder-pink',
312
+ 'baby-pink',
313
+ 'shell-pink',
314
+ 'petal-pink',
315
+ 'whisper-pink',
316
+ 'ballet-pink',
317
+ 'tutu',
318
+ 'fairy-pink',
319
+ ],
320
+ moderate: [
321
+ 'light-coral',
322
+ 'peach-bloom',
323
+ 'rose-petal',
324
+ 'cherry-cream',
325
+ 'strawberry-cream',
326
+ 'rose-milk',
327
+ 'petal-soft',
328
+ 'blossom-pink',
329
+ 'spring-bloom',
330
+ 'garden-pink',
331
+ ],
332
+ saturated: [
333
+ 'bright-pink',
334
+ 'candy-pink',
335
+ 'bubblegum',
336
+ 'cotton-candy',
337
+ 'flamingo',
338
+ 'pink-lemonade',
339
+ 'raspberry-sorbet',
340
+ 'strawberry-ice',
341
+ 'rose-ice',
342
+ 'cherry-ice',
343
+ ],
344
+ vivid: [
345
+ 'hot-pink',
346
+ 'neon-pink',
347
+ 'electric-pink',
348
+ 'shocking-pink',
349
+ 'fuchsia-light',
350
+ 'magenta-light',
351
+ 'vivid-pink',
352
+ 'radiant-pink',
353
+ 'brilliant-pink',
354
+ 'laser-pink',
355
+ ],
356
+ },
357
+ },
358
+ cool: {
359
+ veryDark: {
360
+ muted: [
361
+ 'dried-blood',
362
+ 'old-wine',
363
+ 'aged-burgundy',
364
+ 'dark-plum-red',
365
+ 'bruised-cherry',
366
+ 'blackened-rose',
367
+ 'shadow-red',
368
+ 'eclipse-red',
369
+ 'midnight-red',
370
+ 'abyss-red',
371
+ ],
372
+ moderate: [
373
+ 'bordeaux',
374
+ 'merlot',
375
+ 'cabernet',
376
+ 'pinot-noir',
377
+ 'claret',
378
+ 'port',
379
+ 'sherry-dark',
380
+ 'sangria-dark',
381
+ 'mulberry-wine',
382
+ 'blackberry-wine',
383
+ ],
384
+ saturated: [
385
+ 'deep-crimson',
386
+ 'blood-ruby',
387
+ 'garnet-dark',
388
+ 'dark-cherry',
389
+ 'black-cherry',
390
+ 'morello',
391
+ 'bing-cherry',
392
+ 'oxheart-dark',
393
+ 'heart-blood',
394
+ 'arterial',
395
+ ],
396
+ vivid: [
397
+ 'dark-magenta-red',
398
+ 'deep-cerise',
399
+ 'dark-rose',
400
+ 'wine-red',
401
+ 'vampire-red',
402
+ 'gothic-red',
403
+ 'velvet-red',
404
+ 'theatre-red',
405
+ 'curtain-red',
406
+ 'drama-red',
407
+ ],
408
+ },
409
+ dark: {
410
+ muted: [
411
+ 'dusty-burgundy',
412
+ 'faded-wine',
413
+ 'aged-rose',
414
+ 'antique-red',
415
+ 'weathered-rose',
416
+ 'faded-crimson',
417
+ 'muted-cherry',
418
+ 'soft-maroon',
419
+ 'gentle-burgundy',
420
+ 'quiet-red',
421
+ ],
422
+ moderate: [
423
+ 'raspberry-dark',
424
+ 'boysenberry',
425
+ 'loganberry',
426
+ 'mulberry',
427
+ 'blackcurrant-red',
428
+ 'currant',
429
+ 'jam',
430
+ 'preserve-red',
431
+ 'compote',
432
+ 'reduction',
433
+ ],
434
+ saturated: [
435
+ 'cherry-wine',
436
+ 'berry-red',
437
+ 'cranberry-dark',
438
+ 'pomegranate-dark',
439
+ 'red-grape',
440
+ 'red-plum',
441
+ 'damson-red',
442
+ 'sloe-red',
443
+ 'bramble-red',
444
+ 'hedgerow-red',
445
+ ],
446
+ vivid: [
447
+ 'magenta-red',
448
+ 'cerise-dark',
449
+ 'rose-red-dark',
450
+ 'fuchsia-red',
451
+ 'amaranth-dark',
452
+ 'crimson-rose',
453
+ 'rose-crimson',
454
+ 'berry-vivid',
455
+ 'jewel-red',
456
+ 'gem-red',
457
+ ],
458
+ },
459
+ mid: {
460
+ muted: [
461
+ 'mauve-rose',
462
+ 'dusty-raspberry',
463
+ 'muted-berry',
464
+ 'soft-cherry',
465
+ 'quiet-rose',
466
+ 'gentle-red',
467
+ 'calm-rose',
468
+ 'serene-red',
469
+ 'peaceful-rose',
470
+ 'tender-red',
471
+ ],
472
+ moderate: [
473
+ 'raspberry',
474
+ 'red-violet',
475
+ 'rose-wine',
476
+ 'berry',
477
+ 'currant-red',
478
+ 'jam-red',
479
+ 'preserve',
480
+ 'fruit-red',
481
+ 'harvest-red',
482
+ 'orchard-red',
483
+ ],
484
+ saturated: [
485
+ 'amaranth',
486
+ 'cerise',
487
+ 'rose-red',
488
+ 'cherry-red',
489
+ 'berry-bright',
490
+ 'fruit-punch',
491
+ 'punch-red',
492
+ 'sangria',
493
+ 'mixed-berry',
494
+ 'summer-red',
495
+ ],
496
+ vivid: [
497
+ 'magenta',
498
+ 'fuchsia-red',
499
+ 'electric-rose',
500
+ 'neon-cerise',
501
+ 'hot-rose',
502
+ 'vivid-rose',
503
+ 'brilliant-rose',
504
+ 'radiant-rose',
505
+ 'laser-rose',
506
+ 'plasma-rose',
507
+ ],
508
+ },
509
+ light: {
510
+ muted: [
511
+ 'dusty-rose-light',
512
+ 'muted-pink',
513
+ 'soft-rose',
514
+ 'gentle-pink',
515
+ 'quiet-blush',
516
+ 'calm-rose',
517
+ 'serene-pink',
518
+ 'peaceful-blush',
519
+ 'tender-rose',
520
+ 'delicate-pink',
521
+ ],
522
+ moderate: [
523
+ 'rose',
524
+ 'pink-rose',
525
+ 'tea-rose-light',
526
+ 'garden-rose',
527
+ 'english-rose',
528
+ 'damask-rose',
529
+ 'cabbage-rose',
530
+ 'peony-pink',
531
+ 'carnation-pink',
532
+ 'sweet-william',
533
+ ],
534
+ saturated: [
535
+ 'bright-rose',
536
+ 'vivid-pink',
537
+ 'rose-bright',
538
+ 'cherry-pink',
539
+ 'berry-pink',
540
+ 'raspberry-pink',
541
+ 'strawberry-pink',
542
+ 'fruit-pink',
543
+ 'candy-rose',
544
+ 'sweet-rose',
545
+ ],
546
+ vivid: [
547
+ 'hot-rose',
548
+ 'electric-rose-light',
549
+ 'neon-rose',
550
+ 'fluorescent-rose',
551
+ 'laser-rose-light',
552
+ 'plasma-pink',
553
+ 'vivid-rose-light',
554
+ 'brilliant-rose-light',
555
+ 'radiant-rose-light',
556
+ 'glowing-rose',
557
+ ],
558
+ },
559
+ veryLight: {
560
+ muted: [
561
+ 'pale-rose',
562
+ 'whisper-rose',
563
+ 'ghost-pink',
564
+ 'phantom-rose',
565
+ 'mist-pink',
566
+ 'fog-rose',
567
+ 'cloud-pink',
568
+ 'dream-rose',
569
+ 'ethereal-pink',
570
+ 'spirit-rose',
571
+ ],
572
+ moderate: [
573
+ 'light-rose',
574
+ 'rose-cream',
575
+ 'pink-cream',
576
+ 'rose-milk',
577
+ 'strawberry-milk',
578
+ 'cherry-cream',
579
+ 'berry-cream',
580
+ 'fruit-cream',
581
+ 'blossom-cream',
582
+ 'petal-cream',
583
+ ],
584
+ saturated: [
585
+ 'bright-rose-light',
586
+ 'vivid-rose-pale',
587
+ 'rose-ice',
588
+ 'pink-ice',
589
+ 'frozen-rose',
590
+ 'crystal-pink',
591
+ 'diamond-rose',
592
+ 'gem-pink',
593
+ 'jewel-rose',
594
+ 'precious-pink',
595
+ ],
596
+ vivid: [
597
+ 'neon-rose-light',
598
+ 'electric-pink-pale',
599
+ 'hot-pink-light',
600
+ 'shocking-pink-light',
601
+ 'vivid-pink-light',
602
+ 'brilliant-pink-light',
603
+ 'radiant-pink-light',
604
+ 'glowing-pink',
605
+ 'luminous-pink',
606
+ 'phosphor-pink',
607
+ ],
608
+ },
609
+ },
610
+ neutral: {
611
+ veryDark: {
612
+ muted: [
613
+ 'dark-taupe-red',
614
+ 'shadowed-clay',
615
+ 'deep-earth-red',
616
+ 'dark-adobe',
617
+ 'burnt-sienna-dark',
618
+ 'raw-umber-red',
619
+ 'dark-ochre-red',
620
+ 'iron-earth',
621
+ 'ferrous-clay',
622
+ 'mineral-red',
623
+ ],
624
+ moderate: [
625
+ 'indian-red-dark',
626
+ 'venetian-red-dark',
627
+ 'english-red-dark',
628
+ 'mars-red',
629
+ 'oxide-red',
630
+ 'iron-red',
631
+ 'hematite',
632
+ 'jasper-dark',
633
+ 'carnelian-dark',
634
+ 'sardonyx',
635
+ ],
636
+ saturated: [
637
+ 'cadmium-red-dark',
638
+ 'chinese-red-dark',
639
+ 'dragon-red',
640
+ 'lacquer-dark',
641
+ 'cinnabar-dark',
642
+ 'vermillion-dark-neutral',
643
+ 'mineral-vermillion',
644
+ 'natural-red',
645
+ 'earth-crimson',
646
+ 'clay-crimson',
647
+ ],
648
+ vivid: [
649
+ 'spectrum-red-dark',
650
+ 'true-red-dark',
651
+ 'primary-red-dark',
652
+ 'pure-red-dark',
653
+ 'essential-red-dark',
654
+ 'fundamental-red',
655
+ 'base-red-dark',
656
+ 'core-red',
657
+ 'central-red',
658
+ 'heart-red',
659
+ ],
660
+ },
661
+ dark: {
662
+ muted: [
663
+ 'indian-red',
664
+ 'venetian-red',
665
+ 'english-red',
666
+ 'persian-red',
667
+ 'turkish-red',
668
+ 'morocco-red',
669
+ 'arabian-red',
670
+ 'sahara-red',
671
+ 'desert-red',
672
+ 'canyon-red',
673
+ ],
674
+ moderate: [
675
+ 'brick-red',
676
+ 'tile-red',
677
+ 'roof-red',
678
+ 'pottery-red',
679
+ 'ceramic-red',
680
+ 'terracotta',
681
+ 'earthenware',
682
+ 'stoneware-red',
683
+ 'kiln-red',
684
+ 'fired-clay',
685
+ ],
686
+ saturated: [
687
+ 'cadmium-red',
688
+ 'chinese-red',
689
+ 'cinnabar',
690
+ 'vermillion-neutral',
691
+ 'lacquer',
692
+ 'enamel',
693
+ 'glaze-red',
694
+ 'porcelain-red',
695
+ 'china-red',
696
+ 'oriental-red',
697
+ ],
698
+ vivid: [
699
+ 'spectrum-red',
700
+ 'true-red-neutral',
701
+ 'primary',
702
+ 'pure',
703
+ 'essential-red',
704
+ 'fundamental',
705
+ 'base-red',
706
+ 'standard-red',
707
+ 'reference-red',
708
+ 'calibration-red',
709
+ ],
710
+ },
711
+ mid: {
712
+ muted: [
713
+ 'salmon-neutral',
714
+ 'terra-cotta-light',
715
+ 'adobe-light',
716
+ 'pueblo',
717
+ 'mesa',
718
+ 'butte',
719
+ 'sedona',
720
+ 'moab',
721
+ 'arches',
722
+ 'canyon-light',
723
+ ],
724
+ moderate: [
725
+ 'coral-neutral',
726
+ 'sunset',
727
+ 'sunrise',
728
+ 'dawn',
729
+ 'dusk',
730
+ 'twilight-red',
731
+ 'horizon',
732
+ 'skyline-red',
733
+ 'atmosphere',
734
+ 'ambient-red',
735
+ ],
736
+ saturated: [
737
+ 'red-neutral',
738
+ 'balanced-red',
739
+ 'centered-red',
740
+ 'median-red',
741
+ 'middle-red',
742
+ 'mean-red',
743
+ 'average-red',
744
+ 'typical-red',
745
+ 'common-red',
746
+ 'standard',
747
+ ],
748
+ vivid: [
749
+ 'vivid-red-neutral',
750
+ 'intense-neutral',
751
+ 'strong-red',
752
+ 'powerful-red',
753
+ 'forceful-red',
754
+ 'dynamic-red',
755
+ 'energetic-red',
756
+ 'active-red',
757
+ 'vital-red',
758
+ 'living-red',
759
+ ],
760
+ },
761
+ light: {
762
+ muted: [
763
+ 'peach',
764
+ 'apricot',
765
+ 'melon',
766
+ 'cantaloupe',
767
+ 'papaya-light',
768
+ 'mango-light',
769
+ 'guava-light',
770
+ 'passion-fruit',
771
+ 'tropical-peach',
772
+ 'island-coral',
773
+ ],
774
+ moderate: [
775
+ 'light-coral-neutral',
776
+ 'shell',
777
+ 'conch',
778
+ 'nautilus',
779
+ 'scallop',
780
+ 'oyster-pink',
781
+ 'pearl-pink',
782
+ 'mother-of-pearl-pink',
783
+ 'abalone-pink',
784
+ 'sea-shell',
785
+ ],
786
+ saturated: [
787
+ 'bright-coral-neutral',
788
+ 'reef',
789
+ 'lagoon-coral',
790
+ 'tropical-coral',
791
+ 'island-coral-bright',
792
+ 'pacific-coral',
793
+ 'caribbean-coral',
794
+ 'atlantic-coral',
795
+ 'mediterranean-coral',
796
+ 'aegean-coral',
797
+ ],
798
+ vivid: [
799
+ 'electric-coral',
800
+ 'neon-coral',
801
+ 'fluorescent-coral',
802
+ 'phosphor-coral',
803
+ 'luminous-coral',
804
+ 'glowing-coral',
805
+ 'radiant-coral',
806
+ 'brilliant-coral-neutral',
807
+ 'vivid-coral-neutral',
808
+ 'intense-coral',
809
+ ],
810
+ },
811
+ veryLight: {
812
+ muted: [
813
+ 'nude',
814
+ 'skin',
815
+ 'flesh',
816
+ 'complexion',
817
+ 'bisque',
818
+ 'porcelain-skin',
819
+ 'ivory-skin',
820
+ 'cream-skin',
821
+ 'milk-skin',
822
+ 'pearl-skin',
823
+ ],
824
+ moderate: [
825
+ 'peach-cream',
826
+ 'apricot-cream',
827
+ 'melon-cream',
828
+ 'fruit-cream-neutral',
829
+ 'blossom-white',
830
+ 'petal-white',
831
+ 'flower-white',
832
+ 'bloom-white',
833
+ 'spring-white',
834
+ 'garden-white',
835
+ ],
836
+ saturated: [
837
+ 'pink-white',
838
+ 'rose-white',
839
+ 'blush-white',
840
+ 'coral-white',
841
+ 'salmon-white',
842
+ 'peach-white',
843
+ 'apricot-white',
844
+ 'melon-white',
845
+ 'fruit-white',
846
+ 'tropical-white',
847
+ ],
848
+ vivid: [
849
+ 'bright-blush',
850
+ 'vivid-nude',
851
+ 'intense-peach',
852
+ 'strong-blush',
853
+ 'powerful-pink-white',
854
+ 'dynamic-blush',
855
+ 'energetic-nude',
856
+ 'active-peach',
857
+ 'vital-blush',
858
+ 'living-pink',
859
+ ],
860
+ },
861
+ },
862
+ };
863
+
864
+ /**
865
+ * Blue Hub (220-240°)
866
+ * Core semantic: sky, ocean, trust, calm, depth
867
+ */
868
+ export const BLUE_HUB: HueHub = {
869
+ warm: {
870
+ veryDark: {
871
+ muted: [
872
+ 'dark-denim',
873
+ 'worn-navy',
874
+ 'faded-indigo',
875
+ 'old-blue',
876
+ 'aged-blue',
877
+ 'weathered-blue',
878
+ 'antique-blue',
879
+ 'vintage-navy',
880
+ 'heritage-blue',
881
+ 'classic-navy',
882
+ ],
883
+ moderate: [
884
+ 'navy',
885
+ 'midnight',
886
+ 'dark-navy',
887
+ 'deep-navy',
888
+ 'true-navy',
889
+ 'naval',
890
+ 'admiral',
891
+ 'commodore',
892
+ 'captain-blue',
893
+ 'officer-blue',
894
+ ],
895
+ saturated: [
896
+ 'prussian',
897
+ 'berlin-blue',
898
+ 'paris-blue',
899
+ 'french-navy',
900
+ 'royal-dark',
901
+ 'imperial-blue',
902
+ 'regal-blue',
903
+ 'noble-blue',
904
+ 'sovereign-blue',
905
+ 'crown-blue',
906
+ ],
907
+ vivid: [
908
+ 'electric-navy',
909
+ 'vivid-navy',
910
+ 'intense-navy',
911
+ 'deep-electric',
912
+ 'dark-laser',
913
+ 'night-electric',
914
+ 'midnight-vivid',
915
+ 'dark-neon',
916
+ 'deep-glow',
917
+ 'abyss-electric',
918
+ ],
919
+ },
920
+ dark: {
921
+ muted: [
922
+ 'slate-blue',
923
+ 'blue-gray',
924
+ 'steel-blue-dark',
925
+ 'iron-blue',
926
+ 'gunmetal-blue',
927
+ 'battleship-blue',
928
+ 'charcoal-blue',
929
+ 'ash-blue',
930
+ 'smoke-blue',
931
+ 'fog-blue-dark',
932
+ ],
933
+ moderate: [
934
+ 'denim',
935
+ 'jean-blue',
936
+ 'work-blue',
937
+ 'uniform-blue',
938
+ 'service-blue',
939
+ 'utility-blue',
940
+ 'industrial-blue',
941
+ 'factory-blue',
942
+ 'workshop-blue',
943
+ 'trade-blue',
944
+ ],
945
+ saturated: [
946
+ 'sapphire',
947
+ 'lapis',
948
+ 'lazuli',
949
+ 'ultramarine',
950
+ 'cobalt',
951
+ 'smalt',
952
+ 'azurite',
953
+ 'blue-john',
954
+ 'sodalite',
955
+ 'dumortierite',
956
+ ],
957
+ vivid: [
958
+ 'electric-blue-dark',
959
+ 'laser-blue',
960
+ 'plasma-blue',
961
+ 'neon-blue-dark',
962
+ 'fluorescent-blue-dark',
963
+ 'phosphor-blue',
964
+ 'luminous-blue-dark',
965
+ 'glowing-blue-dark',
966
+ 'radiant-blue-dark',
967
+ 'brilliant-blue-dark',
968
+ ],
969
+ },
970
+ mid: {
971
+ muted: [
972
+ 'cadet',
973
+ 'air-force',
974
+ 'uniform',
975
+ 'service',
976
+ 'utility',
977
+ 'wedgwood',
978
+ 'delft',
979
+ 'faience',
980
+ 'majolica',
981
+ 'ceramic-blue',
982
+ ],
983
+ moderate: [
984
+ 'steel',
985
+ 'titanium-blue',
986
+ 'alloy-blue',
987
+ 'metal-blue',
988
+ 'chrome-blue',
989
+ 'nickel-blue',
990
+ 'silver-blue',
991
+ 'platinum-blue',
992
+ 'palladium-blue',
993
+ 'rhodium-blue',
994
+ ],
995
+ saturated: [
996
+ 'true-blue',
997
+ 'blue',
998
+ 'primary-blue',
999
+ 'pure-blue',
1000
+ 'essential-blue',
1001
+ 'fundamental-blue',
1002
+ 'base-blue',
1003
+ 'standard-blue',
1004
+ 'reference-blue',
1005
+ 'calibration-blue',
1006
+ ],
1007
+ vivid: [
1008
+ 'electric',
1009
+ 'neon-blue',
1010
+ 'laser',
1011
+ 'plasma',
1012
+ 'fluorescent-blue',
1013
+ 'phosphor',
1014
+ 'luminous-blue',
1015
+ 'glowing-blue',
1016
+ 'radiant-blue',
1017
+ 'brilliant-blue',
1018
+ ],
1019
+ },
1020
+ light: {
1021
+ muted: [
1022
+ 'powder-blue',
1023
+ 'baby-blue',
1024
+ 'soft-blue',
1025
+ 'gentle-blue',
1026
+ 'quiet-blue',
1027
+ 'calm-blue',
1028
+ 'serene-blue',
1029
+ 'peaceful-blue',
1030
+ 'tranquil-blue',
1031
+ 'restful-blue',
1032
+ ],
1033
+ moderate: [
1034
+ 'sky',
1035
+ 'daylight',
1036
+ 'clear-sky',
1037
+ 'fair-sky',
1038
+ 'fine-sky',
1039
+ 'bright-sky',
1040
+ 'morning-sky',
1041
+ 'noon-sky',
1042
+ 'afternoon-sky',
1043
+ 'golden-hour-blue',
1044
+ ],
1045
+ saturated: [
1046
+ 'cornflower',
1047
+ 'periwinkle-blue',
1048
+ 'bluebell',
1049
+ 'forget-me-not',
1050
+ 'larkspur',
1051
+ 'delphinium',
1052
+ 'bachelor-button',
1053
+ 'chicory',
1054
+ 'borage',
1055
+ 'viper-bugloss',
1056
+ ],
1057
+ vivid: [
1058
+ 'electric-blue-light',
1059
+ 'neon-sky',
1060
+ 'laser-blue-light',
1061
+ 'plasma-sky',
1062
+ 'fluorescent-sky',
1063
+ 'phosphor-sky',
1064
+ 'luminous-sky',
1065
+ 'glowing-sky',
1066
+ 'radiant-sky',
1067
+ 'brilliant-sky',
1068
+ ],
1069
+ },
1070
+ veryLight: {
1071
+ muted: [
1072
+ 'ice-blue',
1073
+ 'frost-blue',
1074
+ 'winter-blue',
1075
+ 'snow-blue',
1076
+ 'glacier-blue-light',
1077
+ 'arctic-blue-light',
1078
+ 'polar-blue',
1079
+ 'frozen-blue',
1080
+ 'crystal-blue',
1081
+ 'diamond-blue',
1082
+ ],
1083
+ moderate: [
1084
+ 'pale-blue',
1085
+ 'light-blue',
1086
+ 'sky-blue-light',
1087
+ 'heaven-blue',
1088
+ 'celestial-blue',
1089
+ 'ethereal-blue',
1090
+ 'angelic-blue',
1091
+ 'divine-blue',
1092
+ 'sacred-blue',
1093
+ 'holy-blue',
1094
+ ],
1095
+ saturated: [
1096
+ 'bright-sky',
1097
+ 'vivid-sky',
1098
+ 'intense-sky',
1099
+ 'strong-sky',
1100
+ 'powerful-sky',
1101
+ 'dynamic-sky',
1102
+ 'energetic-sky',
1103
+ 'active-sky',
1104
+ 'vital-sky',
1105
+ 'living-sky',
1106
+ ],
1107
+ vivid: [
1108
+ 'neon-ice',
1109
+ 'electric-ice',
1110
+ 'laser-ice',
1111
+ 'plasma-ice',
1112
+ 'fluorescent-ice',
1113
+ 'phosphor-ice',
1114
+ 'luminous-ice',
1115
+ 'glowing-ice',
1116
+ 'radiant-ice',
1117
+ 'brilliant-ice',
1118
+ ],
1119
+ },
1120
+ },
1121
+ cool: {
1122
+ veryDark: {
1123
+ muted: [
1124
+ 'ink',
1125
+ 'charcoal-blue',
1126
+ 'shadow-blue',
1127
+ 'eclipse-blue',
1128
+ 'void-blue',
1129
+ 'abyss-blue',
1130
+ 'deep-space',
1131
+ 'cosmos-blue',
1132
+ 'universe-blue',
1133
+ 'infinity-blue',
1134
+ ],
1135
+ moderate: [
1136
+ 'midnight-blue',
1137
+ 'night-blue',
1138
+ 'evening-blue',
1139
+ 'dusk-blue',
1140
+ 'twilight-blue',
1141
+ 'gloaming-blue',
1142
+ 'crepuscular-blue',
1143
+ 'nocturnal-blue',
1144
+ 'dark-hours',
1145
+ 'witching-blue',
1146
+ ],
1147
+ saturated: [
1148
+ 'ocean-deep',
1149
+ 'abyssal',
1150
+ 'hadal',
1151
+ 'trench-blue',
1152
+ 'mariana',
1153
+ 'deep-sea',
1154
+ 'bathyal',
1155
+ 'benthic',
1156
+ 'pelagic-dark',
1157
+ 'oceanic-dark',
1158
+ ],
1159
+ vivid: [
1160
+ 'bioluminescent-dark',
1161
+ 'deep-glow-ocean',
1162
+ 'abyssal-light',
1163
+ 'trench-glow',
1164
+ 'hadal-light',
1165
+ 'deep-phosphor',
1166
+ 'ocean-phosphor',
1167
+ 'sea-glow-dark',
1168
+ 'marine-light-dark',
1169
+ 'aquatic-glow-dark',
1170
+ ],
1171
+ },
1172
+ dark: {
1173
+ muted: [
1174
+ 'ocean-gray',
1175
+ 'sea-fog',
1176
+ 'marine-mist',
1177
+ 'nautical-gray',
1178
+ 'maritime-blue',
1179
+ 'coastal-gray',
1180
+ 'shore-blue',
1181
+ 'harbor-blue',
1182
+ 'port-blue',
1183
+ 'dock-blue',
1184
+ ],
1185
+ moderate: [
1186
+ 'ocean',
1187
+ 'sea',
1188
+ 'marine',
1189
+ 'nautical',
1190
+ 'maritime',
1191
+ 'naval-cool',
1192
+ 'fleet-blue',
1193
+ 'armada-blue',
1194
+ 'flotilla-blue',
1195
+ 'squadron-blue',
1196
+ ],
1197
+ saturated: [
1198
+ 'deep-ocean',
1199
+ 'deep-sea-cool',
1200
+ 'deep-marine',
1201
+ 'deep-nautical',
1202
+ 'deep-maritime',
1203
+ 'atlantic',
1204
+ 'pacific-blue',
1205
+ 'indian-ocean',
1206
+ 'southern-ocean',
1207
+ 'arctic-ocean',
1208
+ ],
1209
+ vivid: [
1210
+ 'electric-ocean',
1211
+ 'neon-sea',
1212
+ 'laser-marine',
1213
+ 'plasma-ocean',
1214
+ 'fluorescent-sea',
1215
+ 'phosphor-marine',
1216
+ 'luminous-ocean',
1217
+ 'glowing-sea',
1218
+ 'radiant-marine',
1219
+ 'brilliant-ocean',
1220
+ ],
1221
+ },
1222
+ mid: {
1223
+ muted: [
1224
+ 'sea-blue',
1225
+ 'wave-blue',
1226
+ 'surf-blue',
1227
+ 'tide-blue',
1228
+ 'current-blue',
1229
+ 'flow-blue',
1230
+ 'stream-blue',
1231
+ 'river-blue',
1232
+ 'creek-blue',
1233
+ 'brook-blue',
1234
+ ],
1235
+ moderate: [
1236
+ 'azure',
1237
+ 'cerulean',
1238
+ 'peacock-blue',
1239
+ 'teal-blue',
1240
+ 'duck-blue',
1241
+ 'mallard',
1242
+ 'kingfisher',
1243
+ 'heron-blue',
1244
+ 'crane-blue',
1245
+ 'egret-blue',
1246
+ ],
1247
+ saturated: [
1248
+ 'bright-ocean',
1249
+ 'vivid-sea',
1250
+ 'intense-marine',
1251
+ 'strong-nautical',
1252
+ 'powerful-maritime',
1253
+ 'dynamic-ocean',
1254
+ 'energetic-sea',
1255
+ 'active-marine',
1256
+ 'vital-ocean',
1257
+ 'living-sea',
1258
+ ],
1259
+ vivid: [
1260
+ 'electric-azure',
1261
+ 'neon-cerulean',
1262
+ 'laser-peacock',
1263
+ 'plasma-teal',
1264
+ 'fluorescent-azure',
1265
+ 'phosphor-cerulean',
1266
+ 'luminous-azure',
1267
+ 'glowing-cerulean',
1268
+ 'radiant-azure',
1269
+ 'brilliant-cerulean',
1270
+ ],
1271
+ },
1272
+ light: {
1273
+ muted: [
1274
+ 'seafoam-blue',
1275
+ 'spray-blue',
1276
+ 'mist-blue',
1277
+ 'vapor-blue',
1278
+ 'steam-blue',
1279
+ 'cloud-blue',
1280
+ 'wisp-blue',
1281
+ 'breath-blue',
1282
+ 'whisper-blue',
1283
+ 'sigh-blue',
1284
+ ],
1285
+ moderate: [
1286
+ 'aquamarine-light',
1287
+ 'pool-blue',
1288
+ 'lagoon-blue',
1289
+ 'cove-blue',
1290
+ 'bay-blue',
1291
+ 'inlet-blue',
1292
+ 'sound-blue',
1293
+ 'strait-blue',
1294
+ 'channel-blue',
1295
+ 'passage-blue',
1296
+ ],
1297
+ saturated: [
1298
+ 'bright-aqua',
1299
+ 'vivid-pool',
1300
+ 'intense-lagoon',
1301
+ 'strong-cove',
1302
+ 'powerful-bay',
1303
+ 'dynamic-inlet',
1304
+ 'energetic-pool',
1305
+ 'active-lagoon',
1306
+ 'vital-cove',
1307
+ 'living-bay',
1308
+ ],
1309
+ vivid: [
1310
+ 'electric-aqua',
1311
+ 'neon-pool',
1312
+ 'laser-lagoon',
1313
+ 'plasma-cove',
1314
+ 'fluorescent-bay',
1315
+ 'phosphor-inlet',
1316
+ 'luminous-pool',
1317
+ 'glowing-lagoon',
1318
+ 'radiant-cove',
1319
+ 'brilliant-bay',
1320
+ ],
1321
+ },
1322
+ veryLight: {
1323
+ muted: [
1324
+ 'glacier',
1325
+ 'iceberg',
1326
+ 'floe',
1327
+ 'pack-ice',
1328
+ 'shelf-ice',
1329
+ 'berg-blue',
1330
+ 'calving-blue',
1331
+ 'melt-blue',
1332
+ 'thaw-blue',
1333
+ 'spring-ice',
1334
+ ],
1335
+ moderate: [
1336
+ 'arctic',
1337
+ 'antarctic',
1338
+ 'polar-cool',
1339
+ 'boreal-blue',
1340
+ 'northern-blue',
1341
+ 'southern-blue',
1342
+ 'circumpolar',
1343
+ 'subarctic',
1344
+ 'subantarctic',
1345
+ 'periglacial',
1346
+ ],
1347
+ saturated: [
1348
+ 'bright-glacier',
1349
+ 'vivid-ice',
1350
+ 'intense-arctic',
1351
+ 'strong-polar',
1352
+ 'powerful-boreal',
1353
+ 'dynamic-glacier',
1354
+ 'energetic-ice',
1355
+ 'active-arctic',
1356
+ 'vital-polar',
1357
+ 'living-glacier',
1358
+ ],
1359
+ vivid: [
1360
+ 'neon-glacier',
1361
+ 'electric-arctic',
1362
+ 'laser-polar',
1363
+ 'plasma-boreal',
1364
+ 'fluorescent-glacier',
1365
+ 'phosphor-arctic',
1366
+ 'luminous-glacier',
1367
+ 'glowing-arctic',
1368
+ 'radiant-glacier',
1369
+ 'brilliant-arctic',
1370
+ ],
1371
+ },
1372
+ },
1373
+ neutral: {
1374
+ veryDark: {
1375
+ muted: [
1376
+ 'charcoal-indigo',
1377
+ 'graphite-blue',
1378
+ 'carbon-blue',
1379
+ 'mineral-blue-dark',
1380
+ 'stone-blue-dark',
1381
+ 'rock-blue',
1382
+ 'slate-dark',
1383
+ 'shale-blue',
1384
+ 'basalt-blue',
1385
+ 'granite-blue',
1386
+ ],
1387
+ moderate: [
1388
+ 'indigo',
1389
+ 'woad',
1390
+ 'natural-indigo',
1391
+ 'plant-indigo',
1392
+ 'organic-indigo',
1393
+ 'true-indigo',
1394
+ 'pure-indigo',
1395
+ 'essential-indigo',
1396
+ 'fundamental-indigo',
1397
+ 'base-indigo',
1398
+ ],
1399
+ saturated: [
1400
+ 'deep-indigo',
1401
+ 'rich-indigo',
1402
+ 'full-indigo',
1403
+ 'saturated-indigo',
1404
+ 'intense-indigo',
1405
+ 'strong-indigo',
1406
+ 'powerful-indigo',
1407
+ 'dynamic-indigo',
1408
+ 'energetic-indigo',
1409
+ 'vital-indigo',
1410
+ ],
1411
+ vivid: [
1412
+ 'vivid-indigo',
1413
+ 'brilliant-indigo',
1414
+ 'radiant-indigo',
1415
+ 'glowing-indigo',
1416
+ 'luminous-indigo',
1417
+ 'phosphor-indigo',
1418
+ 'fluorescent-indigo',
1419
+ 'neon-indigo',
1420
+ 'electric-indigo',
1421
+ 'laser-indigo',
1422
+ ],
1423
+ },
1424
+ dark: {
1425
+ muted: [
1426
+ 'mineral-blue',
1427
+ 'stone-blue',
1428
+ 'pebble-blue',
1429
+ 'gravel-blue',
1430
+ 'sand-blue',
1431
+ 'earth-blue',
1432
+ 'soil-blue',
1433
+ 'clay-blue',
1434
+ 'loam-blue',
1435
+ 'humus-blue',
1436
+ ],
1437
+ moderate: [
1438
+ 'natural-blue',
1439
+ 'organic-blue',
1440
+ 'eco-blue',
1441
+ 'green-blue',
1442
+ 'sustainable-blue',
1443
+ 'renewable-blue',
1444
+ 'recycled-blue',
1445
+ 'upcycled-blue',
1446
+ 'repurposed-blue',
1447
+ 'reclaimed-blue',
1448
+ ],
1449
+ saturated: [
1450
+ 'spectrum-blue-dark',
1451
+ 'balanced-blue-dark',
1452
+ 'centered-blue',
1453
+ 'median-blue',
1454
+ 'middle-blue',
1455
+ 'mean-blue',
1456
+ 'average-blue',
1457
+ 'typical-blue',
1458
+ 'common-blue',
1459
+ 'standard-blue-dark',
1460
+ ],
1461
+ vivid: [
1462
+ 'spectrum-vivid-dark',
1463
+ 'balanced-vivid',
1464
+ 'centered-vivid',
1465
+ 'median-vivid',
1466
+ 'middle-vivid',
1467
+ 'mean-vivid',
1468
+ 'average-vivid',
1469
+ 'typical-vivid',
1470
+ 'common-vivid',
1471
+ 'standard-vivid',
1472
+ ],
1473
+ },
1474
+ mid: {
1475
+ muted: [
1476
+ 'linen-blue',
1477
+ 'cotton-blue',
1478
+ 'hemp-blue',
1479
+ 'flax-blue',
1480
+ 'jute-blue',
1481
+ 'sisal-blue',
1482
+ 'ramie-blue',
1483
+ 'bamboo-blue',
1484
+ 'silk-blue',
1485
+ 'wool-blue',
1486
+ ],
1487
+ moderate: [
1488
+ 'textile-blue',
1489
+ 'fabric-blue',
1490
+ 'cloth-blue',
1491
+ 'weave-blue',
1492
+ 'thread-blue',
1493
+ 'yarn-blue',
1494
+ 'fiber-blue',
1495
+ 'filament-blue',
1496
+ 'strand-blue',
1497
+ 'string-blue',
1498
+ ],
1499
+ saturated: [
1500
+ 'spectrum-blue',
1501
+ 'balanced-blue',
1502
+ 'neutral-blue',
1503
+ 'even-blue',
1504
+ 'equal-blue',
1505
+ 'fair-blue',
1506
+ 'just-blue',
1507
+ 'right-blue',
1508
+ 'true-blue-neutral',
1509
+ 'pure-blue-neutral',
1510
+ ],
1511
+ vivid: [
1512
+ 'vivid-spectrum',
1513
+ 'brilliant-balanced',
1514
+ 'radiant-neutral',
1515
+ 'glowing-even',
1516
+ 'luminous-equal',
1517
+ 'phosphor-fair',
1518
+ 'fluorescent-just',
1519
+ 'neon-right',
1520
+ 'electric-true',
1521
+ 'laser-pure',
1522
+ ],
1523
+ },
1524
+ light: {
1525
+ muted: [
1526
+ 'linen-light',
1527
+ 'cotton-light',
1528
+ 'muslin-blue',
1529
+ 'gauze-blue',
1530
+ 'voile-blue',
1531
+ 'chiffon-blue',
1532
+ 'organza-blue',
1533
+ 'tulle-blue',
1534
+ 'lace-blue',
1535
+ 'mesh-blue',
1536
+ ],
1537
+ moderate: [
1538
+ 'canvas-blue',
1539
+ 'sailcloth',
1540
+ 'duck-cloth',
1541
+ 'twill-blue',
1542
+ 'denim-light',
1543
+ 'chambray',
1544
+ 'oxford-blue',
1545
+ 'poplin-blue',
1546
+ 'broadcloth-blue',
1547
+ 'percale-blue',
1548
+ ],
1549
+ saturated: [
1550
+ 'bright-neutral-blue',
1551
+ 'vivid-balanced',
1552
+ 'intense-even',
1553
+ 'strong-equal',
1554
+ 'powerful-fair',
1555
+ 'dynamic-just',
1556
+ 'energetic-right',
1557
+ 'active-true',
1558
+ 'vital-pure',
1559
+ 'living-neutral',
1560
+ ],
1561
+ vivid: [
1562
+ 'brilliant-neutral',
1563
+ 'radiant-balanced',
1564
+ 'glowing-even',
1565
+ 'luminous-equal',
1566
+ 'phosphor-neutral',
1567
+ 'fluorescent-balanced',
1568
+ 'neon-even',
1569
+ 'electric-equal',
1570
+ 'laser-fair',
1571
+ 'plasma-just',
1572
+ ],
1573
+ },
1574
+ veryLight: {
1575
+ muted: [
1576
+ 'white-blue',
1577
+ 'milk-blue',
1578
+ 'cream-blue',
1579
+ 'ivory-blue',
1580
+ 'bone-blue',
1581
+ 'chalk-blue',
1582
+ 'snow-blue-light',
1583
+ 'frost-white-blue',
1584
+ 'ice-white',
1585
+ 'crystal-white',
1586
+ ],
1587
+ moderate: [
1588
+ 'pale-neutral-blue',
1589
+ 'light-neutral',
1590
+ 'fair-neutral',
1591
+ 'clear-neutral',
1592
+ 'clean-neutral',
1593
+ 'pure-neutral',
1594
+ 'fresh-neutral',
1595
+ 'new-neutral',
1596
+ 'young-neutral',
1597
+ 'spring-neutral',
1598
+ ],
1599
+ saturated: [
1600
+ 'bright-white-blue',
1601
+ 'vivid-white-blue',
1602
+ 'intense-white-blue',
1603
+ 'strong-white-blue',
1604
+ 'powerful-white-blue',
1605
+ 'dynamic-white-blue',
1606
+ 'energetic-white-blue',
1607
+ 'active-white-blue',
1608
+ 'vital-white-blue',
1609
+ 'living-white-blue',
1610
+ ],
1611
+ vivid: [
1612
+ 'brilliant-white-blue',
1613
+ 'radiant-white-blue',
1614
+ 'glowing-white-blue',
1615
+ 'luminous-white-blue',
1616
+ 'phosphor-white-blue',
1617
+ 'fluorescent-white-blue',
1618
+ 'neon-white-blue',
1619
+ 'electric-white-blue',
1620
+ 'laser-white-blue',
1621
+ 'plasma-white-blue',
1622
+ ],
1623
+ },
1624
+ },
1625
+ };
1626
+
1627
+ /**
1628
+ * Green Hub (120-140°)
1629
+ * Core semantic: nature, growth, life, freshness, environment
1630
+ */
1631
+ export const GREEN_HUB: HueHub = {
1632
+ warm: {
1633
+ veryDark: {
1634
+ muted: [
1635
+ 'dark-moss',
1636
+ 'deep-forest',
1637
+ 'shadowed-fern',
1638
+ 'black-pine',
1639
+ 'dark-spruce',
1640
+ 'night-forest',
1641
+ 'woodland-shadow',
1642
+ 'thicket-dark',
1643
+ 'grove-shadow',
1644
+ 'copse-dark',
1645
+ ],
1646
+ moderate: [
1647
+ 'forest',
1648
+ 'pine',
1649
+ 'spruce',
1650
+ 'fir',
1651
+ 'hemlock',
1652
+ 'cedar-green',
1653
+ 'juniper',
1654
+ 'cypress',
1655
+ 'yew',
1656
+ 'redwood-green',
1657
+ ],
1658
+ saturated: [
1659
+ 'emerald-dark',
1660
+ 'malachite-dark',
1661
+ 'jade-dark',
1662
+ 'serpentine',
1663
+ 'nephrite-dark',
1664
+ 'jadeite-dark',
1665
+ 'aventurine-dark',
1666
+ 'chrysoprase-dark',
1667
+ 'peridot-dark',
1668
+ 'olivine-dark',
1669
+ ],
1670
+ vivid: [
1671
+ 'neon-forest',
1672
+ 'electric-pine',
1673
+ 'laser-spruce',
1674
+ 'plasma-fir',
1675
+ 'fluorescent-forest',
1676
+ 'phosphor-pine',
1677
+ 'luminous-forest',
1678
+ 'glowing-pine',
1679
+ 'radiant-forest',
1680
+ 'brilliant-pine',
1681
+ ],
1682
+ },
1683
+ dark: {
1684
+ muted: [
1685
+ 'olive-dark',
1686
+ 'khaki-dark',
1687
+ 'military',
1688
+ 'army',
1689
+ 'fatigues',
1690
+ 'camouflage',
1691
+ 'hunting',
1692
+ 'safari-dark',
1693
+ 'expedition',
1694
+ 'field-green',
1695
+ ],
1696
+ moderate: [
1697
+ 'hunter',
1698
+ 'bottle',
1699
+ 'racing-green',
1700
+ 'british-racing',
1701
+ 'jaguar',
1702
+ 'aston-green',
1703
+ 'bentley-green',
1704
+ 'rolls-green',
1705
+ 'vintage-racing',
1706
+ 'classic-racing',
1707
+ ],
1708
+ saturated: [
1709
+ 'emerald',
1710
+ 'malachite',
1711
+ 'jade',
1712
+ 'imperial-jade',
1713
+ 'burmese-jade',
1714
+ 'chinese-jade',
1715
+ 'celadon-dark',
1716
+ 'verdant',
1717
+ 'viridian-dark',
1718
+ 'chlorophyll',
1719
+ ],
1720
+ vivid: [
1721
+ 'electric-emerald',
1722
+ 'neon-jade',
1723
+ 'laser-malachite',
1724
+ 'plasma-emerald',
1725
+ 'fluorescent-jade',
1726
+ 'phosphor-malachite',
1727
+ 'luminous-emerald',
1728
+ 'glowing-jade',
1729
+ 'radiant-malachite',
1730
+ 'brilliant-emerald',
1731
+ ],
1732
+ },
1733
+ mid: {
1734
+ muted: [
1735
+ 'sage-warm',
1736
+ 'dusty-sage',
1737
+ 'dried-herb',
1738
+ 'herb-garden',
1739
+ 'kitchen-herb',
1740
+ 'culinary-sage',
1741
+ 'cooking-green',
1742
+ 'seasoning-green',
1743
+ 'spice-green',
1744
+ 'flavor-green',
1745
+ ],
1746
+ moderate: [
1747
+ 'fern',
1748
+ 'bracken',
1749
+ 'frond',
1750
+ 'leaf',
1751
+ 'foliage',
1752
+ 'canopy',
1753
+ 'understory',
1754
+ 'forest-floor',
1755
+ 'woodland',
1756
+ 'grove',
1757
+ ],
1758
+ saturated: [
1759
+ 'green',
1760
+ 'true-green',
1761
+ 'primary-green',
1762
+ 'pure-green',
1763
+ 'essential-green',
1764
+ 'fundamental-green',
1765
+ 'base-green',
1766
+ 'standard-green',
1767
+ 'reference-green',
1768
+ 'calibration-green',
1769
+ ],
1770
+ vivid: [
1771
+ 'electric-green',
1772
+ 'neon-green',
1773
+ 'laser-green',
1774
+ 'plasma-green',
1775
+ 'fluorescent-green',
1776
+ 'phosphor-green',
1777
+ 'luminous-green',
1778
+ 'glowing-green',
1779
+ 'radiant-green',
1780
+ 'brilliant-green',
1781
+ ],
1782
+ },
1783
+ light: {
1784
+ muted: [
1785
+ 'tea-green',
1786
+ 'matcha-light',
1787
+ 'sencha',
1788
+ 'gyokuro',
1789
+ 'tencha',
1790
+ 'kukicha',
1791
+ 'genmaicha',
1792
+ 'hojicha-green',
1793
+ 'bancha',
1794
+ 'shincha',
1795
+ ],
1796
+ moderate: [
1797
+ 'spring-green',
1798
+ 'new-leaf',
1799
+ 'fresh-leaf',
1800
+ 'young-leaf',
1801
+ 'tender-leaf',
1802
+ 'baby-leaf',
1803
+ 'sprout',
1804
+ 'shoot',
1805
+ 'bud-green',
1806
+ 'growth',
1807
+ ],
1808
+ saturated: [
1809
+ 'bright-green',
1810
+ 'vivid-green',
1811
+ 'intense-green',
1812
+ 'strong-green',
1813
+ 'powerful-green',
1814
+ 'dynamic-green',
1815
+ 'energetic-green',
1816
+ 'active-green',
1817
+ 'vital-green',
1818
+ 'living-green',
1819
+ ],
1820
+ vivid: [
1821
+ 'electric-spring',
1822
+ 'neon-leaf',
1823
+ 'laser-sprout',
1824
+ 'plasma-growth',
1825
+ 'fluorescent-spring',
1826
+ 'phosphor-leaf',
1827
+ 'luminous-spring',
1828
+ 'glowing-leaf',
1829
+ 'radiant-spring',
1830
+ 'brilliant-leaf',
1831
+ ],
1832
+ },
1833
+ veryLight: {
1834
+ muted: [
1835
+ 'pale-sage',
1836
+ 'whisper-green',
1837
+ 'ghost-green',
1838
+ 'mist-green',
1839
+ 'fog-green',
1840
+ 'vapor-green',
1841
+ 'breath-green',
1842
+ 'sigh-green',
1843
+ 'dream-green',
1844
+ 'ethereal-green',
1845
+ ],
1846
+ moderate: [
1847
+ 'mint-cream',
1848
+ 'spearmint-light',
1849
+ 'peppermint-light',
1850
+ 'wintergreen-light',
1851
+ 'menthol-light',
1852
+ 'eucalyptus-light',
1853
+ 'tea-tree-light',
1854
+ 'herbal-cream',
1855
+ 'botanical-cream',
1856
+ 'garden-cream',
1857
+ ],
1858
+ saturated: [
1859
+ 'bright-mint',
1860
+ 'vivid-spearmint',
1861
+ 'intense-peppermint',
1862
+ 'strong-wintergreen',
1863
+ 'powerful-menthol',
1864
+ 'dynamic-eucalyptus',
1865
+ 'energetic-mint',
1866
+ 'active-spearmint',
1867
+ 'vital-peppermint',
1868
+ 'living-wintergreen',
1869
+ ],
1870
+ vivid: [
1871
+ 'neon-mint',
1872
+ 'electric-spearmint',
1873
+ 'laser-peppermint',
1874
+ 'plasma-wintergreen',
1875
+ 'fluorescent-mint',
1876
+ 'phosphor-spearmint',
1877
+ 'luminous-mint',
1878
+ 'glowing-spearmint',
1879
+ 'radiant-mint',
1880
+ 'brilliant-mint',
1881
+ ],
1882
+ },
1883
+ },
1884
+ cool: {
1885
+ veryDark: {
1886
+ muted: [
1887
+ 'swamp',
1888
+ 'bog',
1889
+ 'marsh',
1890
+ 'fen',
1891
+ 'moor',
1892
+ 'wetland',
1893
+ 'bayou',
1894
+ 'slough',
1895
+ 'quagmire',
1896
+ 'morass',
1897
+ ],
1898
+ moderate: [
1899
+ 'jungle-dark',
1900
+ 'rainforest-dark',
1901
+ 'tropical-dark',
1902
+ 'equatorial',
1903
+ 'amazonian-dark',
1904
+ 'congo-dark',
1905
+ 'borneo-dark',
1906
+ 'sumatra-dark',
1907
+ 'java-dark',
1908
+ 'sulawesi-dark',
1909
+ ],
1910
+ saturated: [
1911
+ 'deep-jungle',
1912
+ 'deep-rainforest',
1913
+ 'deep-tropical',
1914
+ 'deep-equatorial',
1915
+ 'deep-amazonian',
1916
+ 'verdure-dark',
1917
+ 'viridescence-dark',
1918
+ 'chlorosis-dark',
1919
+ 'photosynthesis-dark',
1920
+ 'biosynthesis-dark',
1921
+ ],
1922
+ vivid: [
1923
+ 'bioluminescent-green',
1924
+ 'deep-glow-forest',
1925
+ 'jungle-phosphor',
1926
+ 'rainforest-glow',
1927
+ 'tropical-luminous',
1928
+ 'equatorial-radiant',
1929
+ 'amazonian-brilliant',
1930
+ 'congo-electric',
1931
+ 'borneo-neon',
1932
+ 'sumatra-laser',
1933
+ ],
1934
+ },
1935
+ dark: {
1936
+ muted: [
1937
+ 'seaweed',
1938
+ 'kelp',
1939
+ 'algae',
1940
+ 'plankton-green',
1941
+ 'pond-green',
1942
+ 'lake-green',
1943
+ 'river-green',
1944
+ 'stream-green',
1945
+ 'creek-green',
1946
+ 'brook-green',
1947
+ ],
1948
+ moderate: [
1949
+ 'amazon',
1950
+ 'congo',
1951
+ 'borneo',
1952
+ 'sumatra',
1953
+ 'java',
1954
+ 'sulawesi',
1955
+ 'papua',
1956
+ 'madagascar',
1957
+ 'caribbean-green',
1958
+ 'pacific-green',
1959
+ ],
1960
+ saturated: [
1961
+ 'jungle',
1962
+ 'rainforest',
1963
+ 'tropical',
1964
+ 'equatorial-cool',
1965
+ 'amazonian',
1966
+ 'verdure',
1967
+ 'viridescence',
1968
+ 'chlorosis',
1969
+ 'photosynthesis',
1970
+ 'biosynthesis',
1971
+ ],
1972
+ vivid: [
1973
+ 'electric-jungle',
1974
+ 'neon-rainforest',
1975
+ 'laser-tropical',
1976
+ 'plasma-equatorial',
1977
+ 'fluorescent-amazonian',
1978
+ 'phosphor-verdure',
1979
+ 'luminous-jungle',
1980
+ 'glowing-rainforest',
1981
+ 'radiant-tropical',
1982
+ 'brilliant-equatorial',
1983
+ ],
1984
+ },
1985
+ mid: {
1986
+ muted: [
1987
+ 'lichen',
1988
+ 'patina-green',
1989
+ 'verdigris',
1990
+ 'oxidized',
1991
+ 'weathered-copper',
1992
+ 'aged-bronze',
1993
+ 'antique-brass',
1994
+ 'old-penny',
1995
+ 'statue-green',
1996
+ 'monument-green',
1997
+ ],
1998
+ moderate: [
1999
+ 'teal-green',
2000
+ 'viridian',
2001
+ 'veronese',
2002
+ 'paolo-veronese',
2003
+ 'hooker',
2004
+ 'sap-green',
2005
+ 'terre-verte',
2006
+ 'chrome-oxide',
2007
+ 'cobalt-green',
2008
+ 'phthalo-green',
2009
+ ],
2010
+ saturated: [
2011
+ 'bright-teal-green',
2012
+ 'vivid-viridian',
2013
+ 'intense-veronese',
2014
+ 'strong-hooker',
2015
+ 'powerful-sap',
2016
+ 'dynamic-terre',
2017
+ 'energetic-chrome',
2018
+ 'active-cobalt',
2019
+ 'vital-phthalo',
2020
+ 'living-viridian',
2021
+ ],
2022
+ vivid: [
2023
+ 'electric-viridian',
2024
+ 'neon-veronese',
2025
+ 'laser-hooker',
2026
+ 'plasma-sap',
2027
+ 'fluorescent-terre',
2028
+ 'phosphor-chrome',
2029
+ 'luminous-viridian',
2030
+ 'glowing-veronese',
2031
+ 'radiant-hooker',
2032
+ 'brilliant-sap',
2033
+ ],
2034
+ },
2035
+ light: {
2036
+ muted: [
2037
+ 'seafoam',
2038
+ 'sea-glass',
2039
+ 'beach-glass',
2040
+ 'wave-glass',
2041
+ 'tide-green',
2042
+ 'surf-green',
2043
+ 'spray-green',
2044
+ 'foam-green',
2045
+ 'bubble-green',
2046
+ 'froth-green',
2047
+ ],
2048
+ moderate: [
2049
+ 'aquamarine',
2050
+ 'turquoise-green',
2051
+ 'caribbean-turquoise',
2052
+ 'tropical-sea',
2053
+ 'island-water',
2054
+ 'lagoon-green',
2055
+ 'cove-green',
2056
+ 'bay-green',
2057
+ 'inlet-green',
2058
+ 'sound-green',
2059
+ ],
2060
+ saturated: [
2061
+ 'bright-seafoam',
2062
+ 'vivid-aquamarine',
2063
+ 'intense-turquoise',
2064
+ 'strong-caribbean',
2065
+ 'powerful-tropical',
2066
+ 'dynamic-island',
2067
+ 'energetic-lagoon',
2068
+ 'active-cove',
2069
+ 'vital-bay',
2070
+ 'living-inlet',
2071
+ ],
2072
+ vivid: [
2073
+ 'electric-seafoam',
2074
+ 'neon-aquamarine',
2075
+ 'laser-turquoise',
2076
+ 'plasma-caribbean',
2077
+ 'fluorescent-tropical',
2078
+ 'phosphor-island',
2079
+ 'luminous-seafoam',
2080
+ 'glowing-aquamarine',
2081
+ 'radiant-turquoise',
2082
+ 'brilliant-caribbean',
2083
+ ],
2084
+ },
2085
+ veryLight: {
2086
+ muted: [
2087
+ 'glacier-green',
2088
+ 'ice-green',
2089
+ 'frost-green',
2090
+ 'snow-green',
2091
+ 'winter-green-light',
2092
+ 'arctic-green',
2093
+ 'polar-green',
2094
+ 'frozen-green',
2095
+ 'crystal-green',
2096
+ 'diamond-green',
2097
+ ],
2098
+ moderate: [
2099
+ 'mint',
2100
+ 'spearmint',
2101
+ 'peppermint',
2102
+ 'wintergreen',
2103
+ 'menthol',
2104
+ 'eucalyptus',
2105
+ 'tea-tree',
2106
+ 'herbal',
2107
+ 'botanical',
2108
+ 'aromatic-green',
2109
+ ],
2110
+ saturated: [
2111
+ 'bright-glacier-green',
2112
+ 'vivid-ice-green',
2113
+ 'intense-frost-green',
2114
+ 'strong-snow-green',
2115
+ 'powerful-winter-green',
2116
+ 'dynamic-arctic-green',
2117
+ 'energetic-polar-green',
2118
+ 'active-frozen-green',
2119
+ 'vital-crystal-green',
2120
+ 'living-diamond-green',
2121
+ ],
2122
+ vivid: [
2123
+ 'neon-glacier-green',
2124
+ 'electric-ice-green',
2125
+ 'laser-frost-green',
2126
+ 'plasma-snow-green',
2127
+ 'fluorescent-winter-green',
2128
+ 'phosphor-arctic-green',
2129
+ 'luminous-glacier-green',
2130
+ 'glowing-ice-green',
2131
+ 'radiant-frost-green',
2132
+ 'brilliant-snow-green',
2133
+ ],
2134
+ },
2135
+ },
2136
+ neutral: {
2137
+ veryDark: {
2138
+ muted: [
2139
+ 'charcoal-green',
2140
+ 'graphite-green',
2141
+ 'carbon-green',
2142
+ 'mineral-green',
2143
+ 'stone-green',
2144
+ 'rock-green',
2145
+ 'slate-green',
2146
+ 'shale-green',
2147
+ 'basalt-green',
2148
+ 'granite-green',
2149
+ ],
2150
+ moderate: [
2151
+ 'dark-olive',
2152
+ 'deep-olive',
2153
+ 'black-olive',
2154
+ 'kalamata',
2155
+ 'nicoise',
2156
+ 'mission-olive',
2157
+ 'manzanilla-dark',
2158
+ 'gordal-dark',
2159
+ 'picholine-dark',
2160
+ 'lucques-dark',
2161
+ ],
2162
+ saturated: [
2163
+ 'deep-herb',
2164
+ 'rich-herb',
2165
+ 'full-herb',
2166
+ 'saturated-herb',
2167
+ 'intense-herb',
2168
+ 'strong-herb',
2169
+ 'powerful-herb',
2170
+ 'dynamic-herb',
2171
+ 'energetic-herb',
2172
+ 'vital-herb',
2173
+ ],
2174
+ vivid: [
2175
+ 'vivid-herb',
2176
+ 'brilliant-herb',
2177
+ 'radiant-herb',
2178
+ 'glowing-herb',
2179
+ 'luminous-herb',
2180
+ 'phosphor-herb',
2181
+ 'fluorescent-herb',
2182
+ 'neon-herb',
2183
+ 'electric-herb',
2184
+ 'laser-herb',
2185
+ ],
2186
+ },
2187
+ dark: {
2188
+ muted: [
2189
+ 'olive',
2190
+ 'olive-drab',
2191
+ 'army-green',
2192
+ 'military-green',
2193
+ 'fatigues-green',
2194
+ 'camouflage-green',
2195
+ 'hunting-green',
2196
+ 'safari',
2197
+ 'expedition-green',
2198
+ 'field',
2199
+ ],
2200
+ moderate: [
2201
+ 'artichoke',
2202
+ 'asparagus',
2203
+ 'avocado',
2204
+ 'kale',
2205
+ 'spinach',
2206
+ 'chard',
2207
+ 'collard',
2208
+ 'mustard-green',
2209
+ 'turnip-green',
2210
+ 'beet-green',
2211
+ ],
2212
+ saturated: [
2213
+ 'spectrum-green-dark',
2214
+ 'balanced-green-dark',
2215
+ 'centered-green',
2216
+ 'median-green',
2217
+ 'middle-green',
2218
+ 'mean-green',
2219
+ 'average-green',
2220
+ 'typical-green',
2221
+ 'common-green',
2222
+ 'standard-green-dark',
2223
+ ],
2224
+ vivid: [
2225
+ 'spectrum-vivid-green-dark',
2226
+ 'balanced-vivid-green',
2227
+ 'centered-vivid-green',
2228
+ 'median-vivid-green',
2229
+ 'middle-vivid-green',
2230
+ 'mean-vivid-green',
2231
+ 'average-vivid-green',
2232
+ 'typical-vivid-green',
2233
+ 'common-vivid-green',
2234
+ 'standard-vivid-green',
2235
+ ],
2236
+ },
2237
+ mid: {
2238
+ muted: [
2239
+ 'sage',
2240
+ 'thyme',
2241
+ 'rosemary',
2242
+ 'basil',
2243
+ 'oregano',
2244
+ 'marjoram',
2245
+ 'tarragon',
2246
+ 'chervil',
2247
+ 'parsley',
2248
+ 'cilantro',
2249
+ ],
2250
+ moderate: [
2251
+ 'herb',
2252
+ 'garden-green',
2253
+ 'vegetable',
2254
+ 'produce',
2255
+ 'market-green',
2256
+ 'farm-green',
2257
+ 'orchard-green',
2258
+ 'grove-green',
2259
+ 'field-green-neutral',
2260
+ 'meadow',
2261
+ ],
2262
+ saturated: [
2263
+ 'spectrum-green',
2264
+ 'balanced-green',
2265
+ 'neutral-green',
2266
+ 'even-green',
2267
+ 'equal-green',
2268
+ 'fair-green',
2269
+ 'just-green',
2270
+ 'right-green',
2271
+ 'true-green-neutral',
2272
+ 'pure-green-neutral',
2273
+ ],
2274
+ vivid: [
2275
+ 'vivid-spectrum-green',
2276
+ 'brilliant-balanced-green',
2277
+ 'radiant-neutral-green',
2278
+ 'glowing-even-green',
2279
+ 'luminous-equal-green',
2280
+ 'phosphor-fair-green',
2281
+ 'fluorescent-just-green',
2282
+ 'neon-right-green',
2283
+ 'electric-true-green',
2284
+ 'laser-pure-green',
2285
+ ],
2286
+ },
2287
+ light: {
2288
+ muted: [
2289
+ 'celadon',
2290
+ 'pale-jade',
2291
+ 'light-jade',
2292
+ 'soft-jade',
2293
+ 'gentle-jade',
2294
+ 'quiet-jade',
2295
+ 'calm-jade',
2296
+ 'serene-jade',
2297
+ 'peaceful-jade',
2298
+ 'tranquil-jade',
2299
+ ],
2300
+ moderate: [
2301
+ 'pistachio',
2302
+ 'wasabi',
2303
+ 'lime-light',
2304
+ 'key-lime',
2305
+ 'persian-lime',
2306
+ 'kaffir-lime',
2307
+ 'finger-lime',
2308
+ 'buddha-hand',
2309
+ 'yuzu-green',
2310
+ 'sudachi',
2311
+ ],
2312
+ saturated: [
2313
+ 'bright-neutral-green',
2314
+ 'vivid-balanced-green',
2315
+ 'intense-even-green',
2316
+ 'strong-equal-green',
2317
+ 'powerful-fair-green',
2318
+ 'dynamic-just-green',
2319
+ 'energetic-right-green',
2320
+ 'active-true-green',
2321
+ 'vital-pure-green',
2322
+ 'living-neutral-green',
2323
+ ],
2324
+ vivid: [
2325
+ 'brilliant-neutral-green',
2326
+ 'radiant-balanced-green',
2327
+ 'glowing-even-green',
2328
+ 'luminous-equal-green',
2329
+ 'phosphor-neutral-green',
2330
+ 'fluorescent-balanced-green',
2331
+ 'neon-even-green',
2332
+ 'electric-equal-green',
2333
+ 'laser-fair-green',
2334
+ 'plasma-just-green',
2335
+ ],
2336
+ },
2337
+ veryLight: {
2338
+ muted: [
2339
+ 'honeydew',
2340
+ 'pale-green',
2341
+ 'light-green',
2342
+ 'soft-green',
2343
+ 'gentle-green',
2344
+ 'quiet-green',
2345
+ 'calm-green',
2346
+ 'serene-green',
2347
+ 'peaceful-green',
2348
+ 'tranquil-green',
2349
+ ],
2350
+ moderate: [
2351
+ 'cucumber',
2352
+ 'melon-green',
2353
+ 'honeydew-melon',
2354
+ 'galia',
2355
+ 'casaba',
2356
+ 'crenshaw',
2357
+ 'canary-melon',
2358
+ 'santa-claus-melon',
2359
+ 'juan-canary',
2360
+ 'piel-de-sapo',
2361
+ ],
2362
+ saturated: [
2363
+ 'bright-white-green',
2364
+ 'vivid-white-green',
2365
+ 'intense-white-green',
2366
+ 'strong-white-green',
2367
+ 'powerful-white-green',
2368
+ 'dynamic-white-green',
2369
+ 'energetic-white-green',
2370
+ 'active-white-green',
2371
+ 'vital-white-green',
2372
+ 'living-white-green',
2373
+ ],
2374
+ vivid: [
2375
+ 'brilliant-white-green',
2376
+ 'radiant-white-green',
2377
+ 'glowing-white-green',
2378
+ 'luminous-white-green',
2379
+ 'phosphor-white-green',
2380
+ 'fluorescent-white-green',
2381
+ 'neon-white-green',
2382
+ 'electric-white-green',
2383
+ 'laser-white-green',
2384
+ 'plasma-white-green',
2385
+ ],
2386
+ },
2387
+ },
2388
+ };
2389
+
2390
+ // ============================================================================
2391
+ // HUE HUB REGISTRY
2392
+ // ============================================================================
2393
+
2394
+ /**
2395
+ * All hue hubs indexed by hue bucket (0-17)
2396
+ * Each bucket covers 20° of the hue wheel
2397
+ */
2398
+ export const HUE_HUBS: Record<number, HueHub | undefined> = {
2399
+ 0: RED_HUB, // 0-20° Red
2400
+ // 1: ORANGE_RED_HUB, // 20-40° Orange-Red (TODO)
2401
+ // 2: ORANGE_HUB, // 40-60° Orange (TODO)
2402
+ // 3: YELLOW_ORANGE_HUB, // 60-80° Yellow-Orange (TODO)
2403
+ // 4: YELLOW_HUB, // 80-100° Yellow (TODO)
2404
+ // 5: YELLOW_GREEN_HUB, // 100-120° Yellow-Green (TODO)
2405
+ 6: GREEN_HUB, // 120-140° Green
2406
+ // 7: GREEN_CYAN_HUB, // 140-160° Green-Cyan (TODO)
2407
+ // 8: CYAN_HUB, // 160-180° Cyan (TODO)
2408
+ // 9: CYAN_BLUE_HUB, // 180-200° Cyan-Blue (TODO)
2409
+ // 10: LIGHT_BLUE_HUB, // 200-220° Light Blue (TODO)
2410
+ 11: BLUE_HUB, // 220-240° Blue
2411
+ // 12: BLUE_VIOLET_HUB, // 240-260° Blue-Violet (TODO)
2412
+ // 13: VIOLET_HUB, // 260-280° Violet (TODO)
2413
+ // 14: PURPLE_HUB, // 280-300° Purple (TODO)
2414
+ // 15: MAGENTA_HUB, // 300-320° Magenta (TODO)
2415
+ // 16: PINK_HUB, // 320-340° Pink (TODO)
2416
+ // 17: RED_PINK_HUB, // 340-360° Red-Pink (TODO)
2417
+ };
2418
+
2419
+ /**
2420
+ * Check if a hue bucket has an expanded hub available
2421
+ */
2422
+ export function hasExpandedHub(hBucket: number): boolean {
2423
+ return HUE_HUBS[hBucket] !== undefined;
2424
+ }
2425
+
2426
+ /**
2427
+ * Get material word from expanded hub if available
2428
+ * Falls back to undefined if hub doesn't exist
2429
+ */
2430
+ export function getExpandedMaterialWord(
2431
+ hBucket: number,
2432
+ lBucket: number,
2433
+ cBucket: number,
2434
+ temperature: 'warm' | 'cool' | 'neutral',
2435
+ l: number,
2436
+ _c: number, // Reserved for future sub-selection based on chroma fraction
2437
+ ): string | undefined {
2438
+ const hub = HUE_HUBS[hBucket];
2439
+ if (!hub) return undefined;
2440
+
2441
+ const lBand = getLightnessBand(lBucket);
2442
+ const cBand = getChromaBand(cBucket);
2443
+
2444
+ const matrix = hub[temperature];
2445
+ const cell = matrix[lBand][cBand];
2446
+
2447
+ // Use fractional L value to sub-select within the word list
2448
+ // L bucket size is 0.1
2449
+ const subIndex = getSubIndex(l, 0.1, cell.length);
2450
+
2451
+ return cell[subIndex];
2452
+ }