Merge pull request 'P11: WCAG 2.2 AA compliance + marimo dashboard tiles' (#57) from feature/wcag-marimo-tiles into main
This commit was merged in pull request #57.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/* LOCH — deep-navy design system — matches styles/inject.css */
|
/* LOCH — deep-navy design system — matches styles/inject.css */
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--ifm-color-primary: #3366cc;
|
--ifm-color-primary: #4488dd;
|
||||||
--ifm-color-primary-dark: #2d5bb8;
|
--ifm-color-primary-dark: #2d5bb8;
|
||||||
--ifm-color-primary-darker: #2a56ad;
|
--ifm-color-primary-darker: #2a56ad;
|
||||||
--ifm-color-primary-darkest: #23478f;
|
--ifm-color-primary-darkest: #23478f;
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
[data-theme="dark"] {
|
[data-theme="dark"] {
|
||||||
--ifm-background-color: #0a1628;
|
--ifm-background-color: #0a1628;
|
||||||
--ifm-background-surface-color: #0d1e36;
|
--ifm-background-surface-color: #0d1e36;
|
||||||
--ifm-color-primary: #3366cc;
|
--ifm-color-primary: #4488dd;
|
||||||
--ifm-color-primary-dark: #2d5bb8;
|
--ifm-color-primary-dark: #2d5bb8;
|
||||||
--ifm-color-primary-darker: #2a56ad;
|
--ifm-color-primary-darker: #2a56ad;
|
||||||
--ifm-color-primary-darkest: #23478f;
|
--ifm-color-primary-darkest: #23478f;
|
||||||
@@ -45,15 +45,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footer--dark {
|
.footer--dark {
|
||||||
border-top: 3px solid #cc2244;
|
border-top: 3px solid #ee5577;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Red accent bar on hero */
|
/* Red accent bar on hero */
|
||||||
.hero {
|
.hero {
|
||||||
border-bottom: 3px solid #cc2244;
|
border-bottom: 3px solid #ee5577;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sidebar active link */
|
/* Sidebar active link */
|
||||||
.menu__link--active:not(.menu__link--sublist) {
|
.menu__link--active:not(.menu__link--sublist) {
|
||||||
border-left: 3px solid #cc2244;
|
border-left: 3px solid #ee5577;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ export default function Library(): JSX.Element {
|
|||||||
style={{
|
style={{
|
||||||
background: "none",
|
background: "none",
|
||||||
border: "none",
|
border: "none",
|
||||||
color: !selectedCollection ? "#3366cc" : "#a0b0c8",
|
color: !selectedCollection ? "#4488dd" : "#a0b0c8",
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
padding: "2px 0",
|
padding: "2px 0",
|
||||||
fontFamily: "inherit",
|
fontFamily: "inherit",
|
||||||
@@ -161,7 +161,7 @@ export default function Library(): JSX.Element {
|
|||||||
background: "none",
|
background: "none",
|
||||||
border: "none",
|
border: "none",
|
||||||
color:
|
color:
|
||||||
selectedCollection === c.key ? "#3366cc" : "#a0b0c8",
|
selectedCollection === c.key ? "#4488dd" : "#a0b0c8",
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
padding: "2px 0",
|
padding: "2px 0",
|
||||||
fontFamily: "inherit",
|
fontFamily: "inherit",
|
||||||
@@ -191,7 +191,7 @@ export default function Library(): JSX.Element {
|
|||||||
borderRadius: 3,
|
borderRadius: 3,
|
||||||
border: "1px solid #1a2a44",
|
border: "1px solid #1a2a44",
|
||||||
background: selectedTags.has(t.name)
|
background: selectedTags.has(t.name)
|
||||||
? "#3366cc"
|
? "#4488dd"
|
||||||
: "#0d1e36",
|
: "#0d1e36",
|
||||||
color: selectedTags.has(t.name) ? "#fff" : "#a0b0c8",
|
color: selectedTags.has(t.name) ? "#fff" : "#a0b0c8",
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
--ds-blue-light: #6699ee;
|
--ds-blue-light: #6699ee;
|
||||||
--ds-blue-bright: #99bbff;
|
--ds-blue-bright: #99bbff;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #ee6688;
|
--ds-red-light: #ee6688;
|
||||||
|
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
@@ -552,3 +552,67 @@ button:active,
|
|||||||
transform: translate(1px, 1px) !important;
|
transform: translate(1px, 1px) !important;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── Dashboard tiles — file browser as card grid ─────────── */
|
||||||
|
|
||||||
|
/* Hide marimo resources / external links section */
|
||||||
|
.home-page a[href*="docs.marimo.io"],
|
||||||
|
.home-page a[href*="discord"],
|
||||||
|
.home-page a[href*="github.com/marimo-team"],
|
||||||
|
.home-page [class*="resource"],
|
||||||
|
.home-page [class*="Resource"],
|
||||||
|
section:has(a[href*="docs.marimo.io"]) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* File browser → tile grid */
|
||||||
|
.home-page [class*="file-list"],
|
||||||
|
.home-page [class*="FileList"],
|
||||||
|
.home-page .divide-y {
|
||||||
|
display: grid !important;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;
|
||||||
|
gap: 12px !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Individual notebook tiles */
|
||||||
|
.home-page [class*="file-list"] > *,
|
||||||
|
.home-page [class*="FileList"] > *,
|
||||||
|
.home-page .divide-y > * {
|
||||||
|
border: 1px solid #2a3f5f !important;
|
||||||
|
border-radius: 6px !important;
|
||||||
|
padding: 16px !important;
|
||||||
|
background: #162040 !important;
|
||||||
|
transition: border-color 0.15s, background 0.15s !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-page [class*="file-list"] > *:hover,
|
||||||
|
.home-page [class*="FileList"] > *:hover,
|
||||||
|
.home-page .divide-y > *:hover {
|
||||||
|
border-color: #4488dd !important;
|
||||||
|
background: #1e2d50 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tile headings */
|
||||||
|
.home-page [class*="file-list"] a,
|
||||||
|
.home-page [class*="FileList"] a,
|
||||||
|
.home-page .divide-y a {
|
||||||
|
color: #f0f0f0 !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Section headers */
|
||||||
|
.home-page h2,
|
||||||
|
.home-page [class*="section-header"],
|
||||||
|
.home-page .text-xl {
|
||||||
|
font-family: 'IBM Plex Mono', monospace !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
letter-spacing: 1px !important;
|
||||||
|
text-transform: uppercase !important;
|
||||||
|
color: #7a90b0 !important;
|
||||||
|
border-bottom: 1px solid #2a3f5f !important;
|
||||||
|
padding-bottom: 8px !important;
|
||||||
|
margin-bottom: 16px !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,12 +7,12 @@
|
|||||||
--ds-navy-light: #162040;
|
--ds-navy-light: #162040;
|
||||||
--ds-navy-mid: #1e2d50;
|
--ds-navy-mid: #1e2d50;
|
||||||
--ds-slate: #2a3f5f;
|
--ds-slate: #2a3f5f;
|
||||||
--ds-steel: #5a7090;
|
--ds-steel: #7a90b0;
|
||||||
--ds-white: #f0f0f0;
|
--ds-white: #f0f0f0;
|
||||||
--ds-blue: #3366cc;
|
--ds-blue: #4488dd;
|
||||||
--ds-blue-light: #5588dd;
|
--ds-blue-light: #5588dd;
|
||||||
--ds-blue-bright: #88aaee;
|
--ds-blue-bright: #88aaee;
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #dd4466;
|
--ds-red-light: #dd4466;
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ gitea-theme-meta-info {
|
|||||||
--ds-navy-light: #162040;
|
--ds-navy-light: #162040;
|
||||||
--ds-navy-mid: #1e2d50;
|
--ds-navy-mid: #1e2d50;
|
||||||
--ds-slate: #2a3f5f;
|
--ds-slate: #2a3f5f;
|
||||||
--ds-steel: #5a7090;
|
--ds-steel: #7a90b0;
|
||||||
--ds-white: #f0f0f0;
|
--ds-white: #f0f0f0;
|
||||||
|
|
||||||
--ds-blue: #3366cc;
|
--ds-blue: #4488dd;
|
||||||
--ds-blue-light: #5588dd;
|
--ds-blue-light: #5588dd;
|
||||||
--ds-blue-bright: #88aaee;
|
--ds-blue-bright: #88aaee;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #dd4466;
|
--ds-red-light: #dd4466;
|
||||||
|
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
|
|||||||
@@ -14,14 +14,14 @@
|
|||||||
--ds-navy-light: #162040;
|
--ds-navy-light: #162040;
|
||||||
--ds-navy-mid: #1e2d50;
|
--ds-navy-mid: #1e2d50;
|
||||||
--ds-slate: #2a3f5f;
|
--ds-slate: #2a3f5f;
|
||||||
--ds-steel: #5a7090;
|
--ds-steel: #7a90b0;
|
||||||
--ds-white: #f0f0f0;
|
--ds-white: #f0f0f0;
|
||||||
|
|
||||||
--ds-blue: #3366cc;
|
--ds-blue: #4488dd;
|
||||||
--ds-blue-light: #5588dd;
|
--ds-blue-light: #5588dd;
|
||||||
--ds-blue-bright: #88aaee;
|
--ds-blue-bright: #88aaee;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #dd4466;
|
--ds-red-light: #dd4466;
|
||||||
|
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
@@ -949,3 +949,27 @@ progress::-webkit-progress-bar {
|
|||||||
progress::-webkit-progress-value {
|
progress::-webkit-progress-value {
|
||||||
background: var(--ds-blue) !important;
|
background: var(--ds-blue) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── WCAG 2.2 AA — Accessibility ──────────────────────────── */
|
||||||
|
|
||||||
|
/* Focus indicators (2.4.7, 2.4.11) */
|
||||||
|
:focus-visible {
|
||||||
|
outline: 2px solid #4488dd !important;
|
||||||
|
outline-offset: 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reduced motion (2.3.3) */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*, *::before, *::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
scroll-behavior: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Minimum target size (2.5.8) */
|
||||||
|
button, [role="button"], a, input, select, textarea {
|
||||||
|
min-height: 24px;
|
||||||
|
min-width: 24px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,17 +10,41 @@
|
|||||||
--ds-navy-light: #162040;
|
--ds-navy-light: #162040;
|
||||||
--ds-navy-mid: #1e2d50;
|
--ds-navy-mid: #1e2d50;
|
||||||
--ds-slate: #2a3f5f;
|
--ds-slate: #2a3f5f;
|
||||||
--ds-steel: #5a7090;
|
--ds-steel: #7a90b0;
|
||||||
--ds-white: #f0f0f0;
|
--ds-white: #f0f0f0;
|
||||||
|
|
||||||
--ds-blue: #3366cc;
|
--ds-blue: #4488dd;
|
||||||
--ds-blue-light: #5588dd;
|
--ds-blue-light: #5588dd;
|
||||||
--ds-blue-bright: #88aaee;
|
--ds-blue-bright: #88aaee;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #dd4466;
|
--ds-red-light: #dd4466;
|
||||||
|
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
--ds-green-light: #66cc66;
|
--ds-green-light: #66cc66;
|
||||||
--ds-yellow: #ddaa33;
|
--ds-yellow: #ddaa33;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── WCAG 2.2 AA — Accessibility ──────────────────────────── */
|
||||||
|
|
||||||
|
/* Focus indicators (2.4.7, 2.4.11) */
|
||||||
|
:focus-visible {
|
||||||
|
outline: 2px solid #4488dd !important;
|
||||||
|
outline-offset: 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reduced motion (2.3.3) */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*, *::before, *::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
scroll-behavior: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Minimum target size (2.5.8) */
|
||||||
|
button, [role="button"], a, input, select, textarea {
|
||||||
|
min-height: 24px;
|
||||||
|
min-width: 24px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
--ds-blue-light: #6699ee;
|
--ds-blue-light: #6699ee;
|
||||||
--ds-blue-bright: #99bbff;
|
--ds-blue-bright: #99bbff;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #ee6688;
|
--ds-red-light: #ee6688;
|
||||||
--ds-red-bright: #ffaabc;
|
--ds-red-bright: #ffaabc;
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
--red-5: #661a34;
|
--red-5: #661a34;
|
||||||
--red-6: #802040;
|
--red-6: #802040;
|
||||||
--red-7: #aa3050;
|
--red-7: #aa3050;
|
||||||
--red-8: #cc2244;
|
--red-8: #ee5577;
|
||||||
--red-9: #dd4466;
|
--red-9: #dd4466;
|
||||||
--red-10: #ee6688;
|
--red-10: #ee6688;
|
||||||
--red-11: #ff99aa;
|
--red-11: #ff99aa;
|
||||||
@@ -790,3 +790,91 @@ button:active,
|
|||||||
.text-muted-foreground {
|
.text-muted-foreground {
|
||||||
color: var(--ds-steel) !important;
|
color: var(--ds-steel) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── Dashboard tiles — file browser as card grid ─────────── */
|
||||||
|
|
||||||
|
/* Hide marimo resources / external links section */
|
||||||
|
.home-page a[href*="docs.marimo.io"],
|
||||||
|
.home-page a[href*="discord"],
|
||||||
|
.home-page a[href*="github.com/marimo-team"],
|
||||||
|
.home-page [class*="resource"],
|
||||||
|
.home-page [class*="Resource"],
|
||||||
|
section:has(a[href*="docs.marimo.io"]) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* File browser → tile grid */
|
||||||
|
.home-page [class*="file-list"],
|
||||||
|
.home-page [class*="FileList"],
|
||||||
|
.home-page .divide-y {
|
||||||
|
display: grid !important;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;
|
||||||
|
gap: 12px !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Individual notebook tiles */
|
||||||
|
.home-page [class*="file-list"] > *,
|
||||||
|
.home-page [class*="FileList"] > *,
|
||||||
|
.home-page .divide-y > * {
|
||||||
|
border: 1px solid #2a3f5f !important;
|
||||||
|
border-radius: 6px !important;
|
||||||
|
padding: 16px !important;
|
||||||
|
background: #162040 !important;
|
||||||
|
transition: border-color 0.15s, background 0.15s !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-page [class*="file-list"] > *:hover,
|
||||||
|
.home-page [class*="FileList"] > *:hover,
|
||||||
|
.home-page .divide-y > *:hover {
|
||||||
|
border-color: #4488dd !important;
|
||||||
|
background: #1e2d50 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tile headings */
|
||||||
|
.home-page [class*="file-list"] a,
|
||||||
|
.home-page [class*="FileList"] a,
|
||||||
|
.home-page .divide-y a {
|
||||||
|
color: #f0f0f0 !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Section headers */
|
||||||
|
.home-page h2,
|
||||||
|
.home-page [class*="section-header"],
|
||||||
|
.home-page .text-xl {
|
||||||
|
font-family: 'IBM Plex Mono', monospace !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
letter-spacing: 1px !important;
|
||||||
|
text-transform: uppercase !important;
|
||||||
|
color: #7a90b0 !important;
|
||||||
|
border-bottom: 1px solid #2a3f5f !important;
|
||||||
|
padding-bottom: 8px !important;
|
||||||
|
margin-bottom: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── WCAG 2.2 AA — Accessibility ──────────────────────────── */
|
||||||
|
|
||||||
|
/* Focus indicators (2.4.7, 2.4.11) */
|
||||||
|
:focus-visible {
|
||||||
|
outline: 2px solid #4488dd !important;
|
||||||
|
outline-offset: 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reduced motion (2.3.3) */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*, *::before, *::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
scroll-behavior: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Minimum target size (2.5.8) */
|
||||||
|
button, [role="button"], a, input, select, textarea {
|
||||||
|
min-height: 24px;
|
||||||
|
min-width: 24px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,14 +8,14 @@
|
|||||||
--ds-navy-light: #162040;
|
--ds-navy-light: #162040;
|
||||||
--ds-navy-mid: #1e2d50;
|
--ds-navy-mid: #1e2d50;
|
||||||
--ds-slate: #2a3f5f;
|
--ds-slate: #2a3f5f;
|
||||||
--ds-steel: #5a7090;
|
--ds-steel: #7a90b0;
|
||||||
--ds-white: #f0f0f0;
|
--ds-white: #f0f0f0;
|
||||||
|
|
||||||
--ds-blue: #3366cc;
|
--ds-blue: #4488dd;
|
||||||
--ds-blue-light: #5588dd;
|
--ds-blue-light: #5588dd;
|
||||||
--ds-blue-bright: #88aaee;
|
--ds-blue-bright: #88aaee;
|
||||||
|
|
||||||
--ds-red: #cc2244;
|
--ds-red: #ee5577;
|
||||||
--ds-red-light: #dd4466;
|
--ds-red-light: #dd4466;
|
||||||
|
|
||||||
--ds-green: #44aa44;
|
--ds-green: #44aa44;
|
||||||
|
|||||||
Reference in New Issue
Block a user