"Bash(curl -s http://localhost:1313/articles/haiku-2/)",
"Bash(curl -s http://localhost:1313/articles/)",
"Bash(curl -s http://localhost:1313/css/main.min.css)",
- "Bash(hugo version *)"
+ "Bash(hugo version *)",
+ "Bash(curl -s \"http://localhost:1313/articles/\")",
+ "Bash(curl -s http://localhost:1313/tags/hugo/)",
+ "Bash(curl -s http://localhost:1313/categories/)"
]
}
}
- [ ] Analytics (privacy-respecting)
- [✅] add back-to-top button
- [ ] Lazy loading articles in list view
-- [ ] modify articles list view to be more of a timeline (line in middle, articles on sides)
+- [✅] modify articles list view to be more of a timeline (line in middle, articles on sides)
- [ ] Progressive enhancement (offline support)
- [⏳] Create accessibility badges component (WCAG 2.1 AA, Keyboard Accessible, Screen Reader Compatible)
- [ ] Add badges to footer with links to A11Y-AUDIT-REPORT.md
/* Card component */
+.card {
+ overflow: hidden;
+ border-radius: 0.5rem;
+ border-width: 1px;
+ border-color: var(--border);
+ transition-property: all;
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ transition-duration: 200ms;
+}
+
+article.card.border-border\/30.rounded-lg.overflow-hidden.group.bg-bg {
+ border-color: var(--border);
+ box-shadow: 0 0 20px var(--accent-glow);
+}
+
+article.border.border-border\/30.card.overflow-hidden.group.bg-bg {
+ border-color: var(--border);
+ box-shadow: 0 0 20px var(--accent-glow);
+}
+
+article.border.border-border\/30.rounded-lg.card.group.bg-bg {
+ border-color: var(--border);
+ box-shadow: 0 0 20px var(--accent-glow);
+}
+
+.card {
+ box-shadow: 0 0 20px var(--accent-glow);
+}
+
+.card:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 0 30px var(--accent-glow);
+}
+
+.card-image {
+ aspect-ratio: 16 / 9;
+ width: 100%;
+ -o-object-fit: cover;
+ object-fit: cover;
+}
+
+.card-body > :not([hidden]) ~ :not([hidden]) {
+ --tw-space-y-reverse: 0;
+ margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
+ margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
+}
+
+.card-body {
+ padding: 1.25rem;
+}
+
+@media (min-width: 768px) {
+ .card-body {
+ padding: 1.5rem;
+ }
+}
+
/* =====================
Timeline Layout
===================== */
right: 0px;
}
+.right-3 {
+ right: 0.75rem;
+}
+
.right-4 {
right: 1rem;
}
top: 0px;
}
+.top-3 {
+ top: 0.75rem;
+}
+
.top-4 {
top: 1rem;
}
-webkit-line-clamp: 1;
}
+.line-clamp-3 {
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 3;
+}
+
.block {
display: block;
}
max-width: 42rem;
}
+.max-w-3xl {
+ max-width: 48rem;
+}
+
.max-w-4xl {
max-width: 56rem;
}
padding-right: 1.5rem;
}
+.py-0\.5 {
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+}
+
.py-1 {
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
+.py-1\.5 {
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
+}
+
.py-12 {
padding-top: 3rem;
padding-bottom: 3rem;
color: var(--text);
}
+.group:hover .group-hover\:text-accent {
+ color: var(--accent);
+}
+
@media (prefers-color-scheme: dark) {
.dark\:prose-invert {
--tw-prose-body: var(--tw-prose-invert-body);
opacity: 0.5;
}
+.group:hover .group-hover\:scale-105 {
+ --tw-scale-x: 1.05;
+ --tw-scale-y: 1.05;
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
+}
+
+.group:hover .group-hover\:text-accent {
+ color: var(--accent);
+}
+
@media (min-width: 640px) {
.sm\:flex-row {
flex-direction: row;