cli + tui to publish to leaflet (wip) & manage tasks, notes & watch/read lists 馃崈
charm leaflet readability golang
at main 394 lines 5.9 kB view raw
1// This module contains colors from github.com/charmbracelet/x/exp/charmtone 2// 3// See: https://github.com/charmbracelet/x/blob/main/exp/charmtone/charmtone.go 4package ui 5 6import ( 7 "fmt" 8 "image/color" 9 "slices" 10 11 "github.com/lucasb-eyer/go-colorful" 12) 13 14var _ color.Color = Key(0) 15 16// Key is a type for color keys. 17type Key int 18 19const ( 20 Cumin Key = iota 21 Tang 22 Yam 23 Paprika 24 Bengal 25 Uni 26 Sriracha 27 Coral 28 Salmon 29 Chili 30 Cherry 31 Tuna 32 Macaron 33 Pony 34 Cheeky 35 Flamingo 36 Dolly 37 Blush 38 Urchin 39 Mochi 40 Lilac 41 Prince 42 Violet 43 Mauve 44 Grape 45 Plum 46 Orchid 47 Jelly 48 Charple 49 Hazy 50 Ox 51 Sapphire 52 Guppy 53 Oceania 54 Thunder 55 Anchovy 56 Damson 57 Malibu 58 Sardine 59 Zinc 60 Turtle 61 Lichen 62 Guac 63 Julep 64 Bok 65 Mustard 66 Citron 67 Zest 68 Pepper 69 BBQ 70 Charcoal 71 Iron 72 Oyster 73 Squid 74 Smoke 75 Ash 76 Salt 77 Butter 78 79 // Diffs: additions. The brightest color in this set is Julep, defined above. 80 Pickle 81 Gator 82 Spinach 83 84 // Diffs: deletions. The brightest color in this set is Cherry, defined above. 85 Pom 86 Steak 87 Toast 88 89 // Provisional. 90 NeueGuac 91 NeueZinc 92) 93 94func (k Key) Hex() string { 95 switch k { 96 case Cumin: 97 return "#BF976F" 98 case Tang: 99 return "#FF985A" 100 case Yam: 101 return "#FFB587" 102 case Paprika: 103 return "#D36C64" 104 case Bengal: 105 return "#FF6E63" 106 case Uni: 107 return "#FF937D" 108 case Sriracha: 109 return "#EB4268" 110 case Coral: 111 return "#FF577D" 112 case Salmon: 113 return "#FF7F90" 114 case Chili: 115 return "#E23080" 116 case Cherry: 117 return "#FF388B" 118 case Tuna: 119 return "#FF6DAA" 120 case Macaron: 121 return "#E940B0" 122 case Pony: 123 return "#FF4FBF" 124 case Cheeky: 125 return "#FF79D0" 126 case Flamingo: 127 return "#F947E3" 128 case Dolly: 129 return "#FF60FF" 130 case Blush: 131 return "#FF84FF" 132 case Urchin: 133 return "#C337E0" 134 case Mochi: 135 return "#EB5DFF" 136 case Lilac: 137 return "#F379FF" 138 case Prince: 139 return "#9C35E1" 140 case Violet: 141 return "#C259FF" 142 case Mauve: 143 return "#D46EFF" 144 case Grape: 145 return "#7134DD" 146 case Plum: 147 return "#9953FF" 148 case Orchid: 149 return "#AD6EFF" 150 case Jelly: 151 return "#4A30D9" 152 case Charple: 153 return "#6B50FF" 154 case Hazy: 155 return "#8B75FF" 156 case Ox: 157 return "#3331B2" 158 case Sapphire: 159 return "#4949FF" 160 case Guppy: 161 return "#7272FF" 162 case Oceania: 163 return "#2B55B3" 164 case Thunder: 165 return "#4776FF" 166 case Anchovy: 167 return "#719AFC" 168 case Damson: 169 return "#007AB8" 170 case Malibu: 171 return "#00A4FF" 172 case Sardine: 173 return "#4FBEFE" 174 case Zinc: 175 return "#10B1AE" 176 case Turtle: 177 return "#0ADCD9" 178 case Lichen: 179 return "#5CDFEA" 180 case Guac: 181 return "#12C78F" 182 case Julep: 183 return "#00FFB2" 184 case Bok: 185 return "#68FFD6" 186 case Mustard: 187 return "#F5EF34" 188 case Citron: 189 return "#E8FF27" 190 case Zest: 191 return "#E8FE96" 192 case Pepper: 193 return "#201F26" 194 case BBQ: 195 return "#2d2c35" 196 case Charcoal: 197 return "#3A3943" 198 case Iron: 199 return "#4D4C57" 200 case Oyster: 201 return "#605F6B" 202 case Squid: 203 return "#858392" 204 case Smoke: 205 return "#BFBCC8" 206 case Ash: 207 return "#DFDBDD" 208 case Salt: 209 return "#F1EFEF" 210 case Butter: 211 return "#FFFAF1" 212 // Diffs: additions. 213 case Pickle: 214 return "#00A475" 215 case Gator: 216 return "#18463D" 217 case Spinach: 218 return "#1C3634" 219 // Diffs: deletions. 220 case Pom: 221 return "#AB2454" 222 case Steak: 223 return "#582238" 224 case Toast: 225 return "#412130" 226 // Provisional. 227 case NeueGuac: 228 return "#00b875" 229 case NeueZinc: 230 return "#0e9996" 231 default: 232 return "" 233 } 234} 235 236func (k Key) String() string { 237 switch k { 238 case Cumin: 239 return "Cumin" 240 case Tang: 241 return "Tang" 242 case Yam: 243 return "Yam" 244 case Paprika: 245 return "Paprika" 246 case Bengal: 247 return "Bengal" 248 case Uni: 249 return "Uni" 250 case Sriracha: 251 return "Sriracha" 252 case Coral: 253 return "Coral" 254 case Salmon: 255 return "Salmon" 256 case Chili: 257 return "Chili" 258 case Cherry: 259 return "Cherry" 260 case Tuna: 261 return "Tuna" 262 case Macaron: 263 return "Macaron" 264 case Pony: 265 return "Pony" 266 case Cheeky: 267 return "Cheeky" 268 case Flamingo: 269 return "Flamingo" 270 case Dolly: 271 return "Dolly" 272 case Blush: 273 return "Blush" 274 case Urchin: 275 return "Urchin" 276 case Mochi: 277 return "Mochi" 278 case Lilac: 279 return "Lilac" 280 case Prince: 281 return "Prince" 282 case Violet: 283 return "Violet" 284 case Mauve: 285 return "Mauve" 286 case Grape: 287 return "Grape" 288 case Plum: 289 return "Plum" 290 case Orchid: 291 return "Orchid" 292 case Jelly: 293 return "Jelly" 294 case Charple: 295 return "Charple" 296 case Hazy: 297 return "Hazy" 298 case Ox: 299 return "Ox" 300 case Sapphire: 301 return "Sapphire" 302 case Guppy: 303 return "Guppy" 304 case Oceania: 305 return "Oceania" 306 case Thunder: 307 return "Thunder" 308 case Anchovy: 309 return "Anchovy" 310 case Damson: 311 return "Damson" 312 case Malibu: 313 return "Malibu" 314 case Sardine: 315 return "Sardine" 316 case Zinc: 317 return "Zinc" 318 case Turtle: 319 return "Turtle" 320 case Lichen: 321 return "Lichen" 322 case Guac: 323 return "Guac" 324 case Julep: 325 return "Julep" 326 case Bok: 327 return "Bok" 328 case Mustard: 329 return "Mustard" 330 case Citron: 331 return "Citron" 332 case Zest: 333 return "Zest" 334 case Pepper: 335 return "Pepper" 336 case BBQ: 337 return "BBQ" 338 case Charcoal: 339 return "Charcoal" 340 case Iron: 341 return "Iron" 342 case Oyster: 343 return "Oyster" 344 case Squid: 345 return "Squid" 346 case Smoke: 347 return "Smoke" 348 case Ash: 349 return "Ash" 350 case Salt: 351 return "Salt" 352 case Butter: 353 return "Butter" 354 case Pickle: 355 return "Pickle" 356 case Gator: 357 return "Gator" 358 case Spinach: 359 return "Spinach" 360 case Pom: 361 return "Pom" 362 case Steak: 363 return "Steak" 364 case Toast: 365 return "Toast" 366 case NeueGuac: 367 return "NeueGuac" 368 case NeueZinc: 369 return "NeueZinc" 370 default: 371 return fmt.Sprintf("Key(%d)", int(k)) 372 } 373} 374 375// RGBA returns the red, green, blue, and alpha values of the color for interface [color.Color] 376func (k Key) RGBA() (r, g, b, a uint32) { 377 c, err := colorful.Hex(k.Hex()) 378 if err != nil { 379 panic(fmt.Sprintf("invalid color key %d: %s: %v", k, k.String(), err)) 380 } 381 return c.RGBA() 382} 383 384func (k Key) IsPrimary() bool { 385 return slices.Contains(PrimaryColors, k) 386} 387 388func (k Key) IsSecondary() bool { 389 return slices.Contains(SecondaryColors, k) 390} 391 392func (k Key) IsTertiary() bool { 393 return slices.Contains(TertiaryColors, k) 394}