feat: statuses and ticket types take any colour from a colour picker

Settings shows a native colour picker (the palette as suggestions)
instead of the list of eleven names. The API takes a palette name, as
before, or any #rrggbb; picking a palette colour still saves its name,
so it keeps its hand-made dark version. A free colour gets one variant
per theme, computed with the `color` library (moved towards white or
black until it contrasts 3:1 with the surface) and applied with
light-dark(): a pale yellow darkens on white, a navy lightens on dark.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 16:08:47 +02:00
parent 034704e46f
commit 33c593521e
19 changed files with 379 additions and 115 deletions

View File

@@ -12763,22 +12763,6 @@
"CANCELLED"
]
},
"SettingColor": {
"type": "string",
"enum": [
"slate",
"stone",
"violet",
"blue",
"sky",
"teal",
"green",
"amber",
"orange",
"red",
"pink"
]
},
"WorkflowStatusDto": {
"type": "object",
"properties": {
@@ -12799,11 +12783,9 @@
]
},
"color": {
"allOf": [
{
"$ref": "#/components/schemas/SettingColor"
}
]
"type": "string",
"description": "A palette colour (follows the theme) or #rrggbb",
"example": "violet"
},
"requiresReason": {
"type": "boolean",
@@ -12907,11 +12889,9 @@
]
},
"color": {
"allOf": [
{
"$ref": "#/components/schemas/SettingColor"
}
]
"type": "string",
"description": "A palette colour (follows the theme) or #rrggbb",
"example": "violet"
},
"archived": {
"type": "boolean"
@@ -13262,11 +13242,10 @@
]
},
"color": {
"allOf": [
{
"$ref": "#/components/schemas/SettingColor"
}
]
"type": "string",
"description": "A palette colour (slate, stone, violet, blue, sky, teal, green, amber, orange, red, pink), which follows the theme, or any #rrggbb",
"example": "#7c3aed",
"pattern": "^(slate|stone|violet|blue|sky|teal|green|amber|orange|red|pink|#[0-9a-fA-F]{6})$"
},
"requiresReason": {
"type": "boolean",
@@ -13351,11 +13330,10 @@
]
},
"color": {
"allOf": [
{
"$ref": "#/components/schemas/SettingColor"
}
]
"type": "string",
"description": "A palette colour (slate, stone, violet, blue, sky, teal, green, amber, orange, red, pink), which follows the theme, or any #rrggbb",
"example": "#7c3aed",
"pattern": "^(slate|stone|violet|blue|sky|teal|green|amber|orange|red|pink|#[0-9a-fA-F]{6})$"
},
"archived": {
"type": "boolean",