ci: add ruff linting and mypy type checking
Add ruff and mypy to dev dependencies with configuration in pyproject.toml. Add a lint CI job that runs ruff check, ruff format --check, and mypy. Auto-fix import sorting and formatting across the codebase. Exclude alembic/versions from linting (auto-generated migrations). Ignore B008 (FastAPI Depends pattern) and RUF001 (unicode in user-facing strings). 21 ruff lint errors and 50 mypy errors remain for manual review. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
399276ea69
commit
bf04c77aa9
137 changed files with 3066 additions and 1900 deletions
313
frontend/src/theme/presets/deutan-blue.js
Normal file
313
frontend/src/theme/presets/deutan-blue.js
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
export default {
|
||||
"id": "deutan-blue-75",
|
||||
"label": "Deutan Colorblind - Blue",
|
||||
"description": "Colorblind-oriented theme with blue-led emphasis and deutan-safer state separation.",
|
||||
"modes": {
|
||||
"light": {
|
||||
"scale": {
|
||||
"brand": {
|
||||
"50": "#f3f7ff",
|
||||
"100": "#e6efff",
|
||||
"200": "#c9dbff",
|
||||
"300": "#a6c1ff",
|
||||
"400": "#7ea2f5",
|
||||
"500": "#5f84dc",
|
||||
"600": "#4a6bc0",
|
||||
"700": "#3e589b",
|
||||
"800": "#35497d",
|
||||
"900": "#2e3f68",
|
||||
"950": "#1d2742"
|
||||
},
|
||||
"info": {
|
||||
"50": "#f0f7fa",
|
||||
"100": "#dcedf4",
|
||||
"200": "#bcd9e8",
|
||||
"300": "#93bfd8",
|
||||
"400": "#669fc4",
|
||||
"500": "#4b82a8",
|
||||
"600": "#3b6887",
|
||||
"700": "#31546d",
|
||||
"800": "#2b465a",
|
||||
"900": "#253b4c",
|
||||
"950": "#16242f"
|
||||
},
|
||||
"success": {
|
||||
"50": "#f2f8ff",
|
||||
"100": "#deefff",
|
||||
"200": "#bddfff",
|
||||
"300": "#93c9ff",
|
||||
"400": "#62acef",
|
||||
"500": "#3e8fd1",
|
||||
"600": "#2f72ad",
|
||||
"700": "#285c8c",
|
||||
"800": "#244d73",
|
||||
"900": "#213f5d",
|
||||
"950": "#15273a"
|
||||
},
|
||||
"warning": {
|
||||
"50": "#fff8ef",
|
||||
"100": "#ffedd2",
|
||||
"200": "#ffd7a3",
|
||||
"300": "#ffbb6b",
|
||||
"400": "#f49c38",
|
||||
"500": "#db7f1d",
|
||||
"600": "#b86516",
|
||||
"700": "#945013",
|
||||
"800": "#784214",
|
||||
"900": "#633814",
|
||||
"950": "#381d0a"
|
||||
},
|
||||
"danger": {
|
||||
"50": "#fcf4fb",
|
||||
"100": "#f7e6f5",
|
||||
"200": "#efcdea",
|
||||
"300": "#e2a7d8",
|
||||
"400": "#ce79bf",
|
||||
"500": "#b856a4",
|
||||
"600": "#9b3f89",
|
||||
"700": "#7f3470",
|
||||
"800": "#692e5d",
|
||||
"900": "#57294d",
|
||||
"950": "#311428"
|
||||
}
|
||||
},
|
||||
"surface": {
|
||||
"app": "#f4f7fb",
|
||||
"nav": "#ffffff",
|
||||
"nav_active": "#dce9ff",
|
||||
"card": "#ffffff",
|
||||
"card_muted": "#edf3fb",
|
||||
"table": "#ffffff",
|
||||
"table_header": "#f4f7fb",
|
||||
"input": "#ffffff",
|
||||
"overlay": "#1c2430"
|
||||
},
|
||||
"text": {
|
||||
"primary": "#1f2937",
|
||||
"secondary": "#41536b",
|
||||
"muted": "#6a7a8f",
|
||||
"inverse": "#ffffff",
|
||||
"link": "#3e589b"
|
||||
},
|
||||
"border": {
|
||||
"default": "#d8e2ee",
|
||||
"strong": "#bccbdb",
|
||||
"subtle": "#edf3fb",
|
||||
"interactive": "#7ea2f5"
|
||||
},
|
||||
"focus": {
|
||||
"ring": "#5f84dc",
|
||||
"ring_offset": "#f4f7fb"
|
||||
},
|
||||
"action": {
|
||||
"primary": {
|
||||
"bg": "#5f84dc",
|
||||
"border": "#5f84dc",
|
||||
"text": "#ffffff",
|
||||
"hover_bg": "#4a6bc0",
|
||||
"hover_border": "#4a6bc0",
|
||||
"hover_text": "#ffffff"
|
||||
},
|
||||
"secondary": {
|
||||
"bg": "#edf3fb",
|
||||
"border": "#d8e2ee",
|
||||
"text": "#1f2937",
|
||||
"hover_bg": "#dce9ff",
|
||||
"hover_border": "#bccbdb",
|
||||
"hover_text": "#111827"
|
||||
},
|
||||
"ghost": {
|
||||
"bg": "#f4f7fb",
|
||||
"border": "#d8e2ee",
|
||||
"text": "#3e589b",
|
||||
"hover_bg": "#edf3fb",
|
||||
"hover_border": "#bccbdb",
|
||||
"hover_text": "#2e3f68"
|
||||
},
|
||||
"danger": {
|
||||
"bg": "#f7e6f5",
|
||||
"border": "#efcdea",
|
||||
"text": "#7f3470",
|
||||
"hover_bg": "#efcdea",
|
||||
"hover_border": "#e2a7d8",
|
||||
"hover_text": "#692e5d"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"info": {
|
||||
"bg": "#dcedf4",
|
||||
"border": "#bcd9e8",
|
||||
"text": "#31546d"
|
||||
},
|
||||
"success": {
|
||||
"bg": "#deefff",
|
||||
"border": "#bddfff",
|
||||
"text": "#285c8c"
|
||||
},
|
||||
"warning": {
|
||||
"bg": "#ffedd2",
|
||||
"border": "#ffd7a3",
|
||||
"text": "#945013"
|
||||
},
|
||||
"danger": {
|
||||
"bg": "#f7e6f5",
|
||||
"border": "#efcdea",
|
||||
"text": "#7f3470"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dark": {
|
||||
"scale": {
|
||||
"brand": {
|
||||
"50": "#f3f7ff",
|
||||
"100": "#e6efff",
|
||||
"200": "#c9dbff",
|
||||
"300": "#a6c1ff",
|
||||
"400": "#7ea2f5",
|
||||
"500": "#5f84dc",
|
||||
"600": "#4a6bc0",
|
||||
"700": "#3e589b",
|
||||
"800": "#35497d",
|
||||
"900": "#2e3f68",
|
||||
"950": "#1d2742"
|
||||
},
|
||||
"info": {
|
||||
"50": "#f0f7fa",
|
||||
"100": "#dcedf4",
|
||||
"200": "#bcd9e8",
|
||||
"300": "#93bfd8",
|
||||
"400": "#669fc4",
|
||||
"500": "#4b82a8",
|
||||
"600": "#3b6887",
|
||||
"700": "#31546d",
|
||||
"800": "#2b465a",
|
||||
"900": "#253b4c",
|
||||
"950": "#16242f"
|
||||
},
|
||||
"success": {
|
||||
"50": "#f2f8ff",
|
||||
"100": "#deefff",
|
||||
"200": "#bddfff",
|
||||
"300": "#93c9ff",
|
||||
"400": "#62acef",
|
||||
"500": "#3e8fd1",
|
||||
"600": "#2f72ad",
|
||||
"700": "#285c8c",
|
||||
"800": "#244d73",
|
||||
"900": "#213f5d",
|
||||
"950": "#15273a"
|
||||
},
|
||||
"warning": {
|
||||
"50": "#fff8ef",
|
||||
"100": "#ffedd2",
|
||||
"200": "#ffd7a3",
|
||||
"300": "#ffbb6b",
|
||||
"400": "#f49c38",
|
||||
"500": "#db7f1d",
|
||||
"600": "#b86516",
|
||||
"700": "#945013",
|
||||
"800": "#784214",
|
||||
"900": "#633814",
|
||||
"950": "#381d0a"
|
||||
},
|
||||
"danger": {
|
||||
"50": "#fcf4fb",
|
||||
"100": "#f7e6f5",
|
||||
"200": "#efcdea",
|
||||
"300": "#e2a7d8",
|
||||
"400": "#ce79bf",
|
||||
"500": "#b856a4",
|
||||
"600": "#9b3f89",
|
||||
"700": "#7f3470",
|
||||
"800": "#692e5d",
|
||||
"900": "#57294d",
|
||||
"950": "#311428"
|
||||
}
|
||||
},
|
||||
"surface": {
|
||||
"app": "#111827",
|
||||
"nav": "#172131",
|
||||
"nav_active": "#3e589b",
|
||||
"card": "#172131",
|
||||
"card_muted": "#1d2a3d",
|
||||
"table": "#172131",
|
||||
"table_header": "#1d2a3d",
|
||||
"input": "#0d1522",
|
||||
"overlay": "#05070b"
|
||||
},
|
||||
"text": {
|
||||
"primary": "#e8eef7",
|
||||
"secondary": "#bfd0e6",
|
||||
"muted": "#8ea1ba",
|
||||
"inverse": "#111827",
|
||||
"link": "#a6c1ff"
|
||||
},
|
||||
"border": {
|
||||
"default": "#27364b",
|
||||
"strong": "#334760",
|
||||
"subtle": "#1d2a3d",
|
||||
"interactive": "#5f84dc"
|
||||
},
|
||||
"focus": {
|
||||
"ring": "#7ea2f5",
|
||||
"ring_offset": "#111827"
|
||||
},
|
||||
"action": {
|
||||
"primary": {
|
||||
"bg": "#5f84dc",
|
||||
"border": "#5f84dc",
|
||||
"text": "#0b1020",
|
||||
"hover_bg": "#7ea2f5",
|
||||
"hover_border": "#7ea2f5",
|
||||
"hover_text": "#0b1020"
|
||||
},
|
||||
"secondary": {
|
||||
"bg": "#1d2a3d",
|
||||
"border": "#334760",
|
||||
"text": "#e8eef7",
|
||||
"hover_bg": "#27364b",
|
||||
"hover_border": "#41536b",
|
||||
"hover_text": "#ffffff"
|
||||
},
|
||||
"ghost": {
|
||||
"bg": "#111827",
|
||||
"border": "#27364b",
|
||||
"text": "#bfd0e6",
|
||||
"hover_bg": "#1d2a3d",
|
||||
"hover_border": "#334760",
|
||||
"hover_text": "#ffffff"
|
||||
},
|
||||
"danger": {
|
||||
"bg": "#311428",
|
||||
"border": "#7f3470",
|
||||
"text": "#efcdea",
|
||||
"hover_bg": "#421b35",
|
||||
"hover_border": "#9b3f89",
|
||||
"hover_text": "#f7e6f5"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"info": {
|
||||
"bg": "#253b4c",
|
||||
"border": "#31546d",
|
||||
"text": "#dcedf4"
|
||||
},
|
||||
"success": {
|
||||
"bg": "#213f5d",
|
||||
"border": "#285c8c",
|
||||
"text": "#deefff"
|
||||
},
|
||||
"warning": {
|
||||
"bg": "#633814",
|
||||
"border": "#945013",
|
||||
"text": "#ffd7a3"
|
||||
},
|
||||
"danger": {
|
||||
"bg": "#311428",
|
||||
"border": "#7f3470",
|
||||
"text": "#efcdea"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue