Repository: faissaloux/termspark (language: python)

Issue:
Support more colors
![Screenshot from 2024-06-10 20-21-52](https://github.com/faissaloux/termspark/assets/60013703/02e07144-ecfa-4436-89b3-09fec6adc2ba)



Discussion / hints:

Fix patch:
diff --git a/.coveragerc b/.coveragerc
index 9499f18..6520065 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -2,3 +2,4 @@
 
 exclude_lines =
   codecov-ignore
+  @abstractmethod
diff --git a/.gitignore b/.gitignore
index 77ab4fc..51ffe20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,6 @@
 *.egg-info
 __pycache__
 .coverage
-.pytest_cache
\ No newline at end of file
+.pytest_cache
+/docs_build
+/site
\ No newline at end of file
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7d5e415..52a57f4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -29,6 +29,8 @@ repos:
   rev: 24.4.2
   hooks:
   - id: black
+    args:
+    - --line-length=100
 - repo: https://github.com/PyCQA/autoflake
   rev: v2.3.1
   hooks:
diff --git a/README.md b/README.md
index bbd0279..0996963 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,20 @@
 
 # Usage
 
+- [`print()`](#print-but-more)
+- [`input()`](#input)
+- [`line()`](#line)
+- [paint](#you-can-use-different-styles-on-same-position)
+- [`raw()`](#raw)
+- [force Width](#force-width)
+- [max width](#set-content-max-width)
+- [`full_width()`](#full-width)
+- [separator](#separator)
+- [`Termspark().line()`](#line-1)
+- [style](#style)
+- [hyperlinks](#hyperlinks)
+- [supported colors](#supported-colors)
+
 ### `print()`, but more!
 Import Termspark's print and take advantage of all its features, [colors](#you-can-also-paint-your-content), [highlights](#you-can-also-paint-your-content), [styles](#style), [hyperlinks](#hyperlinks) and more ...
 
@@ -119,23 +133,7 @@ line("-")
 > Separator can contain only one character.
 
 ### You can also paint your content
-
-**Supported colors:**
-- black
-- red
-- green
-- yellow
-- blue
-- magenta
-- cyan
-- white
-- gray / grey
-- light red
-- light green
-- light yellow
-- light blue
-- light magenta
-- light cyan
+#### text color
 
 ```python
     from termspark import TermSpark
@@ -145,22 +143,7 @@ line("-")
     TermSpark().print_center('CENTER', 'light_green').spark()
 ```
 
-**Supported highlights:**
-- black
-- red
-- green
-- yellow
-- blue
-- magenta
-- cyan
-- white
-- gray / grey
-- light red
-- light green
-- light yellow
-- light blue
-- light magenta
-- light cyan
+#### background color
 
 ```python
     from termspark import TermSpark
@@ -314,3 +297,261 @@ termspark.set_separator(".", "green")
 termspark.spark()
 ```
 ![](https://github.com/faissaloux/termspark/assets/60013703/ce829c1a-f14e-419c-80d0-aa202e5608dc)
+
+### Supported colors
+
+| Color	                                                      | Name                | HEX     |
+| ----------------------------------------------------------- | ------------------- | ------- |
+| ![#000000](https://placehold.it/40x40/000000/ffffff?text= ) | black               | #000000 |
+| ![#800000](https://placehold.it/40x40/800000/ffffff?text= ) | maroon              | #800000 |
+| ![#008000](https://placehold.it/40x40/008000/ffffff?text= ) | green               | #008000 |
+| ![#808000](https://placehold.it/40x40/808000/ffffff?text= ) | olive               | #808000 |
+| ![#000080](https://placehold.it/40x40/000080/ffffff?text= ) | navy                | #000080 |
+| ![#800080](https://placehold.it/40x40/800080/ffffff?text= ) | purple              | #800080 |
+| ![#008080](https://placehold.it/40x40/008080/ffffff?text= ) | teal                | #008080 |
+| ![#c0c0c0](https://placehold.it/40x40/c0c0c0/ffffff?text= ) | silver              | #C0C0C0 |
+| ![#808080](https://placehold.it/40x40/808080/ffffff?text= ) | gray                | #808080 |
+| ![#808080](https://placehold.it/40x40/808080/ffffff?text= ) | grey                | #808080 |
+| ![#ff0000](https://placehold.it/40x40/ff0000/ffffff?text= ) | red                 | #FF0000 |
+| ![#00ff00](https://placehold.it/40x40/00ff00/ffffff?text= ) | lime                | #00FF00 |
+| ![#ffff00](https://placehold.it/40x40/ffff00/ffffff?text= ) | yellow              | #FFFF00 |
+| ![#0000ff](https://placehold.it/40x40/0000ff/ffffff?text= ) | blue                | #0000FF |
+| ![#ff00ff](https://placehold.it/40x40/ff00ff/ffffff?text= ) | fuchsia             | #FF00FF |
+| ![#00ffff](https://placehold.it/40x40/00ffff/ffffff?text= ) | aqua                | #00FFFF |
+| ![#ffffff](https://placehold.it/40x40/ffffff/ffffff?text= ) | white               | #FFFFFF |
+| ![#00005f](https://placehold.it/40x40/00005f/ffffff?text= ) | navy blue           | #00005F |
+| ![#000087](https://placehold.it/40x40/000087/ffffff?text= ) | dark blue           | #000087 |
+| ![#0000af](https://placehold.it/40x40/0000af/ffffff?text= ) | dark blue 2         | #0000AF |
+| ![#0000d7](https://placehold.it/40x40/0000d7/ffffff?text= ) | dark blue 1         | #0000D7 |
+| ![#005f00](https://placehold.it/40x40/005f00/ffffff?text= ) | dark green          | #005F00 |
+| ![#005f5f](https://placehold.it/40x40/005f5f/ffffff?text= ) | blue stone          | #005F5F |
+| ![#005f87](https://placehold.it/40x40/005f87/ffffff?text= ) | orient              | #005F87 |
+| ![#005faf](https://placehold.it/40x40/005faf/ffffff?text= ) | endeavour           | #005FAF |
+| ![#005fd7](https://placehold.it/40x40/005fd7/ffffff?text= ) | science blue        | #005FD7 |
+| ![#005fff](https://placehold.it/40x40/005fff/ffffff?text= ) | blue ribbon         | #005FFF |
+| ![#008700](https://placehold.it/40x40/008700/ffffff?text= ) | japanese laurel     | #008700 |
+| ![#00875f](https://placehold.it/40x40/00875f/ffffff?text= ) | deep sea            | #00875F |
+| ![#008787](https://placehold.it/40x40/008787/ffffff?text= ) | turquoise           | #008787 |
+| ![#0087af](https://placehold.it/40x40/0087af/ffffff?text= ) | deep cerulean       | #0087AF |
+| ![#0087d7](https://placehold.it/40x40/0087d7/ffffff?text= ) | lochmara            | #0087D7 |
+| ![#0087ff](https://placehold.it/40x40/0087ff/ffffff?text= ) | azure radiance      | #0087FF |
+| ![#00af00](https://placehold.it/40x40/00af00/ffffff?text= ) | islamic green       | #00AF00 |
+| ![#00af5f](https://placehold.it/40x40/00af5f/ffffff?text= ) | spring green        | #00AF5F |
+| ![#00af87](https://placehold.it/40x40/00af87/ffffff?text= ) | dark cyan           | #00AF87 |
+| ![#00afaf](https://placehold.it/40x40/00afaf/ffffff?text= ) | light sea green     | #00AFAF |
+| ![#00afd7](https://placehold.it/40x40/00afd7/ffffff?text= ) | cerulean            | #00AFD7 |
+| ![#00afff](https://placehold.it/40x40/00afff/ffffff?text= ) | blue bolt           | #00AFFF |
+| ![#00d700](https://placehold.it/40x40/00d700/ffffff?text= ) | electric green      | #00D700 |
+| ![#00d75f](https://placehold.it/40x40/00d75f/ffffff?text= ) | malachite           | #00D75F |
+| ![#00d787](https://placehold.it/40x40/00d787/ffffff?text= ) | caribbean green     | #00D787 |
+| ![#00d7af](https://placehold.it/40x40/00d7af/ffffff?text= ) | cyan 1              | #00D7AF |
+| ![#00d7d7](https://placehold.it/40x40/00d7d7/ffffff?text= ) | dark turquoise      | #00D7D7 |
+| ![#00d7ff](https://placehold.it/40x40/00d7ff/ffffff?text= ) | vivid sky blue      | #00D7FF |
+| ![#00ff00](https://placehold.it/40x40/00ff00/ffffff?text= ) | electric green 1    | #00FF00 |
+| ![#00ff5f](https://placehold.it/40x40/00ff5f/ffffff?text= ) | guppie green        | #00FF5F |
+| ![#00ff87](https://placehold.it/40x40/00ff87/ffffff?text= ) | spring green 1      | #00FF87 |
+| ![#00ffaf](https://placehold.it/40x40/00ffaf/ffffff?text= ) | medium spring green | #00FFAF |
+| ![#00ffd7](https://placehold.it/40x40/00ffd7/ffffff?text= ) | sea green           | #00FFD7 |
+| ![#00ffff](https://placehold.it/40x40/00ffff/ffffff?text= ) | cyan                | #00FFFF |
+| ![#5f0000](https://placehold.it/40x40/5f0000/ffffff?text= ) | rosewood            | #5F0000 |
+| ![#5f005f](https://placehold.it/40x40/5f005f/ffffff?text= ) | pompadour           | #5F005F |
+| ![#5f0087](https://placehold.it/40x40/5f0087/ffffff?text= ) | pigment indigo      | #5F0087 |
+| ![#5f00af](https://placehold.it/40x40/5f00af/ffffff?text= ) | purple 3            | #5F00AF |
+| ![#5f00d7](https://placehold.it/40x40/5f00d7/ffffff?text= ) | electic violet      | #5F00D7 |
+| ![#5f00ff](https://placehold.it/40x40/5f00ff/ffffff?text= ) | blue violet         | #5F00FF |
+| ![#5f5f00](https://placehold.it/40x40/5f5f00/ffffff?text= ) | verdun green        | #5F5F00 |
+| ![#5f5f5f](https://placehold.it/40x40/5f5f5f/ffffff?text= ) | scorpion            | #5F5F5F |
+| ![#5f5f87](https://placehold.it/40x40/5f5f87/ffffff?text= ) | comet               | #5F5F87 |
+| ![#5f5faf](https://placehold.it/40x40/5f5faf/ffffff?text= ) | scampi              | #5F5FAF |
+| ![#5f5fd7](https://placehold.it/40x40/5f5fd7/ffffff?text= ) | indigo              | #5F5FD7 |
+| ![#5f5fff](https://placehold.it/40x40/5f5fff/ffffff?text= ) | cornflower blue 1   | #5F5FFF |
+| ![#5f8700](https://placehold.it/40x40/5f8700/ffffff?text= ) | limeade             | #5F8700 |
+| ![#5f875f](https://placehold.it/40x40/5f875f/ffffff?text= ) | glade green         | #5F875F |
+| ![#5f8787](https://placehold.it/40x40/5f8787/ffffff?text= ) | juniper             | #5F8787 |
+| ![#5f87af](https://placehold.it/40x40/5f87af/ffffff?text= ) | hippie blue         | #5F87AF |
+| ![#5f87d7](https://placehold.it/40x40/5f87d7/ffffff?text= ) | havelock blue       | #5F87D7 |
+| ![#5f87ff](https://placehold.it/40x40/5f87ff/ffffff?text= ) | cornflower blue     | #5F87FF |
+| ![#5faf00](https://placehold.it/40x40/5faf00/ffffff?text= ) | limea               | #5FAF00 |
+| ![#5faf5f](https://placehold.it/40x40/5faf5f/ffffff?text= ) | fern                | #5FAF5F |
+| ![#5faf87](https://placehold.it/40x40/5faf87/ffffff?text= ) | silver tree         | #5FAF87 |
+| ![#5fafaf](https://placehold.it/40x40/5fafaf/ffffff?text= ) | tradewind           | #5FAFAF |
+| ![#5fafd7](https://placehold.it/40x40/5fafd7/ffffff?text= ) | shakespeare         | #5FAFD7 |
+| ![#5fafff](https://placehold.it/40x40/5fafff/ffffff?text= ) | malibu              | #5FAFFF |
+| ![#5fd700](https://placehold.it/40x40/5fd700/ffffff?text= ) | bright green        | #5FD700 |
+| ![#5fd75f](https://placehold.it/40x40/5fd75f/ffffff?text= ) | pale green          | #5FD75F |
+| ![#5fd787](https://placehold.it/40x40/5fd787/ffffff?text= ) | pastel green        | #5FD787 |
+| ![#5fd7af](https://placehold.it/40x40/5fd7af/ffffff?text= ) | downy               | #5FD7AF |
+| ![#5fd7d7](https://placehold.it/40x40/5fd7d7/ffffff?text= ) | viking              | #5FD7D7 |
+| ![#5fd7ff](https://placehold.it/40x40/5fd7ff/ffffff?text= ) | steel blue          | #5FD7FF |
+| ![#5fff00](https://placehold.it/40x40/5fff00/ffffff?text= ) | chartreuse          | #5FFF00 |
+| ![#5fff5f](https://placehold.it/40x40/5fff5f/ffffff?text= ) | screaming green     | #5FFF5F |
+| ![#5fff87](https://placehold.it/40x40/5fff87/ffffff?text= ) | sea green 1         | #5FFF87 |
+| ![#5fffaf](https://placehold.it/40x40/5fffaf/ffffff?text= ) | aquamarine 1        | #5FFFAF |
+| ![#5fffd7](https://placehold.it/40x40/5fffd7/ffffff?text= ) | aquamarine 2        | #5FFFD7 |
+| ![#5fffff](https://placehold.it/40x40/5fffff/ffffff?text= ) | aquamarine          | #5FFFFF |
+| ![#870000](https://placehold.it/40x40/870000/ffffff?text= ) | dark red            | #870000 |
+| ![#87005f](https://placehold.it/40x40/87005f/ffffff?text= ) | fresh eggplant      | #87005F |
+| ![#870087](https://placehold.it/40x40/870087/ffffff?text= ) | dark magenta        | #870087 |
+| ![#8700af](https://placehold.it/40x40/8700af/ffffff?text= ) | purple 2            | #8700AF |
+| ![#8700d7](https://placehold.it/40x40/8700d7/ffffff?text= ) | electric violet     | #8700D7 |
+| ![#8700ff](https://placehold.it/40x40/8700ff/ffffff?text= ) | purple 1            | #8700FF |
+| ![#875f00](https://placehold.it/40x40/875f00/ffffff?text= ) | brown               | #875F00 |
+| ![#875f5f](https://placehold.it/40x40/875f5f/ffffff?text= ) | copper rose         | #875F5F |
+| ![#875f87](https://placehold.it/40x40/875f87/ffffff?text= ) | strike master       | #875F87 |
+| ![#875faf](https://placehold.it/40x40/875faf/ffffff?text= ) | deluge              | #875FAF |
+| ![#875fd7](https://placehold.it/40x40/875fd7/ffffff?text= ) | medium purple       | #875FD7 |
+| ![#875fff](https://placehold.it/40x40/875fff/ffffff?text= ) | heliotrope          | #875FFF |
+| ![#878700](https://placehold.it/40x40/878700/ffffff?text= ) | olive 1             | #878700 |
+| ![#87875f](https://placehold.it/40x40/87875f/ffffff?text= ) | clay creek          | #87875F |
+| ![#878787](https://placehold.it/40x40/878787/ffffff?text= ) | gray 1              | #878787 |
+| ![#878787](https://placehold.it/40x40/878787/ffffff?text= ) | grey 1              | #878787 |
+| ![#8787af](https://placehold.it/40x40/8787af/ffffff?text= ) | wild blue yonder    | #8787AF |
+| ![#8787d7](https://placehold.it/40x40/8787d7/ffffff?text= ) | chetwode blue       | #8787D7 |
+| ![#8787ff](https://placehold.it/40x40/8787ff/ffffff?text= ) | light slate blue    | #8787FF |
+| ![#87af00](https://placehold.it/40x40/87af00/ffffff?text= ) | limeade 1           | #87AF00 |
+| ![#87af5f](https://placehold.it/40x40/87af5f/ffffff?text= ) | chelsea cucumber    | #87AF5F |
+| ![#87af87](https://placehold.it/40x40/87af87/ffffff?text= ) | bay leaf            | #87AF87 |
+| ![#87afaf](https://placehold.it/40x40/87afaf/ffffff?text= ) | gulf stream         | #87AFAF |
+| ![#87afd7](https://placehold.it/40x40/87afd7/ffffff?text= ) | polo blue           | #87AFD7 |
+| ![#87afff](https://placehold.it/40x40/87afff/ffffff?text= ) | malibu 1            | #87AFFF |
+| ![#87d700](https://placehold.it/40x40/87d700/ffffff?text= ) | pistachio           | #87D700 |
+| ![#87d75f](https://placehold.it/40x40/87d75f/ffffff?text= ) | dark olive green    | #87D75F |
+| ![#87d787](https://placehold.it/40x40/87d787/ffffff?text= ) | feijoa              | #87D787 |
+| ![#87d7af](https://placehold.it/40x40/87d7af/ffffff?text= ) | vista blue          | #87D7AF |
+| ![#87d7d7](https://placehold.it/40x40/87d7d7/ffffff?text= ) | bermuda             | #87D7D7 |
+| ![#87d7ff](https://placehold.it/40x40/87d7ff/ffffff?text= ) | anakiwa             | #87D7FF |
+| ![#87ff00](https://placehold.it/40x40/87ff00/ffffff?text= ) | chartreuse 1        | #87FF00 |
+| ![#87ff5f](https://placehold.it/40x40/87ff5f/ffffff?text= ) | light green         | #87FF5F |
+| ![#87ff87](https://placehold.it/40x40/87ff87/ffffff?text= ) | mint green          | #87FF87 |
+| ![#87ffaf](https://placehold.it/40x40/87ffaf/ffffff?text= ) | pale green 1        | #87FFAF |
+| ![#87ffd7](https://placehold.it/40x40/87ffd7/ffffff?text= ) | aqua marine         | #87FFD7 |
+| ![#87ffff](https://placehold.it/40x40/87ffff/ffffff?text= ) | anakiwa 1           | #87FFFF |
+| ![#af0000](https://placehold.it/40x40/af0000/ffffff?text= ) | bright red          | #AF0000 |
+| ![#af005f](https://placehold.it/40x40/af005f/ffffff?text= ) | flirt               | #AF005F |
+| ![#af0087](https://placehold.it/40x40/af0087/ffffff?text= ) | medium violet red   | #AF0087 |
+| ![#af00af](https://placehold.it/40x40/af00af/ffffff?text= ) | magenta 1           | #AF00AF |
+| ![#af00d7](https://placehold.it/40x40/af00d7/ffffff?text= ) | dark violet         | #AF00D7 |
+| ![#af00ff](https://placehold.it/40x40/af00ff/ffffff?text= ) | purple 4            | #AF00FF |
+| ![#af5f00](https://placehold.it/40x40/af5f00/ffffff?text= ) | rose of sharon      | #AF5F00 |
+| ![#af5f5f](https://placehold.it/40x40/af5f5f/ffffff?text= ) | indian red          | #AF5F5F |
+| ![#af5f87](https://placehold.it/40x40/af5f87/ffffff?text= ) | tapestry            | #AF5F87 |
+| ![#af5faf](https://placehold.it/40x40/af5faf/ffffff?text= ) | fuchsia pink        | #AF5FAF |
+| ![#af5fd7](https://placehold.it/40x40/af5fd7/ffffff?text= ) | medium purple 1     | #AF5FD7 |
+| ![#af5fff](https://placehold.it/40x40/af5fff/ffffff?text= ) | heliotrope 1        | #AF5FFF |
+| ![#af8700](https://placehold.it/40x40/af8700/ffffff?text= ) | pirate gold         | #AF8700 |
+| ![#af875f](https://placehold.it/40x40/af875f/ffffff?text= ) | muesli              | #AF875F |
+| ![#af8787](https://placehold.it/40x40/af8787/ffffff?text= ) | pharlap             | #AF8787 |
+| ![#af87af](https://placehold.it/40x40/af87af/ffffff?text= ) | bouquet             | #AF87AF |
+| ![#af87d7](https://placehold.it/40x40/af87d7/ffffff?text= ) | lavender            | #AF87D7 |
+| ![#af87ff](https://placehold.it/40x40/af87ff/ffffff?text= ) | heliotrope 2        | #AF87FF |
+| ![#afaf00](https://placehold.it/40x40/afaf00/ffffff?text= ) | gold 1              | #AFAF00 |
+| ![#afaf5f](https://placehold.it/40x40/afaf5f/ffffff?text= ) | olive green         | #AFAF5F |
+| ![#afaf87](https://placehold.it/40x40/afaf87/ffffff?text= ) | hillary             | #AFAF87 |
+| ![#afafaf](https://placehold.it/40x40/afafaf/ffffff?text= ) | silver chalice      | #AFAFAF |
+| ![#afafd7](https://placehold.it/40x40/afafd7/ffffff?text= ) | wistful             | #AFAFD7 |
+| ![#afafff](https://placehold.it/40x40/afafff/ffffff?text= ) | melrose             | #AFAFFF |
+| ![#afd700](https://placehold.it/40x40/afd700/ffffff?text= ) | rio grande          | #AFD700 |
+| ![#afd75f](https://placehold.it/40x40/afd75f/ffffff?text= ) | conifer             | #AFD75F |
+| ![#afd787](https://placehold.it/40x40/afd787/ffffff?text= ) | feijoa 1            | #AFD787 |
+| ![#afd7af](https://placehold.it/40x40/afd7af/ffffff?text= ) | pixie green         | #AFD7AF |
+| ![#afd7d7](https://placehold.it/40x40/afd7d7/ffffff?text= ) | jungle mist         | #AFD7D7 |
+| ![#afd7ff](https://placehold.it/40x40/afd7ff/ffffff?text= ) | anakiwa 2           | #AFD7FF |
+| ![#afff00](https://placehold.it/40x40/afff00/ffffff?text= ) | lime 1              | #AFFF00 |
+| ![#afff5f](https://placehold.it/40x40/afff5f/ffffff?text= ) | green yellow        | #AFFF5F |
+| ![#afff87](https://placehold.it/40x40/afff87/ffffff?text= ) | mint green 1        | #AFFF87 |
+| ![#afffaf](https://placehold.it/40x40/afffaf/ffffff?text= ) | dark sea green      | #AFFFAF |
+| ![#afffd7](https://placehold.it/40x40/afffd7/ffffff?text= ) | aero blue           | #AFFFD7 |
+| ![#afffff](https://placehold.it/40x40/afffff/ffffff?text= ) | french pass         | #AFFFFF |
+| ![#d70000](https://placehold.it/40x40/d70000/ffffff?text= ) | guardsman red       | #D70000 |
+| ![#d7005f](https://placehold.it/40x40/d7005f/ffffff?text= ) | razzmatazz          | #D7005F |
+| ![#d70087](https://placehold.it/40x40/d70087/ffffff?text= ) | hollywood cerise    | #D70087 |
+| ![#d700af](https://placehold.it/40x40/d700af/ffffff?text= ) | hollywood cerise 1  | #D700AF |
+| ![#d700d7](https://placehold.it/40x40/d700d7/ffffff?text= ) | purple pizzazz      | #D700D7 |
+| ![#d700ff](https://placehold.it/40x40/d700ff/ffffff?text= ) | electric violet 1   | #D700FF |
+| ![#d75f00](https://placehold.it/40x40/d75f00/ffffff?text= ) | tenn                | #D75F00 |
+| ![#d75f5f](https://placehold.it/40x40/d75f5f/ffffff?text= ) | roman               | #D75F5F |
+| ![#d75f87](https://placehold.it/40x40/d75f87/ffffff?text= ) | cranberry           | #D75F87 |
+| ![#d75faf](https://placehold.it/40x40/d75faf/ffffff?text= ) | hopbush             | #D75FAF |
+| ![#d75fd7](https://placehold.it/40x40/d75fd7/ffffff?text= ) | orchid              | #D75FD7 |
+| ![#d75fff](https://placehold.it/40x40/d75fff/ffffff?text= ) | medium orchid       | #D75FFF |
+| ![#d78700](https://placehold.it/40x40/d78700/ffffff?text= ) | mango tango         | #D78700 |
+| ![#d7875f](https://placehold.it/40x40/d7875f/ffffff?text= ) | copperfield         | #D7875F |
+| ![#d78787](https://placehold.it/40x40/d78787/ffffff?text= ) | pink                | #D78787 |
+| ![#d787af](https://placehold.it/40x40/d787af/ffffff?text= ) | cancan              | #D787AF |
+| ![#d787d7](https://placehold.it/40x40/d787d7/ffffff?text= ) | light orchid        | #D787D7 |
+| ![#d787ff](https://placehold.it/40x40/d787ff/ffffff?text= ) | heliotrope 3        | #D787FF |
+| ![#d7af00](https://placehold.it/40x40/d7af00/ffffff?text= ) | corn                | #D7AF00 |
+| ![#d7af5f](https://placehold.it/40x40/d7af5f/ffffff?text= ) | tacha               | #D7AF5F |
+| ![#d7af87](https://placehold.it/40x40/d7af87/ffffff?text= ) | tan                 | #D7AF87 |
+| ![#d7afaf](https://placehold.it/40x40/d7afaf/ffffff?text= ) | clam shell          | #D7AFAF |
+| ![#d7afd7](https://placehold.it/40x40/d7afd7/ffffff?text= ) | thistle             | #D7AFD7 |
+| ![#d7afff](https://placehold.it/40x40/d7afff/ffffff?text= ) | mauve               | #D7AFFF |
+| ![#d7d700](https://placehold.it/40x40/d7d700/ffffff?text= ) | corn 1              | #D7D700 |
+| ![#d7d75f](https://placehold.it/40x40/d7d75f/ffffff?text= ) | khaki               | #D7D75F |
+| ![#d7d787](https://placehold.it/40x40/d7d787/ffffff?text= ) | deco                | #D7D787 |
+| ![#d7d7af](https://placehold.it/40x40/d7d7af/ffffff?text= ) | green mist          | #D7D7AF |
+| ![#d7d7d7](https://placehold.it/40x40/d7d7d7/ffffff?text= ) | alto                | #D7D7D7 |
+| ![#d7d7ff](https://placehold.it/40x40/d7d7ff/ffffff?text= ) | fog                 | #D7D7FF |
+| ![#d7ff00](https://placehold.it/40x40/d7ff00/ffffff?text= ) | chartreuse yellow   | #D7FF00 |
+| ![#d7ff5f](https://placehold.it/40x40/d7ff5f/ffffff?text= ) | canary              | #D7FF5F |
+| ![#d7ff87](https://placehold.it/40x40/d7ff87/ffffff?text= ) | honeysuckle         | #D7FF87 |
+| ![#d7ffaf](https://placehold.it/40x40/d7ffaf/ffffff?text= ) | reef                | #D7FFAF |
+| ![#d7ffd7](https://placehold.it/40x40/d7ffd7/ffffff?text= ) | snowy mint          | #D7FFD7 |
+| ![#d7ffff](https://placehold.it/40x40/d7ffff/ffffff?text= ) | oyster bay          | #D7FFFF |
+| ![#ff005f](https://placehold.it/40x40/ff005f/ffffff?text= ) | rose                | #FF005F |
+| ![#ff0087](https://placehold.it/40x40/ff0087/ffffff?text= ) | deep pink           | #FF0087 |
+| ![#ff00af](https://placehold.it/40x40/ff00af/ffffff?text= ) | hollywood cerise 2  | #FF00AF |
+| ![#ff00d7](https://placehold.it/40x40/ff00d7/ffffff?text= ) | purple pizzazz 1    | #FF00D7 |
+| ![#ff00ff](https://placehold.it/40x40/ff00ff/ffffff?text= ) | magenta             | #FF00FF |
+| ![#ff5f00](https://placehold.it/40x40/ff5f00/ffffff?text= ) | blaze orange        | #FF5F00 |
+| ![#ff5f5f](https://placehold.it/40x40/ff5f5f/ffffff?text= ) | bitter sweet        | #FF5F5F |
+| ![#ff5f87](https://placehold.it/40x40/ff5f87/ffffff?text= ) | wild watermelon     | #FF5F87 |
+| ![#ff5faf](https://placehold.it/40x40/ff5faf/ffffff?text= ) | hotpink             | #FF5FAF |
+| ![#ff5fd7](https://placehold.it/40x40/ff5fd7/ffffff?text= ) | hotpink 1           | #FF5FD7 |
+| ![#ff5fff](https://placehold.it/40x40/ff5fff/ffffff?text= ) | pink flamingo       | #FF5FFF |
+| ![#ff8700](https://placehold.it/40x40/ff8700/ffffff?text= ) | flush orange        | #FF8700 |
+| ![#ff875f](https://placehold.it/40x40/ff875f/ffffff?text= ) | salmon              | #FF875F |
+| ![#ff8787](https://placehold.it/40x40/ff8787/ffffff?text= ) | vivid tangerine     | #FF8787 |
+| ![#ff87af](https://placehold.it/40x40/ff87af/ffffff?text= ) | pink salmon         | #FF87AF |
+| ![#ff87d7](https://placehold.it/40x40/ff87d7/ffffff?text= ) | lavender rose       | #FF87D7 |
+| ![#ff87ff](https://placehold.it/40x40/ff87ff/ffffff?text= ) | blush pink          | #FF87FF |
+| ![#ffaf00](https://placehold.it/40x40/ffaf00/ffffff?text= ) | yellow sea          | #FFAF00 |
+| ![#ffaf5f](https://placehold.it/40x40/ffaf5f/ffffff?text= ) | texas rose          | #FFAF5F |
+| ![#ffaf87](https://placehold.it/40x40/ffaf87/ffffff?text= ) | hit pink            | #FFAF87 |
+| ![#ffafaf](https://placehold.it/40x40/ffafaf/ffffff?text= ) | sundown             | #FFAFAF |
+| ![#ffafd7](https://placehold.it/40x40/ffafd7/ffffff?text= ) | cotton candy        | #FFAFD7 |
+| ![#ffafff](https://placehold.it/40x40/ffafff/ffffff?text= ) | lavender rose 1     | #FFAFFF |
+| ![#ffd700](https://placehold.it/40x40/ffd700/ffffff?text= ) | gold                | #FFD700 |
+| ![#ffd75f](https://placehold.it/40x40/ffd75f/ffffff?text= ) | dandelion           | #FFD75F |
+| ![#ffd787](https://placehold.it/40x40/ffd787/ffffff?text= ) | grandis             | #FFD787 |
+| ![#ffd7af](https://placehold.it/40x40/ffd7af/ffffff?text= ) | caramel             | #FFD7AF |
+| ![#ffd7d7](https://placehold.it/40x40/ffd7d7/ffffff?text= ) | cosmos              | #FFD7D7 |
+| ![#ffd7ff](https://placehold.it/40x40/ffd7ff/ffffff?text= ) | pink lace           | #FFD7FF |
+| ![#ffff5f](https://placehold.it/40x40/ffff5f/ffffff?text= ) | laser lemon         | #FFFF5F |
+| ![#ffff87](https://placehold.it/40x40/ffff87/ffffff?text= ) | dolly               | #FFFF87 |
+| ![#ffffaf](https://placehold.it/40x40/ffffaf/ffffff?text= ) | portafino           | #FFFFAF |
+| ![#ffffd7](https://placehold.it/40x40/ffffd7/ffffff?text= ) | cumulus             | #FFFFD7 |
+| ![#080808](https://placehold.it/40x40/080808/ffffff?text= ) | cod gray            | #080808 |
+| ![#121212](https://placehold.it/40x40/121212/ffffff?text= ) | cod gray 1          | #121212 |
+| ![#1c1c1c](https://placehold.it/40x40/1c1c1c/ffffff?text= ) | cod gray 2          | #1C1C1C |
+| ![#262626](https://placehold.it/40x40/262626/ffffff?text= ) | mine shaft          | #262626 |
+| ![#303030](https://placehold.it/40x40/303030/ffffff?text= ) | mine shaft 1        | #303030 |
+| ![#3a3a3a](https://placehold.it/40x40/3a3a3a/ffffff?text= ) | mine shaft 2        | #3A3A3A |
+| ![#444444](https://placehold.it/40x40/444444/ffffff?text= ) | tundora             | #444444 |
+| ![#4e4e4e](https://placehold.it/40x40/4e4e4e/ffffff?text= ) | tundora 1           | #4E4E4E |
+| ![#585858](https://placehold.it/40x40/585858/ffffff?text= ) | scorpion 1          | #585858 |
+| ![#626262](https://placehold.it/40x40/626262/ffffff?text= ) | dove gray           | #626262 |
+| ![#6c6c6c](https://placehold.it/40x40/6c6c6c/ffffff?text= ) | dove gray 1         | #6C6C6C |
+| ![#767676](https://placehold.it/40x40/767676/ffffff?text= ) | boulder             | #767676 |
+| ![#8a8a8a](https://placehold.it/40x40/8a8a8a/ffffff?text= ) | gray 2              | #8A8A8A |
+| ![#8a8a8a](https://placehold.it/40x40/8a8a8a/ffffff?text= ) | grey 2              | #8A8A8A |
+| ![#949494](https://placehold.it/40x40/949494/ffffff?text= ) | dusty gray          | #949494 |
+| ![#9e9e9e](https://placehold.it/40x40/9e9e9e/ffffff?text= ) | silver chalice 1    | #9E9E9E |
+| ![#a8a8a8](https://placehold.it/40x40/a8a8a8/ffffff?text= ) | silver chalice 2    | #A8A8A8 |
+| ![#b2b2b2](https://placehold.it/40x40/b2b2b2/ffffff?text= ) | silver chalice 3    | #B2B2B2 |
+| ![#bcbcbc](https://placehold.it/40x40/bcbcbc/ffffff?text= ) | silver 1            | #BCBCBC |
+| ![#c6c6c6](https://placehold.it/40x40/c6c6c6/ffffff?text= ) | silver 2            | #C6C6C6 |
+| ![#d0d0d0](https://placehold.it/40x40/d0d0d0/ffffff?text= ) | alto 1              | #D0D0D0 |
+| ![#dadada](https://placehold.it/40x40/dadada/ffffff?text= ) | alto 2              | #DADADA |
+| ![#e4e4e4](https://placehold.it/40x40/e4e4e4/ffffff?text= ) | mercury             | #E4E4E4 |
+| ![#eeeeee](https://placehold.it/40x40/eeeeee/ffffff?text= ) | gallery             | #EEEEEE |
diff --git a/docs/upgrading.md b/docs/upgrading.md
new file mode 100644
index 0000000..0e87926
--- /dev/null
+++ b/docs/upgrading.md
@@ -0,0 +1,30 @@
+## from 1.x to 2.x
+
+### Renamed colors
+```diff
+-   bright white
++   white
+```
+
+### Removed colors
+```diff
+-   bright black
+-   bright red
+-   bright green
+-   bright yellow
+-   bright blue
+-   bright magenta
+-   bright cyan
+```
+
+### Changed colors degree
+
+| Color	    | 1.x                                                         | 2.x                                                         |
+| --------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
+| red       | ![#cc0000](https://placehold.it/40x40/cc0000/ffffff?text= ) | ![#FF0000](https://placehold.it/40x40/FF0000/ffffff?text= ) |
+| green     | ![#4e9a06](https://placehold.it/40x40/4e9a06/ffffff?text= ) | ![#008000](https://placehold.it/40x40/008000/ffffff?text= ) |
+| yellow    | ![#c4a000](https://placehold.it/40x40/c4a000/ffffff?text= ) | ![#ffff00](https://placehold.it/40x40/ffff00/ffffff?text= ) |
+| blue      | ![#729fcf](https://placehold.it/40x40/729fcf/ffffff?text= ) | ![#0000ff](https://placehold.it/40x40/0000ff/ffffff?text= ) |
+| magenta   | ![#75507b](https://placehold.it/40x40/75507b/ffffff?text= ) | ![#ff00ff](https://placehold.it/40x40/ff00ff/ffffff?text= ) |
+| cyan      | ![#06989a](https://placehold.it/40x40/06989a/ffffff?text= ) | ![#00ffff](https://placehold.it/40x40/00ffff/ffffff?text= ) |
+| white     | ![#d3d7cf](https://placehold.it/40x40/d3d7cf/ffffff?text= ) | ![#ffffff](https://placehold.it/40x40/ffffff/ffffff?text= ) |
diff --git a/docs/usage.md b/docs/usage.md
index 47eef0f..f4d0a5b 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -110,23 +110,7 @@ line("-")
 > Separator can contain only one character.
 
 ### You can also paint your content
-
-**Supported colors:**
-- black
-- red
-- green
-- yellow
-- blue
-- magenta
-- cyan
-- white
-- gray / grey
-- light red
-- light green
-- light yellow
-- light blue
-- light magenta
-- light cyan
+#### text color
 
 ```python
     from termspark import TermSpark
@@ -136,22 +120,7 @@ line("-")
     TermSpark().print_center('CENTER', 'light_green').spark()
 ```
 
-**Supported highlights:**
-- black
-- red
-- green
-- yellow
-- blue
-- magenta
-- cyan
-- white
-- gray / grey
-- light red
-- light green
-- light yellow
-- light blue
-- light magenta
-- light cyan
+#### background color
 
 ```python
     from termspark import TermSpark
@@ -305,3 +274,261 @@ termspark.set_separator(".", "green")
 termspark.spark()
 ```
 ![](https://github.com/faissaloux/termspark/assets/60013703/ce829c1a-f14e-419c-80d0-aa202e5608dc)
+
+### Supported colors
+
+| Color	                                                      | Name                | HEX     |
+| ----------------------------------------------------------- | ------------------- | ------- |
+| ![#000000](https://placehold.it/40x40/000000/ffffff?text= ) | black               | #000000 |
+| ![#800000](https://placehold.it/40x40/800000/ffffff?text= ) | maroon              | #800000 |
+| ![#008000](https://placehold.it/40x40/008000/ffffff?text= ) | green               | #008000 |
+| ![#808000](https://placehold.it/40x40/808000/ffffff?text= ) | olive               | #808000 |
+| ![#000080](https://placehold.it/40x40/000080/ffffff?text= ) | navy                | #000080 |
+| ![#800080](https://placehold.it/40x40/800080/ffffff?text= ) | purple              | #800080 |
+| ![#008080](https://placehold.it/40x40/008080/ffffff?text= ) | teal                | #008080 |
+| ![#c0c0c0](https://placehold.it/40x40/c0c0c0/ffffff?text= ) | silver              | #C0C0C0 |
+| ![#808080](https://placehold.it/40x40/808080/ffffff?text= ) | gray                | #808080 |
+| ![#808080](https://placehold.it/40x40/808080/ffffff?text= ) | grey                | #808080 |
+| ![#ff0000](https://placehold.it/40x40/ff0000/ffffff?text= ) | red                 | #FF0000 |
+| ![#00ff00](https://placehold.it/40x40/00ff00/ffffff?text= ) | lime                | #00FF00 |
+| ![#ffff00](https://placehold.it/40x40/ffff00/ffffff?text= ) | yellow              | #FFFF00 |
+| ![#0000ff](https://placehold.it/40x40/0000ff/ffffff?text= ) | blue                | #0000FF |
+| ![#ff00ff](https://placehold.it/40x40/ff00ff/ffffff?text= ) | fuchsia             | #FF00FF |
+| ![#00ffff](https://placehold.it/40x40/00ffff/ffffff?text= ) | aqua                | #00FFFF |
+| ![#ffffff](https://placehold.it/40x40/ffffff/ffffff?text= ) | white               | #FFFFFF |
+| ![#00005f](https://placehold.it/40x40/00005f/ffffff?text= ) | navy blue           | #00005F |
+| ![#000087](https://placehold.it/40x40/000087/ffffff?text= ) | dark blue           | #000087 |
+| ![#0000af](https://placehold.it/40x40/0000af/ffffff?text= ) | dark blue 2         | #0000AF |
+| ![#0000d7](https://placehold.it/40x40/0000d7/ffffff?text= ) | dark blue 1         | #0000D7 |
+| ![#005f00](https://placehold.it/40x40/005f00/ffffff?text= ) | dark green          | #005F00 |
+| ![#005f5f](https://placehold.it/40x40/005f5f/ffffff?text= ) | blue stone          | #005F5F |
+| ![#005f87](https://placehold.it/40x40/005f87/ffffff?text= ) | orient              | #005F87 |
+| ![#005faf](https://placehold.it/40x40/005faf/ffffff?text= ) | endeavour           | #005FAF |
+| ![#005fd7](https://placehold.it/40x40/005fd7/ffffff?text= ) | science blue        | #005FD7 |
+| ![#005fff](https://placehold.it/40x40/005fff/ffffff?text= ) | blue ribbon         | #005FFF |
+| ![#008700](https://placehold.it/40x40/008700/ffffff?text= ) | japanese laurel     | #008700 |
+| ![#00875f](https://placehold.it/40x40/00875f/ffffff?text= ) | deep sea            | #00875F |
+| ![#008787](https://placehold.it/40x40/008787/ffffff?text= ) | turquoise           | #008787 |
+| ![#0087af](https://placehold.it/40x40/0087af/ffffff?text= ) | deep cerulean       | #0087AF |
+| ![#0087d7](https://placehold.it/40x40/0087d7/ffffff?text= ) | lochmara            | #0087D7 |
+| ![#0087ff](https://placehold.it/40x40/0087ff/ffffff?text= ) | azure radiance      | #0087FF |
+| ![#00af00](https://placehold.it/40x40/00af00/ffffff?text= ) | islamic green       | #00AF00 |
+| ![#00af5f](https://placehold.it/40x40/00af5f/ffffff?text= ) | spring green        | #00AF5F |
+| ![#00af87](https://placehold.it/40x40/00af87/ffffff?text= ) | dark cyan           | #00AF87 |
+| ![#00afaf](https://placehold.it/40x40/00afaf/ffffff?text= ) | light sea green     | #00AFAF |
+| ![#00afd7](https://placehold.it/40x40/00afd7/ffffff?text= ) | cerulean            | #00AFD7 |
+| ![#00afff](https://placehold.it/40x40/00afff/ffffff?text= ) | blue bolt           | #00AFFF |
+| ![#00d700](https://placehold.it/40x40/00d700/ffffff?text= ) | electric green      | #00D700 |
+| ![#00d75f](https://placehold.it/40x40/00d75f/ffffff?text= ) | malachite           | #00D75F |
+| ![#00d787](https://placehold.it/40x40/00d787/ffffff?text= ) | caribbean green     | #00D787 |
+| ![#00d7af](https://placehold.it/40x40/00d7af/ffffff?text= ) | cyan 1              | #00D7AF |
+| ![#00d7d7](https://placehold.it/40x40/00d7d7/ffffff?text= ) | dark turquoise      | #00D7D7 |
+| ![#00d7ff](https://placehold.it/40x40/00d7ff/ffffff?text= ) | vivid sky blue      | #00D7FF |
+| ![#00ff00](https://placehold.it/40x40/00ff00/ffffff?text= ) | electric green 1    | #00FF00 |
+| ![#00ff5f](https://placehold.it/40x40/00ff5f/ffffff?text= ) | guppie green        | #00FF5F |
+| ![#00ff87](https://placehold.it/40x40/00ff87/ffffff?text= ) | spring green 1      | #00FF87 |
+| ![#00ffaf](https://placehold.it/40x40/00ffaf/ffffff?text= ) | medium spring green | #00FFAF |
+| ![#00ffd7](https://placehold.it/40x40/00ffd7/ffffff?text= ) | sea green           | #00FFD7 |
+| ![#00ffff](https://placehold.it/40x40/00ffff/ffffff?text= ) | cyan                | #00FFFF |
+| ![#5f0000](https://placehold.it/40x40/5f0000/ffffff?text= ) | rosewood            | #5F0000 |
+| ![#5f005f](https://placehold.it/40x40/5f005f/ffffff?text= ) | pompadour           | #5F005F |
+| ![#5f0087](https://placehold.it/40x40/5f0087/ffffff?text= ) | pigment indigo      | #5F0087 |
+| ![#5f00af](https://placehold.it/40x40/5f00af/ffffff?text= ) | purple 3            | #5F00AF |
+| ![#5f00d7](https://placehold.it/40x40/5f00d7/ffffff?text= ) | electic violet      | #5F00D7 |
+| ![#5f00ff](https://placehold.it/40x40/5f00ff/ffffff?text= ) | blue violet         | #5F00FF |
+| ![#5f5f00](https://placehold.it/40x40/5f5f00/ffffff?text= ) | verdun green        | #5F5F00 |
+| ![#5f5f5f](https://placehold.it/40x40/5f5f5f/ffffff?text= ) | scorpion            | #5F5F5F |
+| ![#5f5f87](https://placehold.it/40x40/5f5f87/ffffff?text= ) | comet               | #5F5F87 |
+| ![#5f5faf](https://placehold.it/40x40/5f5faf/ffffff?text= ) | scampi              | #5F5FAF |
+| ![#5f5fd7](https://placehold.it/40x40/5f5fd7/ffffff?text= ) | indigo              | #5F5FD7 |
+| ![#5f5fff](https://placehold.it/40x40/5f5fff/ffffff?text= ) | cornflower blue 1   | #5F5FFF |
+| ![#5f8700](https://placehold.it/40x40/5f8700/ffffff?text= ) | limeade             | #5F8700 |
+| ![#5f875f](https://placehold.it/40x40/5f875f/ffffff?text= ) | glade green         | #5F875F |
+| ![#5f8787](https://placehold.it/40x40/5f8787/ffffff?text= ) | juniper             | #5F8787 |
+| ![#5f87af](https://placehold.it/40x40/5f87af/ffffff?text= ) | hippie blue         | #5F87AF |
+| ![#5f87d7](https://placehold.it/40x40/5f87d7/ffffff?text= ) | havelock blue       | #5F87D7 |
+| ![#5f87ff](https://placehold.it/40x40/5f87ff/ffffff?text= ) | cornflower blue     | #5F87FF |
+| ![#5faf00](https://placehold.it/40x40/5faf00/ffffff?text= ) | limea               | #5FAF00 |
+| ![#5faf5f](https://placehold.it/40x40/5faf5f/ffffff?text= ) | fern                | #5FAF5F |
+| ![#5faf87](https://placehold.it/40x40/5faf87/ffffff?text= ) | silver tree         | #5FAF87 |
+| ![#5fafaf](https://placehold.it/40x40/5fafaf/ffffff?text= ) | tradewind           | #5FAFAF |
+| ![#5fafd7](https://placehold.it/40x40/5fafd7/ffffff?text= ) | shakespeare         | #5FAFD7 |
+| ![#5fafff](https://placehold.it/40x40/5fafff/ffffff?text= ) | malibu              | #5FAFFF |
+| ![#5fd700](https://placehold.it/40x40/5fd700/ffffff?text= ) | bright green        | #5FD700 |
+| ![#5fd75f](https://placehold.it/40x40/5fd75f/ffffff?text= ) | pale green          | #5FD75F |
+| ![#5fd787](https://placehold.it/40x40/5fd787/ffffff?text= ) | pastel green        | #5FD787 |
+| ![#5fd7af](https://placehold.it/40x40/5fd7af/ffffff?text= ) | downy               | #5FD7AF |
+| ![#5fd7d7](https://placehold.it/40x40/5fd7d7/ffffff?text= ) | viking              | #5FD7D7 |
+| ![#5fd7ff](https://placehold.it/40x40/5fd7ff/ffffff?text= ) | steel blue          | #5FD7FF |
+| ![#5fff00](https://placehold.it/40x40/5fff00/ffffff?text= ) | chartreuse          | #5FFF00 |
+| ![#5fff5f](https://placehold.it/40x40/5fff5f/ffffff?text= ) | screaming green     | #5FFF5F |
+| ![#5fff87](https://placehold.it/40x40/5fff87/ffffff?text= ) | sea green 1         | #5FFF87 |
+| ![#5fffaf](https://placehold.it/40x40/5fffaf/ffffff?text= ) | aquamarine 1        | #5FFFAF |
+| ![#5fffd7](https://placehold.it/40x40/5fffd7/ffffff?text= ) | aquamarine 2        | #5FFFD7 |
+| ![#5fffff](https://placehold.it/40x40/5fffff/ffffff?text= ) | aquamarine          | #5FFFFF |
+| ![#870000](https://placehold.it/40x40/870000/ffffff?text= ) | dark red            | #870000 |
+| ![#87005f](https://placehold.it/40x40/87005f/ffffff?text= ) | fresh eggplant      | #87005F |
+| ![#870087](https://placehold.it/40x40/870087/ffffff?text= ) | dark magenta        | #870087 |
+| ![#8700af](https://placehold.it/40x40/8700af/ffffff?text= ) | purple 2            | #8700AF |
+| ![#8700d7](https://placehold.it/40x40/8700d7/ffffff?text= ) | electric violet     | #8700D7 |
+| ![#8700ff](https://placehold.it/40x40/8700ff/ffffff?text= ) | purple 1            | #8700FF |
+| ![#875f00](https://placehold.it/40x40/875f00/ffffff?text= ) | brown               | #875F00 |
+| ![#875f5f](https://placehold.it/40x40/875f5f/ffffff?text= ) | copper rose         | #875F5F |
+| ![#875f87](https://placehold.it/40x40/875f87/ffffff?text= ) | strike master       | #875F87 |
+| ![#875faf](https://placehold.it/40x40/875faf/ffffff?text= ) | deluge              | #875FAF |
+| ![#875fd7](https://placehold.it/40x40/875fd7/ffffff?text= ) | medium purple       | #875FD7 |
+| ![#875fff](https://placehold.it/40x40/875fff/ffffff?text= ) | heliotrope          | #875FFF |
+| ![#878700](https://placehold.it/40x40/878700/ffffff?text= ) | olive 1             | #878700 |
+| ![#87875f](https://placehold.it/40x40/87875f/ffffff?text= ) | clay creek          | #87875F |
+| ![#878787](https://placehold.it/40x40/878787/ffffff?text= ) | gray 1              | #878787 |
+| ![#878787](https://placehold.it/40x40/878787/ffffff?text= ) | grey 1              | #878787 |
+| ![#8787af](https://placehold.it/40x40/8787af/ffffff?text= ) | wild blue yonder    | #8787AF |
+| ![#8787d7](https://placehold.it/40x40/8787d7/ffffff?text= ) | chetwode blue       | #8787D7 |
+| ![#8787ff](https://placehold.it/40x40/8787ff/ffffff?text= ) | light slate blue    | #8787FF |
+| ![#87af00](https://placehold.it/40x40/87af00/ffffff?text= ) | limeade 1           | #87AF00 |
+| ![#87af5f](https://placehold.it/40x40/87af5f/ffffff?text= ) | chelsea cucumber    | #87AF5F |
+| ![#87af87](https://placehold.it/40x40/87af87/ffffff?text= ) | bay leaf            | #87AF87 |
+| ![#87afaf](https://placehold.it/40x40/87afaf/ffffff?text= ) | gulf stream         | #87AFAF |
+| ![#87afd7](https://placehold.it/40x40/87afd7/ffffff?text= ) | polo blue           | #87AFD7 |
+| ![#87afff](https://placehold.it/40x40/87afff/ffffff?text= ) | malibu 1            | #87AFFF |
+| ![#87d700](https://placehold.it/40x40/87d700/ffffff?text= ) | pistachio           | #87D700 |
+| ![#87d75f](https://placehold.it/40x40/87d75f/ffffff?text= ) | dark olive green    | #87D75F |
+| ![#87d787](https://placehold.it/40x40/87d787/ffffff?text= ) | feijoa              | #87D787 |
+| ![#87d7af](https://placehold.it/40x40/87d7af/ffffff?text= ) | vista blue          | #87D7AF |
+| ![#87d7d7](https://placehold.it/40x40/87d7d7/ffffff?text= ) | bermuda             | #87D7D7 |
+| ![#87d7ff](https://placehold.it/40x40/87d7ff/ffffff?text= ) | anakiwa             | #87D7FF |
+| ![#87ff00](https://placehold.it/40x40/87ff00/ffffff?text= ) | chartreuse 1        | #87FF00 |
+| ![#87ff5f](https://placehold.it/40x40/87ff5f/ffffff?text= ) | light green         | #87FF5F |
+| ![#87ff87](https://placehold.it/40x40/87ff87/ffffff?text= ) | mint green          | #87FF87 |
+| ![#87ffaf](https://placehold.it/40x40/87ffaf/ffffff?text= ) | pale green 1        | #87FFAF |
+| ![#87ffd7](https://placehold.it/40x40/87ffd7/ffffff?text= ) | aqua marine         | #87FFD7 |
+| ![#87ffff](https://placehold.it/40x40/87ffff/ffffff?text= ) | anakiwa 1           | #87FFFF |
+| ![#af0000](https://placehold.it/40x40/af0000/ffffff?text= ) | bright red          | #AF0000 |
+| ![#af005f](https://placehold.it/40x40/af005f/ffffff?text= ) | flirt               | #AF005F |
+| ![#af0087](https://placehold.it/40x40/af0087/ffffff?text= ) | medium violet red   | #AF0087 |
+| ![#af00af](https://placehold.it/40x40/af00af/ffffff?text= ) | magenta 1           | #AF00AF |
+| ![#af00d7](https://placehold.it/40x40/af00d7/ffffff?text= ) | dark violet         | #AF00D7 |
+| ![#af00ff](https://placehold.it/40x40/af00ff/ffffff?text= ) | purple 4            | #AF00FF |
+| ![#af5f00](https://placehold.it/40x40/af5f00/ffffff?text= ) | rose of sharon      | #AF5F00 |
+| ![#af5f5f](https://placehold.it/40x40/af5f5f/ffffff?text= ) | indian red          | #AF5F5F |
+| ![#af5f87](https://placehold.it/40x40/af5f87/ffffff?text= ) | tapestry            | #AF5F87 |
+| ![#af5faf](https://placehold.it/40x40/af5faf/ffffff?text= ) | fuchsia pink        | #AF5FAF |
+| ![#af5fd7](https://placehold.it/40x40/af5fd7/ffffff?text= ) | medium purple 1     | #AF5FD7 |
+| ![#af5fff](https://placehold.it/40x40/af5fff/ffffff?text= ) | heliotrope 1        | #AF5FFF |
+| ![#af8700](https://placehold.it/40x40/af8700/ffffff?text= ) | pirate gold         | #AF8700 |
+| ![#af875f](https://placehold.it/40x40/af875f/ffffff?text= ) | muesli              | #AF875F |
+| ![#af8787](https://placehold.it/40x40/af8787/ffffff?text= ) | pharlap             | #AF8787 |
+| ![#af87af](https://placehold.it/40x40/af87af/ffffff?text= ) | bouquet             | #AF87AF |
+| ![#af87d7](https://placehold.it/40x40/af87d7/ffffff?text= ) | lavender            | #AF87D7 |
+| ![#af87ff](https://placehold.it/40x40/af87ff/ffffff?text= ) | heliotrope 2        | #AF87FF |
+| ![#afaf00](https://placehold.it/40x40/afaf00/ffffff?text= ) | gold 1              | #AFAF00 |
+| ![#afaf5f](https://placehold.it/40x40/afaf5f/ffffff?text= ) | olive green         | #AFAF5F |
+| ![#afaf87](https://placehold.it/40x40/afaf87/ffffff?text= ) | hillary             | #AFAF87 |
+| ![#afafaf](https://placehold.it/40x40/afafaf/ffffff?text= ) | silver chalice      | #AFAFAF |
+| ![#afafd7](https://placehold.it/40x40/afafd7/ffffff?text= ) | wistful             | #AFAFD7 |
+| ![#afafff](https://placehold.it/40x40/afafff/ffffff?text= ) | melrose             | #AFAFFF |
+| ![#afd700](https://placehold.it/40x40/afd700/ffffff?text= ) | rio grande          | #AFD700 |
+| ![#afd75f](https://placehold.it/40x40/afd75f/ffffff?text= ) | conifer             | #AFD75F |
+| ![#afd787](https://placehold.it/40x40/afd787/ffffff?text= ) | feijoa 1            | #AFD787 |
+| ![#afd7af](https://placehold.it/40x40/afd7af/ffffff?text= ) | pixie green         | #AFD7AF |
+| ![#afd7d7](https://placehold.it/40x40/afd7d7/ffffff?text= ) | jungle mist         | #AFD7D7 |
+| ![#afd7ff](https://placehold.it/40x40/afd7ff/ffffff?text= ) | anakiwa 2           | #AFD7FF |
+| ![#afff00](https://placehold.it/40x40/afff00/ffffff?text= ) | lime 1              | #AFFF00 |
+| ![#afff5f](https://placehold.it/40x40/afff5f/ffffff?text= ) | green yellow        | #AFFF5F |
+| ![#afff87](https://placehold.it/40x40/afff87/ffffff?text= ) | mint green 1        | #AFFF87 |
+| ![#afffaf](https://placehold.it/40x40/afffaf/ffffff?text= ) | dark sea green      | #AFFFAF |
+| ![#afffd7](https://placehold.it/40x40/afffd7/ffffff?text= ) | aero blue           | #AFFFD7 |
+| ![#afffff](https://placehold.it/40x40/afffff/ffffff?text= ) | french pass         | #AFFFFF |
+| ![#d70000](https://placehold.it/40x40/d70000/ffffff?text= ) | guardsman red       | #D70000 |
+| ![#d7005f](https://placehold.it/40x40/d7005f/ffffff?text= ) | razzmatazz          | #D7005F |
+| ![#d70087](https://placehold.it/40x40/d70087/ffffff?text= ) | hollywood cerise    | #D70087 |
+| ![#d700af](https://placehold.it/40x40/d700af/ffffff?text= ) | hollywood cerise 1  | #D700AF |
+| ![#d700d7](https://placehold.it/40x40/d700d7/ffffff?text= ) | purple pizzazz      | #D700D7 |
+| ![#d700ff](https://placehold.it/40x40/d700ff/ffffff?text= ) | electric violet 1   | #D700FF |
+| ![#d75f00](https://placehold.it/40x40/d75f00/ffffff?text= ) | tenn                | #D75F00 |
+| ![#d75f5f](https://placehold.it/40x40/d75f5f/ffffff?text= ) | roman               | #D75F5F |
+| ![#d75f87](https://placehold.it/40x40/d75f87/ffffff?text= ) | cranberry           | #D75F87 |
+| ![#d75faf](https://placehold.it/40x40/d75faf/ffffff?text= ) | hopbush             | #D75FAF |
+| ![#d75fd7](https://placehold.it/40x40/d75fd7/ffffff?text= ) | orchid              | #D75FD7 |
+| ![#d75fff](https://placehold.it/40x40/d75fff/ffffff?text= ) | medium orchid       | #D75FFF |
+| ![#d78700](https://placehold.it/40x40/d78700/ffffff?text= ) | mango tango         | #D78700 |
+| ![#d7875f](https://placehold.it/40x40/d7875f/ffffff?text= ) | copperfield         | #D7875F |
+| ![#d78787](https://placehold.it/40x40/d78787/ffffff?text= ) | pink                | #D78787 |
+| ![#d787af](https://placehold.it/40x40/d787af/ffffff?text= ) | cancan              | #D787AF |
+| ![#d787d7](https://placehold.it/40x40/d787d7/ffffff?text= ) | light orchid        | #D787D7 |
+| ![#d787ff](https://placehold.it/40x40/d787ff/ffffff?text= ) | heliotrope 3        | #D787FF |
+| ![#d7af00](https://placehold.it/40x40/d7af00/ffffff?text= ) | corn                | #D7AF00 |
+| ![#d7af5f](https://placehold.it/40x40/d7af5f/ffffff?text= ) | tacha               | #D7AF5F |
+| ![#d7af87](https://placehold.it/40x40/d7af87/ffffff?text= ) | tan                 | #D7AF87 |
+| ![#d7afaf](https://placehold.it/40x40/d7afaf/ffffff?text= ) | clam shell          | #D7AFAF |
+| ![#d7afd7](https://placehold.it/40x40/d7afd7/ffffff?text= ) | thistle             | #D7AFD7 |
+| ![#d7afff](https://placehold.it/40x40/d7afff/ffffff?text= ) | mauve               | #D7AFFF |
+| ![#d7d700](https://placehold.it/40x40/d7d700/ffffff?text= ) | corn 1              | #D7D700 |
+| ![#d7d75f](https://placehold.it/40x40/d7d75f/ffffff?text= ) | khaki               | #D7D75F |
+| ![#d7d787](https://placehold.it/40x40/d7d787/ffffff?text= ) | deco                | #D7D787 |
+| ![#d7d7af](https://placehold.it/40x40/d7d7af/ffffff?text= ) | green mist          | #D7D7AF |
+| ![#d7d7d7](https://placehold.it/40x40/d7d7d7/ffffff?text= ) | alto                | #D7D7D7 |
+| ![#d7d7ff](https://placehold.it/40x40/d7d7ff/ffffff?text= ) | fog                 | #D7D7FF |
+| ![#d7ff00](https://placehold.it/40x40/d7ff00/ffffff?text= ) | chartreuse yellow   | #D7FF00 |
+| ![#d7ff5f](https://placehold.it/40x40/d7ff5f/ffffff?text= ) | canary              | #D7FF5F |
+| ![#d7ff87](https://placehold.it/40x40/d7ff87/ffffff?text= ) | honeysuckle         | #D7FF87 |
+| ![#d7ffaf](https://placehold.it/40x40/d7ffaf/ffffff?text= ) | reef                | #D7FFAF |
+| ![#d7ffd7](https://placehold.it/40x40/d7ffd7/ffffff?text= ) | snowy mint          | #D7FFD7 |
+| ![#d7ffff](https://placehold.it/40x40/d7ffff/ffffff?text= ) | oyster bay          | #D7FFFF |
+| ![#ff005f](https://placehold.it/40x40/ff005f/ffffff?text= ) | rose                | #FF005F |
+| ![#ff0087](https://placehold.it/40x40/ff0087/ffffff?text= ) | deep pink           | #FF0087 |
+| ![#ff00af](https://placehold.it/40x40/ff00af/ffffff?text= ) | hollywood cerise 2  | #FF00AF |
+| ![#ff00d7](https://placehold.it/40x40/ff00d7/ffffff?text= ) | purple pizzazz 1    | #FF00D7 |
+| ![#ff00ff](https://placehold.it/40x40/ff00ff/ffffff?text= ) | magenta             | #FF00FF |
+| ![#ff5f00](https://placehold.it/40x40/ff5f00/ffffff?text= ) | blaze orange        | #FF5F00 |
+| ![#ff5f5f](https://placehold.it/40x40/ff5f5f/ffffff?text= ) | bitter sweet        | #FF5F5F |
+| ![#ff5f87](https://placehold.it/40x40/ff5f87/ffffff?text= ) | wild watermelon     | #FF5F87 |
+| ![#ff5faf](https://placehold.it/40x40/ff5faf/ffffff?text= ) | hotpink             | #FF5FAF |
+| ![#ff5fd7](https://placehold.it/40x40/ff5fd7/ffffff?text= ) | hotpink 1           | #FF5FD7 |
+| ![#ff5fff](https://placehold.it/40x40/ff5fff/ffffff?text= ) | pink flamingo       | #FF5FFF |
+| ![#ff8700](https://placehold.it/40x40/ff8700/ffffff?text= ) | flush orange        | #FF8700 |
+| ![#ff875f](https://placehold.it/40x40/ff875f/ffffff?text= ) | salmon              | #FF875F |
+| ![#ff8787](https://placehold.it/40x40/ff8787/ffffff?text= ) | vivid tangerine     | #FF8787 |
+| ![#ff87af](https://placehold.it/40x40/ff87af/ffffff?text= ) | pink salmon         | #FF87AF |
+| ![#ff87d7](https://placehold.it/40x40/ff87d7/ffffff?text= ) | lavender rose       | #FF87D7 |
+| ![#ff87ff](https://placehold.it/40x40/ff87ff/ffffff?text= ) | blush pink          | #FF87FF |
+| ![#ffaf00](https://placehold.it/40x40/ffaf00/ffffff?text= ) | yellow sea          | #FFAF00 |
+| ![#ffaf5f](https://placehold.it/40x40/ffaf5f/ffffff?text= ) | texas rose          | #FFAF5F |
+| ![#ffaf87](https://placehold.it/40x40/ffaf87/ffffff?text= ) | hit pink            | #FFAF87 |
+| ![#ffafaf](https://placehold.it/40x40/ffafaf/ffffff?text= ) | sundown             | #FFAFAF |
+| ![#ffafd7](https://placehold.it/40x40/ffafd7/ffffff?text= ) | cotton candy        | #FFAFD7 |
+| ![#ffafff](https://placehold.it/40x40/ffafff/ffffff?text= ) | lavender rose 1     | #FFAFFF |
+| ![#ffd700](https://placehold.it/40x40/ffd700/ffffff?text= ) | gold                | #FFD700 |
+| ![#ffd75f](https://placehold.it/40x40/ffd75f/ffffff?text= ) | dandelion           | #FFD75F |
+| ![#ffd787](https://placehold.it/40x40/ffd787/ffffff?text= ) | grandis             | #FFD787 |
+| ![#ffd7af](https://placehold.it/40x40/ffd7af/ffffff?text= ) | caramel             | #FFD7AF |
+| ![#ffd7d7](https://placehold.it/40x40/ffd7d7/ffffff?text= ) | cosmos              | #FFD7D7 |
+| ![#ffd7ff](https://placehold.it/40x40/ffd7ff/ffffff?text= ) | pink lace           | #FFD7FF |
+| ![#ffff5f](https://placehold.it/40x40/ffff5f/ffffff?text= ) | laser lemon         | #FFFF5F |
+| ![#ffff87](https://placehold.it/40x40/ffff87/ffffff?text= ) | dolly               | #FFFF87 |
+| ![#ffffaf](https://placehold.it/40x40/ffffaf/ffffff?text= ) | portafino           | #FFFFAF |
+| ![#ffffd7](https://placehold.it/40x40/ffffd7/ffffff?text= ) | cumulus             | #FFFFD7 |
+| ![#080808](https://placehold.it/40x40/080808/ffffff?text= ) | cod gray            | #080808 |
+| ![#121212](https://placehold.it/40x40/121212/ffffff?text= ) | cod gray 1          | #121212 |
+| ![#1c1c1c](https://placehold.it/40x40/1c1c1c/ffffff?text= ) | cod gray 2          | #1C1C1C |
+| ![#262626](https://placehold.it/40x40/262626/ffffff?text= ) | mine shaft          | #262626 |
+| ![#303030](https://placehold.it/40x40/303030/ffffff?text= ) | mine shaft 1        | #303030 |
+| ![#3a3a3a](https://placehold.it/40x40/3a3a3a/ffffff?text= ) | mine shaft 2        | #3A3A3A |
+| ![#444444](https://placehold.it/40x40/444444/ffffff?text= ) | tundora             | #444444 |
+| ![#4e4e4e](https://placehold.it/40x40/4e4e4e/ffffff?text= ) | tundora 1           | #4E4E4E |
+| ![#585858](https://placehold.it/40x40/585858/ffffff?text= ) | scorpion 1          | #585858 |
+| ![#626262](https://placehold.it/40x40/626262/ffffff?text= ) | dove gray           | #626262 |
+| ![#6c6c6c](https://placehold.it/40x40/6c6c6c/ffffff?text= ) | dove gray 1         | #6C6C6C |
+| ![#767676](https://placehold.it/40x40/767676/ffffff?text= ) | boulder             | #767676 |
+| ![#8a8a8a](https://placehold.it/40x40/8a8a8a/ffffff?text= ) | gray 2              | #8A8A8A |
+| ![#8a8a8a](https://placehold.it/40x40/8a8a8a/ffffff?text= ) | grey 2              | #8A8A8A |
+| ![#949494](https://placehold.it/40x40/949494/ffffff?text= ) | dusty gray          | #949494 |
+| ![#9e9e9e](https://placehold.it/40x40/9e9e9e/ffffff?text= ) | silver chalice 1    | #9E9E9E |
+| ![#a8a8a8](https://placehold.it/40x40/a8a8a8/ffffff?text= ) | silver chalice 2    | #A8A8A8 |
+| ![#b2b2b2](https://placehold.it/40x40/b2b2b2/ffffff?text= ) | silver chalice 3    | #B2B2B2 |
+| ![#bcbcbc](https://placehold.it/40x40/bcbcbc/ffffff?text= ) | silver 1            | #BCBCBC |
+| ![#c6c6c6](https://placehold.it/40x40/c6c6c6/ffffff?text= ) | silver 2            | #C6C6C6 |
+| ![#d0d0d0](https://placehold.it/40x40/d0d0d0/ffffff?text= ) | alto 1              | #D0D0D0 |
+| ![#dadada](https://placehold.it/40x40/dadada/ffffff?text= ) | alto 2              | #DADADA |
+| ![#e4e4e4](https://placehold.it/40x40/e4e4e4/ffffff?text= ) | mercury             | #E4E4E4 |
+| ![#eeeeee](https://placehold.it/40x40/eeeeee/ffffff?text= ) | gallery             | #EEEEEE |
diff --git a/mkdocs.yml b/mkdocs.yml
index 11ee870..4e2f0d2 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -37,12 +37,17 @@ nav:
 - Usage: usage.md
 - Changelog: changelog.md
 - License: license.md
+- Upgrading: upgrading.md
 
 markdown_extensions:
 - pymdownx.highlight
 - pymdownx.superfences
 
 extra:
+  version:
+    provider: mike
+    default: 2.x
+    alias: true
   social:
   - icon: fontawesome/brands/github-alt
     link: https://github.com/faissaloux
diff --git a/setup.cfg b/setup.cfg
index bfc549a..6701075 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -50,6 +50,7 @@ docs =
     mkdocs==1.4.2
     mkdocs-material==9.0.15
     pymdown-extensions==9.9.2
+    mike==2.1.1
 
 [isort]
 profile=black
diff --git a/termspark/__init__.py b/termspark/__init__.py
index aee447d..56682e0 100644
--- a/termspark/__init__.py
+++ b/termspark/__init__.py
@@ -62,9 +62,7 @@ def input(
         raise ParameterTypeError("print", "type", builtinType(type), builtinType)
 
     if builtinType(callback) != types.FunctionType:
-        raise ParameterTypeError(
-            "print", "callback", builtinType(type), types.FunctionType
-        )
+        raise ParameterTypeError("print", "callback", builtinType(type), types.FunctionType)
 
     print(prompt, color, highlight, style, position, separator, full_width)
 
diff --git a/termspark/hyperlink/hyperlink.py b/termspark/hyperlink/hyperlink.py
index fb94a72..69f29ec 100644
--- a/termspark/hyperlink/hyperlink.py
+++ b/termspark/hyperlink/hyperlink.py
@@ -25,9 +25,7 @@
 class Hyperlink:
     PLACEHOLDER_PATTERN: Final[str] = "[^\\[]*?"
     URL_PATTERN: Final[str] = "http[s]?://[^)]+"
-    HYPERLINK_PATTERN: Final[str] = (
-        f"\\[({PLACEHOLDER_PATTERN})]\\(\\s*({URL_PATTERN})\\s*\\)"
-    )
+    HYPERLINK_PATTERN: Final[str] = f"\\[({PLACEHOLDER_PATTERN})]\\(\\s*({URL_PATTERN})\\s*\\)"
 
     HYPERLINK_PREFIX: Final[str] = "\x1b]8;;"
     HYPERLINK_SUFFIX: Final[str] = "\x1b]8;;"
@@ -40,9 +38,7 @@ def __init__(self):
     def set_content(self, content: List[str]):
         self.content = content
 
-    def reformat(
-        self, content: Dict[str, list], detected: Dict[int, list]
-    ) -> List[str]:
+    def reformat(self, content: Dict[str, list], detected: Dict[int, list]) -> List[str]:
         for index in range(len(content["content"]) - 1, -1, -1):
             new_content = content["content"].copy()
 
@@ -57,9 +53,7 @@ def reformat(
                         hyperlink_to_insert = new_content[index][hyperlink_position:]
                         if new_content[index] != hyperlink_to_insert:
                             new_content.insert(index + 1, hyperlink_to_insert)
-                            new_content[index] = new_content[index].replace(
-                                hyperlink_to_insert, ""
-                            )
+                            new_content[index] = new_content[index].replace(hyperlink_to_insert, "")
 
                             self.__copy_attributes(content, index, 1)
 
@@ -132,9 +126,7 @@ def placeholders(self) -> List[str]:
             hyperlinks_found = re.findall(Hyperlink.HYPERLINK_PATTERN, content)
 
             for hyperlink_found in hyperlinks_found:
-                replaces[f"[{hyperlink_found[0]}]({hyperlink_found[1]})"] = (
-                    hyperlink_found[0]
-                )
+                replaces[f"[{hyperlink_found[0]}]({hyperlink_found[1]})"] = hyperlink_found[0]
 
             for replace_from, replace_by in replaces.items():
                 replaced_content = replaced_content.replace(replace_from, replace_by)
diff --git a/termspark/painter/constants/color.py b/termspark/painter/constants/color.py
new file mode 100644
index 0000000..dca3fc3
--- /dev/null
+++ b/termspark/painter/constants/color.py
@@ -0,0 +1,263 @@
+from abc import ABC, abstractmethod
+from typing import Final
+
+
+class Color(ABC):
+    @property
+    @abstractmethod
+    def PREFIX(self):
+        pass
+
+    BLACK: Final[int] = 0
+    MAROON: Final[int] = 1
+    GREEN: Final[int] = 2
+    OLIVE: Final[int] = 3
+    NAVY: Final[int] = 4
+    PURPLE: Final[int] = 5
+    TEAL: Final[int] = 6
+    SILVER: Final[int] = 7
+    GRAY: Final[int] = 8
+    GREY: Final[int] = 8
+    RED: Final[int] = 9
+    LIME: Final[int] = 10
+    YELLOW: Final[int] = 11
+    BLUE: Final[int] = 12
+    FUCHSIA: Final[int] = 13
+    AQUA: Final[int] = 14
+    WHITE: Final[int] = 15
+    NAVY_BLUE: Final[int] = 17
+    DARK_BLUE: Final[int] = 18
+    DARK_BLUE_2: Final[int] = 19
+    DARK_BLUE_1: Final[int] = 20
+    DARK_GREEN: Final[int] = 22
+    BLUE_STONE: Final[int] = 23
+    ORIENT: Final[int] = 24
+    ENDEAVOUR: Final[int] = 25
+    SCIENCE_BLUE: Final[int] = 26
+    BLUE_RIBBON: Final[int] = 27
+    JAPANESE_LAUREL: Final[int] = 28
+    DEEP_SEA: Final[int] = 29
+    TURQUOISE: Final[int] = 30
+    DEEP_CERULEAN: Final[int] = 31
+    LOCHMARA: Final[int] = 32
+    AZURE_RADIANCE: Final[int] = 33
+    ISLAMIC_GREEN: Final[int] = 34
+    SPRING_GREEN: Final[int] = 35
+    DARK_CYAN: Final[int] = 36
+    LIGHT_SEA_GREEN: Final[int] = 37
+    CERULEAN: Final[int] = 38
+    BLUE_BOLT: Final[int] = 39
+    ELECTRIC_GREEN: Final[int] = 40
+    MALACHITE: Final[int] = 41
+    CARIBBEAN_GREEN: Final[int] = 42
+    CYAN_1: Final[int] = 43
+    DARK_TURQUOISE: Final[int] = 44
+    VIVID_SKY_BLUE: Final[int] = 45
+    ELECTRIC_GREEN_1: Final[int] = 46
+    GUPPIE_GREEN: Final[int] = 47
+    SPRING_GREEN_1: Final[int] = 48
+    MEDIUM_SPRING_GREEN: Final[int] = 49
+    SEA_GREEN: Final[int] = 50
+    CYAN: Final[int] = 51
+    ROSEWOOD: Final[int] = 52
+    POMPADOUR: Final[int] = 53
+    PIGMENT_INDIGO: Final[int] = 54
+    PURPLE_3: Final[int] = 55
+    ELECTIC_VIOLET: Final[int] = 56
+    BLUE_VIOLET: Final[int] = 57
+    VERDUN_GREEN: Final[int] = 58
+    SCORPION: Final[int] = 59
+    COMET: Final[int] = 60
+    SCAMPI: Final[int] = 61
+    INDIGO: Final[int] = 62
+    CORNFLOWER_BLUE_1: Final[int] = 63
+    LIMEADE: Final[int] = 64
+    GLADE_GREEN: Final[int] = 65
+    JUNIPER: Final[int] = 66
+    HIPPIE_BLUE: Final[int] = 67
+    HAVELOCK_BLUE: Final[int] = 68
+    CORNFLOWER_BLUE: Final[int] = 69
+    LIMEA: Final[int] = 70
+    FERN: Final[int] = 71
+    SILVER_TREE: Final[int] = 72
+    TRADEWIND: Final[int] = 73
+    SHAKESPEARE: Final[int] = 74
+    MALIBU: Final[int] = 75
+    BRIGHT_GREEN: Final[int] = 76
+    PALE_GREEN: Final[int] = 77
+    PASTEL_GREEN: Final[int] = 78
+    DOWNY: Final[int] = 79
+    VIKING: Final[int] = 80
+    STEEL_BLUE: Final[int] = 81
+    CHARTREUSE: Final[int] = 82
+    SCREAMING_GREEN: Final[int] = 83
+    SEA_GREEN_1: Final[int] = 84
+    AQUAMARINE_1: Final[int] = 85
+    AQUAMARINE_2: Final[int] = 86
+    AQUAMARINE: Final[int] = 87
+    DARK_RED: Final[int] = 88
+    FRESH_EGGPLANT: Final[int] = 89
+    DARK_MAGENTA: Final[int] = 90
+    PURPLE_2: Final[int] = 91
+    ELECTRIC_VIOLET: Final[int] = 92
+    PURPLE_1: Final[int] = 93
+    BROWN: Final[int] = 94
+    COPPER_ROSE: Final[int] = 95
+    STRIKE_MASTER: Final[int] = 96
+    DELUGE: Final[int] = 97
+    MEDIUM_PURPLE: Final[int] = 98
+    HELIOTROPE: Final[int] = 99
+    OLIVE_1: Final[int] = 100
+    CLAY_CREEK: Final[int] = 101
+    GRAY_1: Final[int] = 102
+    GREY_1: Final[int] = 102
+    WILD_BLUE_YONDER: Final[int] = 103
+    CHETWODE_BLUE: Final[int] = 104
+    LIGHT_SLATE_BLUE: Final[int] = 105
+    LIMEADE_1: Final[int] = 106
+    CHELSEA_CUCUMBER: Final[int] = 107
+    BAY_LEAF: Final[int] = 108
+    GULF_STREAM: Final[int] = 109
+    POLO_BLUE: Final[int] = 110
+    MALIBU_1: Final[int] = 111
+    PISTACHIO: Final[int] = 112
+    DARK_OLIVE_GREEN: Final[int] = 113
+    FEIJOA: Final[int] = 114
+    VISTA_BLUE: Final[int] = 115
+    BERMUDA: Final[int] = 116
+    ANAKIWA: Final[int] = 117
+    CHARTREUSE_1: Final[int] = 118
+    LIGHT_GREEN: Final[int] = 119
+    MINT_GREEN: Final[int] = 120
+    PALE_GREEN_1: Final[int] = 121
+    AQUA_MARINE: Final[int] = 122
+    ANAKIWA_1: Final[int] = 123
+    BRIGHT_RED: Final[int] = 124
+    FLIRT: Final[int] = 125
+    MEDIUM_VIOLET_RED: Final[int] = 126
+    MAGENTA_1: Final[int] = 127
+    DARK_VIOLET: Final[int] = 128
+    PURPLE_4: Final[int] = 129
+    ROSE_OF_SHARON: Final[int] = 130
+    INDIAN_RED: Final[int] = 131
+    TAPESTRY: Final[int] = 132
+    FUCHSIA_PINK: Final[int] = 133
+    MEDIUM_PURPLE_1: Final[int] = 134
+    HELIOTROPE_1: Final[int] = 135
+    PIRATE_GOLD: Final[int] = 136
+    MUESLI: Final[int] = 137
+    PHARLAP: Final[int] = 138
+    BOUQUET: Final[int] = 139
+    LAVENDER: Final[int] = 140
+    HELIOTROPE_2: Final[int] = 141
+    GOLD_1: Final[int] = 142
+    OLIVE_GREEN: Final[int] = 143
+    HILLARY: Final[int] = 144
+    SILVER_CHALICE: Final[int] = 145
+    WISTFUL: Final[int] = 146
+    MELROSE: Final[int] = 147
+    RIO_GRANDE: Final[int] = 148
+    CONIFER: Final[int] = 149
+    FEIJOA_1: Final[int] = 150
+    PIXIE_GREEN: Final[int] = 151
+    JUNGLE_MIST: Final[int] = 152
+    ANAKIWA_2: Final[int] = 153
+    LIME_1: Final[int] = 154
+    GREEN_YELLOW: Final[int] = 155
+    MINT_GREEN_1: Final[int] = 156
+    DARK_SEA_GREEN: Final[int] = 157
+    AERO_BLUE: Final[int] = 158
+    FRENCH_PASS: Final[int] = 159
+    GUARDSMAN_RED: Final[int] = 160
+    RAZZMATAZZ: Final[int] = 161
+    HOLLYWOOD_CERISE: Final[int] = 162
+    HOLLYWOOD_CERISE_1: Final[int] = 163
+    PURPLE_PIZZAZZ: Final[int] = 164
+    ELECTRIC_VIOLET_1: Final[int] = 165
+    TENN: Final[int] = 166
+    ROMAN: Final[int] = 167
+    CRANBERRY: Final[int] = 168
+    HOPBUSH: Final[int] = 169
+    ORCHID: Final[int] = 170
+    MEDIUM_ORCHID: Final[int] = 171
+    MANGO_TANGO: Final[int] = 172
+    COPPERFIELD: Final[int] = 173
+    PINK: Final[int] = 174
+    CANCAN: Final[int] = 175
+    LIGHT_ORCHID: Final[int] = 176
+    HELIOTROPE_3: Final[int] = 177
+    CORN: Final[int] = 178
+    TACHA: Final[int] = 179
+    TAN: Final[int] = 180
+    CLAM_SHELL: Final[int] = 181
+    THISTLE: Final[int] = 182
+    MAUVE: Final[int] = 183
+    CORN_1: Final[int] = 184
+    KHAKI: Final[int] = 185
+    DECO: Final[int] = 186
+    GREEN_MIST: Final[int] = 187
+    ALTO: Final[int] = 188
+    FOG: Final[int] = 189
+    CHARTREUSE_YELLOW: Final[int] = 190
+    CANARY: Final[int] = 191
+    HONEYSUCKLE: Final[int] = 192
+    REEF: Final[int] = 193
+    SNOWY_MINT: Final[int] = 194
+    OYSTER_BAY: Final[int] = 195
+    ROSE: Final[int] = 197
+    DEEP_PINK: Final[int] = 198
+    HOLLYWOOD_CERISE_2: Final[int] = 199
+    PURPLE_PIZZAZZ_1: Final[int] = 200
+    MAGENTA: Final[int] = 201
+    BLAZE_ORANGE: Final[int] = 202
+    BITTER_SWEET: Final[int] = 203
+    WILD_WATERMELON: Final[int] = 204
+    HOTPINK: Final[int] = 205
+    HOTPINK_1: Final[int] = 206
+    PINK_FLAMINGO: Final[int] = 207
+    FLUSH_ORANGE: Final[int] = 208
+    SALMON: Final[int] = 209
+    VIVID_TANGERINE: Final[int] = 210
+    PINK_SALMON: Final[int] = 211
+    LAVENDER_ROSE: Final[int] = 212
+    BLUSH_PINK: Final[int] = 213
+    YELLOW_SEA: Final[int] = 214
+    TEXAS_ROSE: Final[int] = 215
+    HIT_PINK: Final[int] = 216
+    SUNDOWN: Final[int] = 217
+    COTTON_CANDY: Final[int] = 218
+    LAVENDER_ROSE_1: Final[int] = 219
+    GOLD: Final[int] = 220
+    DANDELION: Final[int] = 221
+    GRANDIS: Final[int] = 222
+    CARAMEL: Final[int] = 223
+    COSMOS: Final[int] = 224
+    PINK_LACE: Final[int] = 225
+    LASER_LEMON: Final[int] = 227
+    DOLLY: Final[int] = 228
+    PORTAFINO: Final[int] = 229
+    CUMULUS: Final[int] = 230
+    COD_GRAY: Final[int] = 232
+    COD_GRAY_1: Final[int] = 233
+    COD_GRAY_2: Final[int] = 234
+    MINE_SHAFT: Final[int] = 235
+    MINE_SHAFT_1: Final[int] = 236
+    MINE_SHAFT_2: Final[int] = 237
+    TUNDORA: Final[int] = 238
+    TUNDORA_1: Final[int] = 239
+    SCORPION_1: Final[int] = 240
+    DOVE_GRAY: Final[int] = 241
+    DOVE_GRAY_1: Final[int] = 242
+    BOULDER: Final[int] = 243
+    GRAY_2: Final[int] = 245
+    GREY_2: Final[int] = 245
+    DUSTY_GRAY: Final[int] = 246
+    SILVER_CHALICE_1: Final[int] = 247
+    SILVER_CHALICE_2: Final[int] = 248
+    SILVER_CHALICE_3: Final[int] = 249
+    SILVER_1: Final[int] = 250
+    SILVER_2: Final[int] = 251
+    ALTO_1: Final[int] = 252
+    ALTO_2: Final[int] = 253
+    MERCURY: Final[int] = 254
+    GALLERY: Final[int] = 255
diff --git a/termspark/painter/constants/fore.py b/termspark/painter/constants/fore.py
index 90b75b8..59e2633 100644
--- a/termspark/painter/constants/fore.py
+++ b/termspark/painter/constants/fore.py
@@ -1,19 +1,7 @@
 from typing import Final
 
+from termspark.painter.constants.color import Color
 
-class Fore:
-    BLACK: Final[int] = 30
-    RED: Final[int] = 31
-    GREEN: Final[int] = 32
-    YELLOW: Final[int] = 33
-    BLUE: Final[int] = 34
-    MAGENTA: Final[int] = 35
-    CYAN: Final[int] = 36
-    GRAY: Final[int] = 90
-    GREY: Final[int] = 90
-    LIGHT_RED: Final[int] = 91
-    LIGHT_GREEN: Final[int] = 92
-    LIGHT_YELLOW: Final[int] = 93
-    LIGHT_BLUE: Final[int] = 94
-    LIGHT_MAGENTA: Final[int] = 95
-    LIGHT_CYAN: Final[int] = 96
+
+class Fore(Color):
+    PREFIX: Final[str] = "\x1b[38;5;"
diff --git a/termspark/painter/constants/highlight.py b/termspark/painter/constants/highlight.py
index 8886960..8334d09 100644
--- a/termspark/painter/constants/highlight.py
+++ b/termspark/painter/constants/highlight.py
@@ -1,19 +1,7 @@
 from typing import Final
 
+from termspark.painter.constants.color import Color
 
-class Highlight:
-    RED: Final[int] = 41
-    GREEN: Final[int] = 42
-    YELLOW: Final[int] = 43
-    BLUE: Final[int] = 44
-    MAGENTA: Final[int] = 45
-    CYAN: Final[int] = 46
-    GRAY: Final[int] = 100
-    GREY: Final[int] = 100
-    LIGHT_RED: Final[int] = 101
-    LIGHT_GREEN: Final[int] = 102
-    LIGHT_YELLOW: Final[int] = 103
-    LIGHT_BLUE: Final[int] = 104
-    LIGHT_MAGENTA: Final[int] = 105
-    LIGHT_CYAN: Final[int] = 106
-    WHITE: Final[int] = 107
+
+class Highlight(Color):
+    PREFIX: Final[str] = "\x1b[48;5;"
diff --git a/termspark/painter/painter.py b/termspark/painter/painter.py
index d023cfc..3e9b971 100644
--- a/termspark/painter/painter.py
+++ b/termspark/painter/painter.py
@@ -1,17 +1,18 @@
-from typing import Final
+from typing import Final, Type
 
+from .constants.color import Color
 from .constants.fore import Fore
 from .constants.highlight import Highlight
 
 
 class Painter:
-    PREFIX: Final[str] = "\x1b["
     SUFFIX: Final[str] = "m"
     RESET: Final[str] = "\x1b[0m"
 
-    def __paint(self, color: str, type) -> str:
+    def __paint(self, color: str, type: Type[Color]) -> str:
         if color and hasattr(type, color.upper()):
-            return f"{self.PREFIX}{getattr(type, color.upper())}{self.SUFFIX}"
+            return f"{type.PREFIX}{getattr(type, color.upper())}{self.SUFFIX}"
+
         return ""
 
     def paint_color(self, color: str) -> str:
diff --git a/termspark/styler/styler.py b/termspark/styler/styler.py
index 7592e5d..5bbd5a9 100644
--- a/termspark/styler/styler.py
+++ b/termspark/styler/styler.py
@@ -29,9 +29,7 @@ def __init__(self):
 
     def element(self, element: Element):
         self.content = (
-            element["encoded_content"]
-            if "encoded_content" in element
-            else element["content"]
+            element["encoded_content"] if "encoded_content" in element else element["content"]
         )
         self.content_color = element["color"]
         self.content_highlight = element["highlight"]
diff --git a/termspark/termspark.py b/termspark/termspark.py
index 97a8d92..864dece 100644
--- a/termspark/termspark.py
+++ b/termspark/termspark.py
@@ -119,12 +119,8 @@ def __max_position(self, position: str, max: int):
             chars_number -= len(sentence)
 
         getattr(self, position)["content"] = new_content
-        getattr(self, position)["color"] = getattr(self, position)["color"][
-            0:breakIndex
-        ]
-        getattr(self, position)["highlight"] = getattr(self, position)["highlight"][
-            0:breakIndex
-        ]
+        getattr(self, position)["color"] = getattr(self, position)["color"][0:breakIndex]
+        getattr(self, position)["highlight"] = getattr(self, position)["highlight"][0:breakIndex]
 
     def max_left(self, max: int):
         self.__max_position("left", max)
@@ -147,9 +143,7 @@ def __appendPositionContent(
         structured_data = Structurer(*content).form()
 
         if not positionContent:
-            positionContent = {
-                key: [] for key in ["content", "color", "highlight", "style"]
-            }
+            positionContent = {key: [] for key in ["content", "color", "highlight", "style"]}
 
         for elem in positionContent:
             positionContent[elem].append(
@@ -223,9 +217,7 @@ def __take_full_width(self):
         if not_empty_positions > 1:
             raise MultiplePositionsNotSupportedError()
 
-        empty_space = self.get_width() - len(
-            "".join(getattr(self, active_position)["content"])
-        )
+        empty_space = self.get_width() - len("".join(getattr(self, active_position)["content"]))
 
         if active_position == "left":
             extra_left_space = ""
@@ -238,9 +230,7 @@ def __take_full_width(self):
 
             extra_left_space = " " * half_empty_space
             extra_right_space = (
-                " " * (half_empty_space + 1)
-                if empty_space % 2 != 0
-                else " " * half_empty_space
+                " " * (half_empty_space + 1) if empty_space % 2 != 0 else " " * half_empty_space
             )
 
         getattr(self, active_position)["content"][0] = (
@@ -291,11 +281,7 @@ def render(self) -> str:
         if len(center_content) > 0:
             if self.mode == "raw":
                 raw_separator = self.separator.get_raw_content()
-                center = (
-                    raw_separator["left"]
-                    + "".join(center_content)
-                    + raw_separator["right"]
-                )
+                center = raw_separator["left"] + "".join(center_content) + raw_separator["right"]
             else:
                 center = (
                     styled_separator["left"]


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index cf702e0..e90a673 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -22,6 +22,6 @@ jobs:
     - name: Test with pytest
       run: make test
     - name: Upload coverage
-      uses: codecov/codecov-action@v3
+      uses: codecov/codecov-action@v4
       env:
         CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
diff --git a/tests/color_test.py b/tests/color_test.py
new file mode 100644
index 0000000..ba0a7a0
--- /dev/null
+++ b/tests/color_test.py
@@ -0,0 +1,762 @@
+from termspark.painter.constants.color import Color
+
+
+class TestColor:
+    def test_black(self):
+        assert Color.BLACK == 0
+
+    def test_maroon(self):
+        assert Color.MAROON == 1
+
+    def test_green(self):
+        assert Color.GREEN == 2
+
+    def test_olive(self):
+        assert Color.OLIVE == 3
+
+    def test_navy(self):
+        assert Color.NAVY == 4
+
+    def test_purple(self):
+        assert Color.PURPLE == 5
+
+    def test_teal(self):
+        assert Color.TEAL == 6
+
+    def test_silver(self):
+        assert Color.SILVER == 7
+
+    def test_gray(self):
+        assert Color.GRAY == 8
+
+    def test_grey(self):
+        assert Color.GREY == 8
+
+    def test_red(self):
+        assert Color.RED == 9
+
+    def test_lime(self):
+        assert Color.LIME == 10
+
+    def test_yellow(self):
+        assert Color.YELLOW == 11
+
+    def test_blue(self):
+        assert Color.BLUE == 12
+
+    def test_fuchsia(self):
+        assert Color.FUCHSIA == 13
+
+    def test_aqua(self):
+        assert Color.AQUA == 14
+
+    def test_white(self):
+        assert Color.WHITE == 15
+
+    def test_navy_blue(self):
+        assert Color.NAVY_BLUE == 17
+
+    def test_dark_blue(self):
+        assert Color.DARK_BLUE == 18
+
+    def test_dark_blue_2(self):
+        assert Color.DARK_BLUE_2 == 19
+
+    def test_dark_blue_1(self):
+        assert Color.DARK_BLUE_1 == 20
+
+    def test_dark_green(self):
+        assert Color.DARK_GREEN == 22
+
+    def test_blue_stone(self):
+        assert Color.BLUE_STONE == 23
+
+    def test_orient(self):
+        assert Color.ORIENT == 24
+
+    def test_endeavour(self):
+        assert Color.ENDEAVOUR == 25
+
+    def test_science_blue(self):
+        assert Color.SCIENCE_BLUE == 26
+
+    def test_blue_ribbon(self):
+        assert Color.BLUE_RIBBON == 27
+
+    def test_japanese_laurel(self):
+        assert Color.JAPANESE_LAUREL == 28
+
+    def test_deep_sea(self):
+        assert Color.DEEP_SEA == 29
+
+    def test_turquoise(self):
+        assert Color.TURQUOISE == 30
+
+    def test_deep_cerulean(self):
+        assert Color.DEEP_CERULEAN == 31
+
+    def test_lochmara(self):
+        assert Color.LOCHMARA == 32
+
+    def test_azure_radiance(self):
+        assert Color.AZURE_RADIANCE == 33
+
+    def test_islamic_green(self):
+        assert Color.ISLAMIC_GREEN == 34
+
+    def test_spring_green(self):
+        assert Color.SPRING_GREEN == 35
+
+    def test_dark_cyan(self):
+        assert Color.DARK_CYAN == 36
+
+    def test_light_sea_green(self):
+        assert Color.LIGHT_SEA_GREEN == 37
+
+    def test_cerulean(self):
+        assert Color.CERULEAN == 38
+
+    def test_blue_bolt(self):
+        assert Color.BLUE_BOLT == 39
+
+    def test_electric_green(self):
+        assert Color.ELECTRIC_GREEN == 40
+
+    def test_malachite(self):
+        assert Color.MALACHITE == 41
+
+    def test_caribbean_green(self):
+        assert Color.CARIBBEAN_GREEN == 42
+
+    def test_cyan_1(self):
+        assert Color.CYAN_1 == 43
+
+    def test_dark_turquoise(self):
+        assert Color.DARK_TURQUOISE == 44
+
+    def test_vivid_sky_blue(self):
+        assert Color.VIVID_SKY_BLUE == 45
+
+    def test_electric_green_1(self):
+        assert Color.ELECTRIC_GREEN_1 == 46
+
+    def test_guppie_green(self):
+        assert Color.GUPPIE_GREEN == 47
+
+    def test_spring_green_1(self):
+        assert Color.SPRING_GREEN_1 == 48
+
+    def test_medium_spring_green(self):
+        assert Color.MEDIUM_SPRING_GREEN == 49
+
+    def test_sea_green(self):
+        assert Color.SEA_GREEN == 50
+
+    def test_cyan(self):
+        assert Color.CYAN == 51
+
+    def test_rosewood(self):
+        assert Color.ROSEWOOD == 52
+
+    def test_pompadour(self):
+        assert Color.POMPADOUR == 53
+
+    def test_pigment_indigo(self):
+        assert Color.PIGMENT_INDIGO == 54
+
+    def test_purple_3(self):
+        assert Color.PURPLE_3 == 55
+
+    def test_electic_violet(self):
+        assert Color.ELECTIC_VIOLET == 56
+
+    def test_blue_violet(self):
+        assert Color.BLUE_VIOLET == 57
+
+    def test_verdun_green(self):
+        assert Color.VERDUN_GREEN == 58
+
+    def test_scorpion(self):
+        assert Color.SCORPION == 59
+
+    def test_comet(self):
+        assert Color.COMET == 60
+
+    def test_scampi(self):
+        assert Color.SCAMPI == 61
+
+    def test_indigo(self):
+        assert Color.INDIGO == 62
+
+    def test_cornflower_blue_1(self):
+        assert Color.CORNFLOWER_BLUE_1 == 63
+
+    def test_limeade(self):
+        assert Color.LIMEADE == 64
+
+    def test_glade_green(self):
+        assert Color.GLADE_GREEN == 65
+
+    def test_juniper(self):
+        assert Color.JUNIPER == 66
+
+    def test_hippie_blue(self):
+        assert Color.HIPPIE_BLUE == 67
+
+    def test_havelock_blue(self):
+        assert Color.HAVELOCK_BLUE == 68
+
+    def test_cornflower_blue(self):
+        assert Color.CORNFLOWER_BLUE == 69
+
+    def test_limea(self):
+        assert Color.LIMEA == 70
+
+    def test_fern(self):
+        assert Color.FERN == 71
+
+    def test_silver_tree(self):
+        assert Color.SILVER_TREE == 72
+
+    def test_tradewind(self):
+        assert Color.TRADEWIND == 73
+
+    def test_shakespeare(self):
+        assert Color.SHAKESPEARE == 74
+
+    def test_malibu(self):
+        assert Color.MALIBU == 75
+
+    def test_bright_green(self):
+        assert Color.BRIGHT_GREEN == 76
+
+    def test_pale_green(self):
+        assert Color.PALE_GREEN == 77
+
+    def test_pastel_green(self):
+        assert Color.PASTEL_GREEN == 78
+
+    def test_downy(self):
+        assert Color.DOWNY == 79
+
+    def test_viking(self):
+        assert Color.VIKING == 80
+
+    def test_steel_blue(self):
+        assert Color.STEEL_BLUE == 81
+
+    def test_chartreuse(self):
+        assert Color.CHARTREUSE == 82
+
+    def test_screaming_green(self):
+        assert Color.SCREAMING_GREEN == 83
+
+    def test_sea_green_1(self):
+        assert Color.SEA_GREEN_1 == 84
+
+    def test_aquamarine_1(self):
+        assert Color.AQUAMARINE_1 == 85
+
+    def test_aquamarine_2(self):
+        assert Color.AQUAMARINE_2 == 86
+
+    def test_aquamarine(self):
+        assert Color.AQUAMARINE == 87
+
+    def test_dark_red(self):
+        assert Color.DARK_RED == 88
+
+    def test_fresh_eggplant(self):
+        assert Color.FRESH_EGGPLANT == 89
+
+    def test_dark_magenta(self):
+        assert Color.DARK_MAGENTA == 90
+
+    def test_purple_2(self):
+        assert Color.PURPLE_2 == 91
+
+    def test_electric_violet(self):
+        assert Color.ELECTRIC_VIOLET == 92
+
+    def test_purple_1(self):
+        assert Color.PURPLE_1 == 93
+
+    def test_brown(self):
+        assert Color.BROWN == 94
+
+    def test_copper_rose(self):
+        assert Color.COPPER_ROSE == 95
+
+    def test_strike_master(self):
+        assert Color.STRIKE_MASTER == 96
+
+    def test_deluge(self):
+        assert Color.DELUGE == 97
+
+    def test_medium_purple(self):
+        assert Color.MEDIUM_PURPLE == 98
+
+    def test_heliotrope(self):
+        assert Color.HELIOTROPE == 99
+
+    def test_olive_1(self):
+        assert Color.OLIVE_1 == 100
+
+    def test_clay_greek(self):
+        assert Color.CLAY_CREEK == 101
+
+    def test_gray_1(self):
+        assert Color.GRAY_1 == 102
+
+    def test_grey_1(self):
+        assert Color.GREY_1 == 102
+
+    def test_wild_blue_yonder(self):
+        assert Color.WILD_BLUE_YONDER == 103
+
+    def test_chetwode_blue(self):
+        assert Color.CHETWODE_BLUE == 104
+
+    def test_light_slate_blue(self):
+        assert Color.LIGHT_SLATE_BLUE == 105
+
+    def test_limeade_1(self):
+        assert Color.LIMEADE_1 == 106
+
+    def test_chelsea_cucumber(self):
+        assert Color.CHELSEA_CUCUMBER == 107
+
+    def test_bay_leaf(self):
+        assert Color.BAY_LEAF == 108
+
+    def test_gulf_stream(self):
+        assert Color.GULF_STREAM == 109
+
+    def test_polo_blue(self):
+        assert Color.POLO_BLUE == 110
+
+    def test_malibu_1(self):
+        assert Color.MALIBU_1 == 111
+
+    def test_pistachio(self):
+        assert Color.PISTACHIO == 112
+
+    def test_dark_olive_green(self):
+        assert Color.DARK_OLIVE_GREEN == 113
+
+    def test_feijoa(self):
+        assert Color.FEIJOA == 114
+
+    def test_vista_blue(self):
+        assert Color.VISTA_BLUE == 115
+
+    def test_bermuda(self):
+        assert Color.BERMUDA == 116
+
+    def test_anakiwa(self):
+        assert Color.ANAKIWA == 117
+
+    def test_charteuse_1(self):
+        assert Color.CHARTREUSE_1 == 118
+
+    def test_light_green(self):
+        assert Color.LIGHT_GREEN == 119
+
+    def test_mint_green(self):
+        assert Color.MINT_GREEN == 120
+
+    def test_pale_green_1(self):
+        assert Color.PALE_GREEN_1 == 121
+
+    def test_aqua_marine(self):
+        assert Color.AQUA_MARINE == 122
+
+    def test_anakiwa_1(self):
+        assert Color.ANAKIWA_1 == 123
+
+    def test_bright_red(self):
+        assert Color.BRIGHT_RED == 124
+
+    def test_flirt(self):
+        assert Color.FLIRT == 125
+
+    def test_medium_violet_red(self):
+        assert Color.MEDIUM_VIOLET_RED == 126
+
+    def test_magenta_1(self):
+        assert Color.MAGENTA_1 == 127
+
+    def test_dark_violet(self):
+        assert Color.DARK_VIOLET == 128
+
+    def test_purple_4(self):
+        assert Color.PURPLE_4 == 129
+
+    def test_rose_of_sharon(self):
+        assert Color.ROSE_OF_SHARON == 130
+
+    def test_indian_red(self):
+        assert Color.INDIAN_RED == 131
+
+    def test_tapestry(self):
+        assert Color.TAPESTRY == 132
+
+    def test_fuchsia_pink(self):
+        assert Color.FUCHSIA_PINK == 133
+
+    def test_medium_purple_1(self):
+        assert Color.MEDIUM_PURPLE_1 == 134
+
+    def test_heliotrope_1(self):
+        assert Color.HELIOTROPE_1 == 135
+
+    def test_pirate_gold(self):
+        assert Color.PIRATE_GOLD == 136
+
+    def test_muesli(self):
+        assert Color.MUESLI == 137
+
+    def test_pharlap(self):
+        assert Color.PHARLAP == 138
+
+    def test_bouquet(self):
+        assert Color.BOUQUET == 139
+
+    def test_lavender(self):
+        assert Color.LAVENDER == 140
+
+    def test_heliotrope_2(self):
+        assert Color.HELIOTROPE_2 == 141
+
+    def test_gold_1(self):
+        assert Color.GOLD_1 == 142
+
+    def test_olve_green(self):
+        assert Color.OLIVE_GREEN == 143
+
+    def test_hillary(self):
+        assert Color.HILLARY == 144
+
+    def test_silver_chalice(self):
+        assert Color.SILVER_CHALICE == 145
+
+    def test_wistful(self):
+        assert Color.WISTFUL == 146
+
+    def test_melrose(self):
+        assert Color.MELROSE == 147
+
+    def test_rio_grande(self):
+        assert Color.RIO_GRANDE == 148
+
+    def test_conifer(self):
+        assert Color.CONIFER == 149
+
+    def test_feijoa_1(self):
+        assert Color.FEIJOA_1 == 150
+
+    def test_pixie_green(self):
+        assert Color.PIXIE_GREEN == 151
+
+    def test_jungle_mist(self):
+        assert Color.JUNGLE_MIST == 152
+
+    def test_anakiwa_2(self):
+        assert Color.ANAKIWA_2 == 153
+
+    def test_lime_1(self):
+        assert Color.LIME_1 == 154
+
+    def test_green_yellow(self):
+        assert Color.GREEN_YELLOW == 155
+
+    def test_mint_green_1(self):
+        assert Color.MINT_GREEN_1 == 156
+
+    def test_dark_sea_green(self):
+        assert Color.DARK_SEA_GREEN == 157
+
+    def test_aero_blue(self):
+        assert Color.AERO_BLUE == 158
+
+    def test_french_pass(self):
+        assert Color.FRENCH_PASS == 159
+
+    def test_guardsman_red(self):
+        assert Color.GUARDSMAN_RED == 160
+
+    def test_razzmatazz(self):
+        assert Color.RAZZMATAZZ == 161
+
+    def test_hollywood_cerise(self):
+        assert Color.HOLLYWOOD_CERISE == 162
+
+    def test_hollywood_cerise_1(self):
+        assert Color.HOLLYWOOD_CERISE_1 == 163
+
+    def test_purple_pizzazz(self):
+        assert Color.PURPLE_PIZZAZZ == 164
+
+    def test_electric_violet_1(self):
+        assert Color.ELECTRIC_VIOLET_1 == 165
+
+    def test_tenn(self):
+        assert Color.TENN == 166
+
+    def test_roman(self):
+        assert Color.ROMAN == 167
+
+    def test_cranberry(self):
+        assert Color.CRANBERRY == 168
+
+    def test_hopbush(self):
+        assert Color.HOPBUSH == 169
+
+    def test_orchid(self):
+        assert Color.ORCHID == 170
+
+    def test_medium_orchid(self):
+        assert Color.MEDIUM_ORCHID == 171
+
+    def test_mango_tango(self):
+        assert Color.MANGO_TANGO == 172
+
+    def test_copperfield(self):
+        assert Color.COPPERFIELD == 173
+
+    def test_pink(self):
+        assert Color.PINK == 174
+
+    def test_cancan(self):
+        assert Color.CANCAN == 175
+
+    def test_light_orchid(self):
+        assert Color.LIGHT_ORCHID == 176
+
+    def test_heliotrope_3(self):
+        assert Color.HELIOTROPE_3 == 177
+
+    def test_corn(self):
+        assert Color.CORN == 178
+
+    def test_tacha(self):
+        assert Color.TACHA == 179
+
+    def test_tan(self):
+        assert Color.TAN == 180
+
+    def test_clam_shell(self):
+        assert Color.CLAM_SHELL == 181
+
+    def test_thistle(self):
+        assert Color.THISTLE == 182
+
+    def test_mauve(self):
+        assert Color.MAUVE == 183
+
+    def test_corn_1(self):
+        assert Color.CORN_1 == 184
+
+    def test_khaki(self):
+        assert Color.KHAKI == 185
+
+    def test_deco(self):
+        assert Color.DECO == 186
+
+    def test_green_mist(self):
+        assert Color.GREEN_MIST == 187
+
+    def test_alto(self):
+        assert Color.ALTO == 188
+
+    def test_FOG(self):
+        assert Color.FOG == 189
+
+    def test_chartreuse_yellow(self):
+        assert Color.CHARTREUSE_YELLOW == 190
+
+    def test_canary(self):
+        assert Color.CANARY == 191
+
+    def test_honeysuckle(self):
+        assert Color.HONEYSUCKLE == 192
+
+    def test_reef(self):
+        assert Color.REEF == 193
+
+    def test_snowy_mint(self):
+        assert Color.SNOWY_MINT == 194
+
+    def test_oyster_bay(self):
+        assert Color.OYSTER_BAY == 195
+
+    def test_rose(self):
+        assert Color.ROSE == 197
+
+    def test_deep_pink(self):
+        assert Color.DEEP_PINK == 198
+
+    def test_hollywood_cerise_2(self):
+        assert Color.HOLLYWOOD_CERISE_2 == 199
+
+    def test_purple_pizzazz_1(self):
+        assert Color.PURPLE_PIZZAZZ_1 == 200
+
+    def test_magenta(self):
+        assert Color.MAGENTA == 201
+
+    def test_blaze_orange(self):
+        assert Color.BLAZE_ORANGE == 202
+
+    def test_bitter_sweet(self):
+        assert Color.BITTER_SWEET == 203
+
+    def test_wild_watermelon(self):
+        assert Color.WILD_WATERMELON == 204
+
+    def test_hotpink(self):
+        assert Color.HOTPINK == 205
+
+    def test_hotpink_1(self):
+        assert Color.HOTPINK_1 == 206
+
+    def test_pink_flamingo(self):
+        assert Color.PINK_FLAMINGO == 207
+
+    def test_flush_orange(self):
+        assert Color.FLUSH_ORANGE == 208
+
+    def test_salmon(self):
+        assert Color.SALMON == 209
+
+    def test_vivid_tangerine(self):
+        assert Color.VIVID_TANGERINE == 210
+
+    def test_pink_salmon(self):
+        assert Color.PINK_SALMON == 211
+
+    def test_lavender_rose(self):
+        assert Color.LAVENDER_ROSE == 212
+
+    def test_blush_pink(self):
+        assert Color.BLUSH_PINK == 213
+
+    def test_yellow_sea(self):
+        assert Color.YELLOW_SEA == 214
+
+    def test_texas_rose(self):
+        assert Color.TEXAS_ROSE == 215
+
+    def test_hit_pink(self):
+        assert Color.HIT_PINK == 216
+
+    def test_sundown(self):
+        assert Color.SUNDOWN == 217
+
+    def test_cotton_candy(self):
+        assert Color.COTTON_CANDY == 218
+
+    def test_lavender_rose_1(self):
+        assert Color.LAVENDER_ROSE_1 == 219
+
+    def test_gold(self):
+        assert Color.GOLD == 220
+
+    def test_dandelion(self):
+        assert Color.DANDELION == 221
+
+    def test_grandis(self):
+        assert Color.GRANDIS == 222
+
+    def test_caramel(self):
+        assert Color.CARAMEL == 223
+
+    def test_cosmos(self):
+        assert Color.COSMOS == 224
+
+    def test_pink_lace(self):
+        assert Color.PINK_LACE == 225
+
+    def test_laser_lemon(self):
+        assert Color.LASER_LEMON == 227
+
+    def test_dolly(self):
+        assert Color.DOLLY == 228
+
+    def test_portafino(self):
+        assert Color.PORTAFINO == 229
+
+    def test_cumulus(self):
+        assert Color.CUMULUS == 230
+
+    def test_cod_gray(self):
+        assert Color.COD_GRAY == 232
+
+    def test_cod_gray_1(self):
+        assert Color.COD_GRAY_1 == 233
+
+    def test_cod_gray_2(self):
+        assert Color.COD_GRAY_2 == 234
+
+    def test_mine_shaft(self):
+        assert Color.MINE_SHAFT == 235
+
+    def test_mine_shaft_1(self):
+        assert Color.MINE_SHAFT_1 == 236
+
+    def test_mine_shaft_2(self):
+        assert Color.MINE_SHAFT_2 == 237
+
+    def test_tundura(self):
+        assert Color.TUNDORA == 238
+
+    def test_tundura_1(self):
+        assert Color.TUNDORA_1 == 239
+
+    def test_scorpion_1(self):
+        assert Color.SCORPION_1 == 240
+
+    def test_dove_gray(self):
+        assert Color.DOVE_GRAY == 241
+
+    def test_dove_gray_1(self):
+        assert Color.DOVE_GRAY_1 == 242
+
+    def test_boulder(self):
+        assert Color.BOULDER == 243
+
+    def test_gray_2(self):
+        assert Color.GRAY_2 == 245
+
+    def test_grey_2(self):
+        assert Color.GREY_2 == 245
+
+    def test_dusty_gray(self):
+        assert Color.DUSTY_GRAY == 246
+
+    def test_silver_chalice_1(self):
+        assert Color.SILVER_CHALICE_1 == 247
+
+    def test_silver_chalice_2(self):
+        assert Color.SILVER_CHALICE_2 == 248
+
+    def test_silver_chalice_3(self):
+        assert Color.SILVER_CHALICE_3 == 249
+
+    def test_silver_1(self):
+        assert Color.SILVER_1 == 250
+
+    def test_silver_2(self):
+        assert Color.SILVER_2 == 251
+
+    def test_alto_1(self):
+        assert Color.ALTO_1 == 252
+
+    def test_alto_2(self):
+        assert Color.ALTO_2 == 253
+
+    def test_mercury(self):
+        assert Color.MERCURY == 254
+
+    def test_gallery(self):
+        assert Color.GALLERY == 255
diff --git a/tests/fore_test.py b/tests/fore_test.py
index a7710ab..90e2d7d 100644
--- a/tests/fore_test.py
+++ b/tests/fore_test.py
@@ -1,48 +1,10 @@
+from termspark.painter.constants.color import Color
 from termspark.painter.constants.fore import Fore
 
 
 class TestFore:
-    def test_black(self):
-        assert Fore.BLACK == 30
+    def test_prefix(self):
+        assert Fore.PREFIX == "\x1b[38;5;"
 
-    def test_red(self):
-        assert Fore.RED == 31
-
-    def test_green(self):
-        assert Fore.GREEN == 32
-
-    def test_yellow(self):
-        assert Fore.YELLOW == 33
-
-    def test_blue(self):
-        assert Fore.BLUE == 34
-
-    def test_magenta(self):
-        assert Fore.MAGENTA == 35
-
-    def test_cyan(self):
-        assert Fore.CYAN == 36
-
-    def test_gray(self):
-        assert Fore.GRAY == 90
-
-    def test_grey(self):
-        assert Fore.GREY == 90
-
-    def test_light_red(self):
-        assert Fore.LIGHT_RED == 91
-
-    def test_light_green(self):
-        assert Fore.LIGHT_GREEN == 92
-
-    def test_light_yellow(self):
-        assert Fore.LIGHT_YELLOW == 93
-
-    def test_light_blue(self):
-        assert Fore.LIGHT_BLUE == 94
-
-    def test_light_magenta(self):
-        assert Fore.LIGHT_MAGENTA == 95
-
-    def test_light_cyan(self):
-        assert Fore.LIGHT_CYAN == 96
+    def test_inherited_from_color(self):
+        assert issubclass(Fore, Color)
diff --git a/tests/highlight_test.py b/tests/highlight_test.py
index 1d8747a..a1c91c9 100644
--- a/tests/highlight_test.py
+++ b/tests/highlight_test.py
@@ -1,48 +1,10 @@
+from termspark.painter.constants.color import Color
 from termspark.painter.constants.highlight import Highlight
 
 
 class TestHighlight:
-    def test_red(self):
-        assert Highlight.RED == 41
+    def test_prefix(self):
+        assert Highlight.PREFIX == "\x1b[48;5;"
 
-    def test_green(self):
-        assert Highlight.GREEN == 42
-
-    def test_yellow(self):
-        assert Highlight.YELLOW == 43
-
-    def test_blue(self):
-        assert Highlight.BLUE == 44
-
-    def test_magenta(self):
-        assert Highlight.MAGENTA == 45
-
-    def test_cyan(self):
-        assert Highlight.CYAN == 46
-
-    def test_gray(self):
-        assert Highlight.GRAY == 100
-
-    def test_grey(self):
-        assert Highlight.GREY == 100
-
-    def test_light_red(self):
-        assert Highlight.LIGHT_RED == 101
-
-    def test_light_green(self):
-        assert Highlight.LIGHT_GREEN == 102
-
-    def test_light_yellow(self):
-        assert Highlight.LIGHT_YELLOW == 103
-
-    def test_light_blue(self):
-        assert Highlight.LIGHT_BLUE == 104
-
-    def test_light_magenta(self):
-        assert Highlight.LIGHT_MAGENTA == 105
-
-    def test_light_cyan(self):
-        assert Highlight.LIGHT_CYAN == 106
-
-    def test_white(self):
-        assert Highlight.WHITE == 107
+    def test_inherited_from_color(self):
+        assert issubclass(Highlight, Color)
diff --git a/tests/hyperlink_test.py b/tests/hyperlink_test.py
index 6800212..787e6fe 100644
--- a/tests/hyperlink_test.py
+++ b/tests/hyperlink_test.py
@@ -3,10 +3,7 @@
 
 class TestHyperlink:
     def test_attributes(self):
-        assert (
-            Hyperlink.HYPERLINK_PATTERN
-            == "\\[([^\\[]*?)]\\(\\s*(http[s]?://[^)]+)\\s*\\)"
-        )
+        assert Hyperlink.HYPERLINK_PATTERN == "\\[([^\\[]*?)]\\(\\s*(http[s]?://[^)]+)\\s*\\)"
         assert Hyperlink.HYPERLINK_PREFIX == "\x1b]8;;"
         assert Hyperlink.HYPERLINK_SUFFIX == "\x1b]8;;"
         assert Hyperlink.RESET == "\x1b\\\\"
diff --git a/tests/input_test.py b/tests/input_test.py
index 7b28305..2a57516 100644
--- a/tests/input_test.py
+++ b/tests/input_test.py
@@ -8,9 +8,7 @@
 class TestInput:
     @patch("sys.stdin.readline")
     @patch("termspark.print")
-    def test_empty_input_calls_print_and_returns_scaned_input_with_defaults(
-        self, print, readline
-    ):
+    def test_empty_input_calls_print_and_returns_scaned_input_with_defaults(self, print, readline):
         input()
 
         print.assert_called_once_with(None, None, None, None, "left", None, False)
@@ -21,9 +19,7 @@ def test_empty_input_calls_print_and_returns_scaned_input_with_defaults(
     def test_input_with_prompt(self, print, readline):
         input(" Enter your name: ")
 
-        print.assert_called_once_with(
-            " Enter your name: ", None, None, None, "left", None, False
-        )
+        print.assert_called_once_with(" Enter your name: ", None, None, None, "left", None, False)
         readline.assert_called_once_with()
 
     @patch("sys.stdin.readline")
@@ -31,9 +27,7 @@ def test_input_with_prompt(self, print, readline):
     def test_input_change_color(self, print, readline):
         input(" Enter your name: ", "blue")
 
-        print.assert_called_once_with(
-            " Enter your name: ", "blue", None, None, "left", None, False
-        )
+        print.assert_called_once_with(" Enter your name: ", "blue", None, None, "left", None, False)
         readline.assert_called_once_with()
 
     @patch("sys.stdin.readline")
@@ -79,9 +73,7 @@ def test_input_can_set_separator(self, print, readline):
     @patch("sys.stdin.readline")
     @patch("termspark.print")
     def test_input_can_take_full_width(self, print, readline):
-        input(
-            " Enter your name: ", highlight="blue", position="center", full_width=True
-        )
+        input(" Enter your name: ", highlight="blue", position="center", full_width=True)
 
         print.assert_called_once_with(
             " Enter your name: ", None, "blue", None, "center", None, True
@@ -90,9 +82,7 @@ def test_input_can_take_full_width(self, print, readline):
 
     def test_cant_set_type_to_input_callback(self):
         with pytest.raises(ParameterTypeError):
-            input(
-                " Enter your age: ", highlight="blue", position="center", callback=int
-            )
+            input(" Enter your age: ", highlight="blue", position="center", callback=int)
 
     def test_cant_set_not_type_function_to_input_type(self):
         with pytest.raises(ParameterTypeError):
diff --git a/tests/painter_test.py b/tests/painter_test.py
index 61be22a..eed960c 100644
--- a/tests/painter_test.py
+++ b/tests/painter_test.py
@@ -4,10 +4,6 @@
 
 
 class TestPainter:
-    def test_prefix(self):
-        painter = Painter()
-        assert painter.PREFIX == "\x1b["
-
     def test_suffix(self):
         painter = Painter()
         assert painter.SUFFIX == "m"
@@ -20,13 +16,13 @@ def test_can_paint_existed_fore_color(self):
         painter = Painter()
         paint_color = painter.paint_color("red")
 
-        assert paint_color == f"{painter.PREFIX}{Fore.RED}{painter.SUFFIX}"
+        assert paint_color == f"{Fore.PREFIX}{Fore.RED}{painter.SUFFIX}"
 
     def test_can_paint_existed_multi_words_fore_color(self):
         painter = Painter()
         paint_color = painter.paint_color("light_green")
 
-        assert paint_color == f"{painter.PREFIX}{Fore.LIGHT_GREEN}{painter.SUFFIX}"
+        assert paint_color == f"{Fore.PREFIX}{Fore.LIGHT_GREEN}{painter.SUFFIX}"
 
     def test_return_empty_string_when_unexisted_fore_color(self):
         painter = Painter()
@@ -38,15 +34,13 @@ def test_can_paint_existed_highlight(self):
         painter = Painter()
         paint_highlight = painter.paint_highlight("white")
 
-        assert paint_highlight == f"{painter.PREFIX}{Highlight.WHITE}{painter.SUFFIX}"
+        assert paint_highlight == f"{Highlight.PREFIX}{Highlight.WHITE}{painter.SUFFIX}"
 
     def test_can_paint_existed_multi_words_highlight(self):
         painter = Painter()
-        paint_highlight = painter.paint_highlight("light_blue")
+        paint_highlight = painter.paint_highlight("dark_blue")
 
-        assert (
-            paint_highlight == f"{painter.PREFIX}{Highlight.LIGHT_BLUE}{painter.SUFFIX}"
-        )
+        assert paint_highlight == f"{Highlight.PREFIX}{Highlight.DARK_BLUE}{painter.SUFFIX}"
 
     def test_return_empty_string_when_unexisted_highlight(self):
         painter = Painter()
diff --git a/tests/print_test.py b/tests/print_test.py
index cddf44c..be006ed 100644
--- a/tests/print_test.py
+++ b/tests/print_test.py
@@ -35,9 +35,7 @@ def test_print_with_some_parameters(self, spark_left, spark):
     def test_print_with_all_parameters(self, spark_left, spark):
         print("Termspark", "white", "blue", "italic, bold")
 
-        spark_left.assert_called_once_with(
-            ["Termspark", "white", "blue", "italic, bold"]
-        )
+        spark_left.assert_called_once_with(["Termspark", "white", "blue", "italic, bold"])
         spark.assert_called_once_with()
 
     @patch("termspark.termspark.TermSpark.spark")
@@ -45,9 +43,7 @@ def test_print_with_all_parameters(self, spark_left, spark):
     def test_print_with_position(self, spark_right, spark):
         print("Termspark", "white", "blue", "italic, bold", position="right")
 
-        spark_right.assert_called_once_with(
-            ["Termspark", "white", "blue", "italic, bold"]
-        )
+        spark_right.assert_called_once_with(["Termspark", "white", "blue", "italic, bold"])
         spark.assert_called_once_with()
 
     @patch("termspark.termspark.TermSpark.spark")
@@ -64,9 +60,7 @@ def test_print_with_separator(self, set_separator, spark_right, spark):
         )
 
         set_separator.assert_called_once_with(".")
-        spark_right.assert_called_once_with(
-            ["Termspark", "white", "blue", "italic, bold"]
-        )
+        spark_right.assert_called_once_with(["Termspark", "white", "blue", "italic, bold"])
         spark.assert_called_once_with()
 
     def test_print_raise_exception_on_unsupported_position(self):
@@ -87,7 +81,5 @@ def test_print_with_full_width(self, full_width, spark_right, spark):
         )
 
         full_width.assert_called_once_with()
-        spark_right.assert_called_once_with(
-            ["Termspark", "white", "blue", "italic, bold"]
-        )
+        spark_right.assert_called_once_with(["Termspark", "white", "blue", "italic, bold"])
         spark.assert_called_once_with()
diff --git a/tests/printer_validaor_test.py b/tests/printer_validaor_test.py
index d977e17..2fb6f5c 100644
--- a/tests/printer_validaor_test.py
+++ b/tests/printer_validaor_test.py
@@ -23,6 +23,4 @@ def test_validate_style(self):
 
     def test_validate_all(self):
         with pytest.raises(PrinterArgError):
-            PrinterValidator("right").validate(
-                ["termspark"], ["black"], ["green"], ["bold"]
-            )
+            PrinterValidator("right").validate(["termspark"], ["black"], ["green"], ["bold"])
diff --git a/tests/termspark_return_test.py b/tests/termspark_return_test.py
index f2292aa..b7ff449 100644
--- a/tests/termspark_return_test.py
+++ b/tests/termspark_return_test.py
@@ -55,9 +55,7 @@ def test_print_center(self):
         rest_space = terminal_width - content_space
 
         assert terminal_width == len(str(termspark))
-        assert str(termspark) == " " * int(rest_space / 2) + "CENTER" + " " * int(
-            rest_space / 2
-        )
+        assert str(termspark) == " " * int(rest_space / 2) + "CENTER" + " " * int(rest_space / 2)
 
     def test_print_center_with_separator(self):
         termspark = TermSpark().print_center("CENTER").set_separator(".")
@@ -67,9 +65,7 @@ def test_print_center_with_separator(self):
         rest_space = terminal_width - content_space
 
         assert terminal_width == len(str(termspark))
-        assert str(termspark) == "." * int(rest_space / 2) + "CENTER" + "." * int(
-            rest_space / 2
-        )
+        assert str(termspark) == "." * int(rest_space / 2) + "CENTER" + "." * int(rest_space / 2)
 
     def test_combine_left_with_right(self):
         termspark = TermSpark().print_left("LEFT").print_right("RIGHT")
@@ -83,9 +79,7 @@ def test_combine_left_with_right(self):
         assert str(termspark) == "LEFT" + " " * rest_space + "RIGHT"
 
     def test_combine_left_with_right_with_separator(self):
-        termspark = (
-            TermSpark().print_left("LEFT").print_right("RIGHT").set_separator(".")
-        )
+        termspark = TermSpark().print_left("LEFT").print_right("RIGHT").set_separator(".")
 
         terminal_width = termspark.get_terminal_width()
         left_content_space = len("LEFT")
@@ -104,14 +98,12 @@ def test_combine_left_with_center(self):
         rest_space = terminal_width - left_content_space - center_content_space
 
         assert terminal_width == len(str(termspark))
-        assert str(termspark) == "LEFT" + " " * int(
+        assert str(termspark) == "LEFT" + " " * int(rest_space / 2) + "CENTER" + " " * int(
             rest_space / 2
-        ) + "CENTER" + " " * int(rest_space / 2)
+        )
 
     def test_combine_left_with_center_with_separator(self):
-        termspark = (
-            TermSpark().print_left("LEFT").print_center("CENTER").set_separator(".")
-        )
+        termspark = TermSpark().print_left("LEFT").print_center("CENTER").set_separator(".")
 
         terminal_width = termspark.get_terminal_width()
         left_content_space = len("LEFT")
@@ -119,9 +111,9 @@ def test_combine_left_with_center_with_separator(self):
         rest_space = terminal_width - left_content_space - center_content_space
 
         assert terminal_width == len(str(termspark))
-        assert str(termspark) == "LEFT" + "." * int(
+        assert str(termspark) == "LEFT" + "." * int(rest_space / 2) + "CENTER" + "." * int(
             rest_space / 2
-        ) + "CENTER" + "." * int(rest_space / 2)
+        )
 
     def test_combine_right_with_center(self):
         termspark = TermSpark().print_right(" RIGHT ").print_center(" TERMSPARK ")
@@ -134,18 +126,12 @@ def test_combine_right_with_center(self):
         assert terminal_width == len(str(termspark))
         assert (
             str(termspark)
-            == " " * int(rest_space / 2)
-            + " TERMSPARK "
-            + " " * int(rest_space / 2)
-            + " RIGHT "
+            == " " * int(rest_space / 2) + " TERMSPARK " + " " * int(rest_space / 2) + " RIGHT "
         )
 
     def test_combine_right_with_center_with_separator(self):
         termspark = (
-            TermSpark()
-            .print_right(" RIGHT ")
-            .print_center(" TERMSPARK ")
-            .set_separator(".")
+            TermSpark().print_right(" RIGHT ").print_center(" TERMSPARK ").set_separator(".")
         )
 
         terminal_width = termspark.get_terminal_width()
@@ -156,29 +142,18 @@ def test_combine_right_with_center_with_separator(self):
         assert terminal_width == len(str(termspark))
         assert (
             str(termspark)
-            == "." * int(rest_space / 2)
-            + " TERMSPARK "
-            + "." * int(rest_space / 2)
-            + " RIGHT "
+            == "." * int(rest_space / 2) + " TERMSPARK " + "." * int(rest_space / 2) + " RIGHT "
         )
 
     def test_combine_all(self):
-        termspark = (
-            TermSpark()
-            .print_left("LEFT")
-            .print_right("RIGHT")
-            .print_center("TERMSPARK")
-        )
+        termspark = TermSpark().print_left("LEFT").print_right("RIGHT").print_center("TERMSPARK")
 
         terminal_width = termspark.get_terminal_width()
         right_content_space = len("RIGHT")
         center_content_space = len("TERMSPARK")
         left_content_space = len("LEFT")
         rest_space = (
-            terminal_width
-            - left_content_space
-            - right_content_space
-            - center_content_space
+            terminal_width - left_content_space - right_content_space - center_content_space
         )
 
         assert terminal_width == len(str(termspark))
@@ -192,19 +167,14 @@ def test_combine_all(self):
         )
 
     def test_combine_all_with_odd_separator_length(self):
-        termspark = (
-            TermSpark().print_left("LEFT").print_right("RIGHT").print_center("CENTER")
-        )
+        termspark = TermSpark().print_left("LEFT").print_right("RIGHT").print_center("CENTER")
 
         terminal_width = termspark.get_terminal_width()
         right_content_space = len("RIGHT")
         center_content_space = len("CENTER")
         left_content_space = len("LEFT")
         rest_space = (
-            terminal_width
-            - left_content_space
-            - right_content_space
-            - center_content_space
+            terminal_width - left_content_space - right_content_space - center_content_space
         )
 
         assert rest_space % 2 != 0
@@ -232,10 +202,7 @@ def test_combine_all_with_separator(self):
         center_content_space = len("TERMSPARK")
         left_content_space = len("LEFT")
         rest_space = (
-            terminal_width
-            - left_content_space
-            - right_content_space
-            - center_content_space
+            terminal_width - left_content_space - right_content_space - center_content_space
         )
 
         assert terminal_width == len(str(termspark))
@@ -261,10 +228,7 @@ def test_can_call_functions_separately(self):
         center_content_space = len("TERMSPARK")
         left_content_space = len("LEFT")
         rest_space = (
-            terminal_width
-            - left_content_space
-            - right_content_space
-            - center_content_space
+            terminal_width - left_content_space - right_content_space - center_content_space
         )
 
         assert terminal_width == len(str(termspark))
@@ -292,10 +256,7 @@ def test_can_chain_multiple_same_position_spark(self):
         center_content_space = len("TERMSPARK")
         left_content_space = len("LEFT") + len("*")
         rest_space = (
-            terminal_width
-            - left_content_space
-            - right_content_space
-            - center_content_space
+            terminal_width - left_content_space - right_content_space - center_content_space
         )
 
         assert terminal_width == len(str(termspark))
@@ -324,7 +285,7 @@ def test_customized_line_with_highlight(self):
         termspark = TermSpark().line(".", "green")
 
         terminal_width = termspark.get_terminal_width()
-        assert str(termspark) == "\x1b[42m.\x1b[0m" * terminal_width
+        assert str(termspark) == "\x1b[48;5;2m.\x1b[0m" * terminal_width
 
     def test_force_width(self):
         width = 100
diff --git a/tests/trim_test.py b/tests/trim_test.py
index 8aa0758..67b2c88 100644
--- a/tests/trim_test.py
+++ b/tests/trim_test.py
@@ -21,9 +21,7 @@ def test_trim_when_text_exceeds_terminal_width_on_list(self):
         terminal_width = termspark.get_width()
 
         text = "A" * (terminal_width + 10)
-        termspark = termspark.spark_left(["A" * 8]).spark_right(
-            [text, "red"], [text, "blue"]
-        )
+        termspark = termspark.spark_left(["A" * 8]).spark_right([text, "red"], [text, "blue"])
         termspark.spark()
 
         assert (