The `full "#hex"` format is a take on the `"#hex"` format but allows one to specify the foreground, background, and attributes in one line.
Example: `{ fg: "#ff0000" bg: "#0000ff" attr: b }`
- foreground of red in "#hex" format
- background of blue in "#hex" format
- attribute of bold abbreviated
### Closure
Note: Closures are only executed for table output. They do not work in other contexts like for `shape_` configurations, when printing a value directly, or as a value in a list.
For example:
```nu
$env.config.color_config.filesize = {|x| if $x == 0b { 'dark_gray' } else if $x < 1mb { 'cyan' } else { 'blue' } }
$env.config.color_config.bool = {|x| if $x { 'green' } else { 'light_red' } }
{a:true,b:false,c:0mb,d:0.5mb,e:10mib}
```
prints
```nu
╭───┬───────────╮
│ a │ true │
│ b │ false │
│ c │ 0 B │
│ d │ 488.3 KiB │
│ e │ 10.0 MiB │
╰───┴───────────╯
```
with a green `true`, a light red `false`, a dark grey `0 B`, a cyan `488.3 KiB`, and a blue `10.0 MiB`.
## Primitive Values
Primitive values are things like `int` and `string`. Primitive values and shapes can be set with a variety of color symbologies seen above.
This is the current list of primitives. Not all of these are configurable. The configurable ones are marked with \*.
| primitive | default color | configurable |
| ------------ | --------------------- | ------------ |
| `any` | | |
| `binary` | Color::White.normal() | \* |
| `block` | Color::White.normal() | \* |
| `bool` | Color::White.normal() | \* |
| `cellpath` | Color::White.normal() | \* |
| `condition` | | |
| `custom` | | |
| `date` | Color::White.normal() | \* |
| `duration` | Color::White.normal() | \* |
| `expression` | | |
| `filesize` | Color::White.normal() | \* |
| `float` | Color::White.normal() | \* |
| `glob` | | |
| `import` | | |
| `int` | Color::White.normal() | \* |
| `list` | Color::White.normal() | \* |
| `nothing` | Color::White.normal() | \* |
| `number` | | |
| `operator` | | |
| `path` | | |
| `range` | Color::White.normal() | \* |
| `record` | Color::White.normal() | \* |
| `signature` | | |
| `string` | Color::White.normal() | \* |
| `table` | | |
| `var` | | |
| `vardecl` | | |
| `variable` | | |
### Special "primitives" (not really primitives but they exist solely for coloring)
| primitive | default color | configurable |
| --------------------------- | -------------------------- | ------------ |
| `leading_trailing_space_bg` | Color::Rgb(128, 128, 128)) | \* |
| `header` | Color::Green.bold() | \* |
| `empty` | Color::Blue.normal() | \* |
| `row_index` | Color::Green.bold() | \* |
| `hints` | Color::DarkGray.normal() | \* |
Here's a small example of changing some of these values.
```nu
let config = {
color_config: {
separator: purple
leading_trailing_space_bg: "#ffffff"
header: gb
date: wd
filesize: c
row_index: cb
bool: red
int: green
duration: blue_bold
range: purple
float: red
string: white
nothing: red
binary: red
cellpath: cyan