feat: production-harden app and finalize merge-ready UX/theme baseline

- complete tokenized theme preset system and admin style guide visibility
- refine dashboard layout/scroll behavior and shared async/request UI states
- add user nav-visibility settings across API, migration, and frontend stores
- harden security headers/CSP handling and related test coverage
- enforce CI repository hygiene + frontend contract/theme/build quality gates
- update docs/env references and make migration smoke test head-aware
This commit is contained in:
Justin Visser 2026-02-19 15:43:20 +01:00
parent ab1d29b203
commit ae2ca8f149
66 changed files with 5655 additions and 853 deletions

View file

@ -0,0 +1,313 @@
export default {
"id": "parchment",
"label": "Parchment",
"description": "Dusty beige canvas paired with slate blue accents.",
"modes": {
"light": {
"scale": {
"brand": {
"50": "#f5f7f9",
"100": "#eaf0f4",
"200": "#d5e0e9",
"300": "#b3c9d7",
"400": "#8daabc",
"500": "#7d93a4",
"600": "#5c7487",
"700": "#495e6f",
"800": "#3f4d5b",
"900": "#36414e",
"950": "#232b35"
},
"info": {
"50": "#f2f6fa",
"100": "#e0ebf4",
"200": "#c8dceb",
"300": "#a1c4de",
"400": "#73a5cc",
"500": "#538ab8",
"600": "#406d96",
"700": "#34577a",
"800": "#2d4965",
"900": "#273e55",
"950": "#192838"
},
"success": {
"50": "#f1f8f5",
"100": "#def0e6",
"200": "#bee0ce",
"300": "#93c7b0",
"400": "#6a9982",
"500": "#4c8a6d",
"600": "#386b53",
"700": "#2e5543",
"800": "#274537",
"900": "#21392e",
"950": "#112019"
},
"warning": {
"50": "#fdf8f1",
"100": "#f9eedc",
"200": "#f3dbbc",
"300": "#ebc191",
"400": "#e0a163",
"500": "#d1a569",
"600": "#b37435",
"700": "#945c2d",
"800": "#784b29",
"900": "#613e24",
"950": "#36200f"
},
"danger": {
"50": "#fcf5f5",
"100": "#f9e8e8",
"200": "#f1d1d1",
"300": "#e5b1b1",
"400": "#d48888",
"500": "#c26b6b",
"600": "#a64f4f",
"700": "#8a4141",
"800": "#733838",
"900": "#603232",
"950": "#331818"
}
},
"surface": {
"app": "#f2eee9",
"nav": "#faf8f5",
"nav_active": "#d5e0e9",
"card": "#faf8f5",
"card_muted": "#eae5df",
"table": "#faf8f5",
"table_header": "#f2eee9",
"input": "#ffffff",
"overlay": "#333638"
},
"text": {
"primary": "#333638",
"secondary": "#6b737c",
"muted": "#929ba5",
"inverse": "#faf8f5",
"link": "#5c7487"
},
"border": {
"default": "#eae5df",
"strong": "#d4cec6",
"subtle": "#f6f3ef",
"interactive": "#b3c9d7"
},
"focus": {
"ring": "#7d93a4",
"ring_offset": "#f2eee9"
},
"action": {
"primary": {
"bg": "#7d93a4",
"border": "#7d93a4",
"text": "#faf8f5",
"hover_bg": "#5c7487",
"hover_border": "#5c7487",
"hover_text": "#ffffff"
},
"secondary": {
"bg": "#eae5df",
"border": "#d4cec6",
"text": "#333638",
"hover_bg": "#dcd6cd",
"hover_border": "#c2bba0",
"hover_text": "#1a1b1d"
},
"ghost": {
"bg": "#f2eee9",
"border": "#eae5df",
"text": "#5c7487",
"hover_bg": "#eae5df",
"hover_border": "#d4cec6",
"hover_text": "#333638"
},
"danger": {
"bg": "#f9e8e8",
"border": "#f1d1d1",
"text": "#8a4141",
"hover_bg": "#f1d1d1",
"hover_border": "#e5b1b1",
"hover_text": "#a64f4f"
}
},
"state": {
"info": {
"bg": "#e0ebf4",
"border": "#c8dceb",
"text": "#34577a"
},
"success": {
"bg": "#def0e6",
"border": "#bee0ce",
"text": "#2e5543"
},
"warning": {
"bg": "#f9eedc",
"border": "#f3dbbc",
"text": "#945c2d"
},
"danger": {
"bg": "#f9e8e8",
"border": "#f1d1d1",
"text": "#8a4141"
}
}
},
"dark": {
"scale": {
"brand": {
"50": "#f5f7f9",
"100": "#eaf0f4",
"200": "#d5e0e9",
"300": "#b3c9d7",
"400": "#8daabc",
"500": "#7d93a4",
"600": "#5c7487",
"700": "#495e6f",
"800": "#3f4d5b",
"900": "#36414e",
"950": "#232b35"
},
"info": {
"50": "#f2f6fa",
"100": "#e0ebf4",
"200": "#c8dceb",
"300": "#a1c4de",
"400": "#73a5cc",
"500": "#538ab8",
"600": "#406d96",
"700": "#34577a",
"800": "#2d4965",
"900": "#273e55",
"950": "#192838"
},
"success": {
"50": "#f1f8f5",
"100": "#def0e6",
"200": "#bee0ce",
"300": "#93c7b0",
"400": "#6a9982",
"500": "#4c8a6d",
"600": "#386b53",
"700": "#2e5543",
"800": "#274537",
"900": "#21392e",
"950": "#112019"
},
"warning": {
"50": "#fdf8f1",
"100": "#f9eedc",
"200": "#f3dbbc",
"300": "#ebc191",
"400": "#e0a163",
"500": "#d1a569",
"600": "#b37435",
"700": "#945c2d",
"800": "#784b29",
"900": "#613e24",
"950": "#36200f"
},
"danger": {
"50": "#fcf5f5",
"100": "#f9e8e8",
"200": "#f1d1d1",
"300": "#e5b1b1",
"400": "#d48888",
"500": "#c26b6b",
"600": "#a64f4f",
"700": "#8a4141",
"800": "#733838",
"900": "#603232",
"950": "#331818"
}
},
"surface": {
"app": "#35373a",
"nav": "#424549",
"nav_active": "#5c7487",
"card": "#424549",
"card_muted": "#4d5156",
"table": "#424549",
"table_header": "#4d5156",
"input": "#2a2c2e",
"overlay": "#1a1b1d"
},
"text": {
"primary": "#e3e5e8",
"secondary": "#aeb5bc",
"muted": "#889098",
"inverse": "#35373a",
"link": "#b3c9d7"
},
"border": {
"default": "#4d5156",
"strong": "#5d6268",
"subtle": "#3e4145",
"interactive": "#7d93a4"
},
"focus": {
"ring": "#7d93a4",
"ring_offset": "#35373a"
},
"action": {
"primary": {
"bg": "#7d93a4",
"border": "#7d93a4",
"text": "#1a1b1d",
"hover_bg": "#b3c9d7",
"hover_border": "#b3c9d7",
"hover_text": "#1a1b1d"
},
"secondary": {
"bg": "#4d5156",
"border": "#5d6268",
"text": "#e3e5e8",
"hover_bg": "#5d6268",
"hover_border": "#70767c",
"hover_text": "#ffffff"
},
"ghost": {
"bg": "#35373a",
"border": "#4d5156",
"text": "#aeb5bc",
"hover_bg": "#4d5156",
"hover_border": "#5d6268",
"hover_text": "#ffffff"
},
"danger": {
"bg": "#603232",
"border": "#733838",
"text": "#f1d1d1",
"hover_bg": "#733838",
"hover_border": "#8a4141",
"hover_text": "#f9e8e8"
}
},
"state": {
"info": {
"bg": "#273e55",
"border": "#34577a",
"text": "#c8dceb"
},
"success": {
"bg": "#21392e",
"border": "#2e5543",
"text": "#bee0ce"
},
"warning": {
"bg": "#613e24",
"border": "#945c2d",
"text": "#f3dbbc"
},
"danger": {
"bg": "#603232",
"border": "#8a4141",
"text": "#f1d1d1"
}
}
}
}
};