Visual polish: card hover lift, gradient section dividers, editor spacing
- Cards (featured + gallery): hover adds -translate-y-1 + shadow-lg for subtle lift-off-surface effect - Homepage sections: replace hard border-b with gradient-fade dividers that taper to transparent at edges - Resistor button section: tighten vertical padding (py-10 → py-6) - Notebook editor: cell spacing increased (space-y-0 → space-y-3), add-cell button slides up on hover instead of abrupt opacity flash, status bar gets more breathing room and lighter text
This commit is contained in:
parent
d65f23d6ee
commit
09fd59d570
@ -46,7 +46,9 @@ const engineColor: Record<string, { border: string; bg: string; text: string }>
|
||||
href={`/notebook/${nb.id}`}
|
||||
class:list={[
|
||||
'group block rounded-lg border bg-slate-900/50 overflow-hidden',
|
||||
'hover:border-blue-500/40 hover:bg-slate-800/70 transition-all',
|
||||
'hover:border-blue-500/40 hover:bg-slate-800/70',
|
||||
'hover:-translate-y-1 hover:shadow-lg hover:shadow-black/25',
|
||||
'transition-all duration-200',
|
||||
'border-slate-800',
|
||||
]}
|
||||
>
|
||||
|
||||
@ -30,7 +30,7 @@ export function NotebookCard({ notebook }: NotebookCardProps) {
|
||||
return (
|
||||
<a
|
||||
href={`/notebook/${encodeURIComponent(id)}`}
|
||||
className="group block rounded-lg border border-slate-800 bg-slate-900/50 overflow-hidden hover:border-blue-500/40 hover:bg-slate-800/70 transition-all"
|
||||
className="group block rounded-lg border border-slate-800 bg-slate-900/50 overflow-hidden hover:border-blue-500/40 hover:bg-slate-800/70 hover:-translate-y-1 hover:shadow-lg hover:shadow-black/25 transition-all duration-200"
|
||||
>
|
||||
{schematic_svg ? (
|
||||
<div
|
||||
|
||||
@ -30,7 +30,7 @@ function AddCellButton({ afterId }: { afterId?: string }) {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="flex justify-center py-1 opacity-0 hover:opacity-100 focus-within:opacity-100 transition-opacity">
|
||||
<div className="flex justify-center py-2 opacity-0 -translate-y-1 hover:opacity-100 hover:translate-y-0 focus-within:opacity-100 focus-within:translate-y-0 transition-all duration-200 ease-out">
|
||||
<Dropdown
|
||||
trigger={
|
||||
<Button variant="ghost" size="sm" className="text-slate-600 hover:text-slate-400">
|
||||
@ -61,7 +61,7 @@ export function CellList() {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="space-y-0">
|
||||
<div className="space-y-3">
|
||||
{cells.map((cell, index) => {
|
||||
const isFirst = index === 0;
|
||||
const isLast = index === cells.length - 1;
|
||||
|
||||
@ -90,7 +90,7 @@ export default function NotebookEditor({ notebookId }: NotebookEditorProps) {
|
||||
</main>
|
||||
|
||||
{/* Status bar at bottom */}
|
||||
<footer className="border-t border-slate-800 bg-slate-950 px-4 py-1.5 text-[11px] text-slate-600 flex items-center gap-4">
|
||||
<footer className="border-t border-slate-800/60 bg-slate-950 px-4 py-2.5 text-[11px] text-slate-500 flex items-center gap-4">
|
||||
<span>
|
||||
{notebook.cells.length} cell
|
||||
{notebook.cells.length !== 1 ? 's' : ''}
|
||||
|
||||
@ -27,7 +27,7 @@ try {
|
||||
</style>
|
||||
|
||||
<!-- Hero: Split layout — text left, animated scope visual right -->
|
||||
<section class="hero-graticule border-b border-slate-800/60">
|
||||
<section class="hero-graticule section-fade">
|
||||
<div class="relative max-w-6xl mx-auto px-6 pt-16 pb-20">
|
||||
<div class="grid md:grid-cols-2 gap-12 items-center">
|
||||
|
||||
@ -68,13 +68,13 @@ try {
|
||||
</section>
|
||||
|
||||
<!-- Pipeline: Write → Simulate → Visualize -->
|
||||
<section class="border-b border-slate-800/60">
|
||||
<section class="section-fade">
|
||||
<PipelineStrip />
|
||||
</section>
|
||||
|
||||
<!-- Resistor Color Code Reference link -->
|
||||
<section class="border-b border-slate-800/60">
|
||||
<div class="max-w-6xl mx-auto px-6 py-10 flex flex-col sm:flex-row items-center gap-4 sm:gap-6">
|
||||
<section class="section-fade">
|
||||
<div class="max-w-6xl mx-auto px-6 py-6 flex flex-col sm:flex-row items-center gap-4 sm:gap-6">
|
||||
<a href="/reference/resistor-colors"
|
||||
class="inline-flex items-center gap-4 px-5 py-3 rounded-lg border border-slate-700
|
||||
hover:border-slate-500 hover:bg-slate-800/40 transition-colors group">
|
||||
@ -107,7 +107,7 @@ try {
|
||||
</section>
|
||||
|
||||
<!-- Featured Notebooks -->
|
||||
<section class="border-b border-slate-800/60">
|
||||
<section class="section-fade">
|
||||
<FeaturedNotebooks />
|
||||
</section>
|
||||
|
||||
@ -127,7 +127,7 @@ try {
|
||||
</section>
|
||||
|
||||
<!-- Footer CTA -->
|
||||
<footer class="border-t border-slate-800/60">
|
||||
<footer class="section-fade-top">
|
||||
<div class="max-w-6xl mx-auto px-6 py-16 text-center">
|
||||
<h2 class="text-2xl font-bold text-slate-100 mb-2">Start with a blank notebook</h2>
|
||||
<p class="text-sm text-slate-400 mb-6">Write a SPICE netlist, run it, see results in seconds.</p>
|
||||
|
||||
@ -20,6 +20,49 @@
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Soft gradient section divider — replaces hard border-b lines */
|
||||
.section-fade {
|
||||
border-bottom: none;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.section-fade::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 5%;
|
||||
right: 5%;
|
||||
height: 1px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
transparent,
|
||||
rgba(51, 65, 85, 0.5) 25%,
|
||||
rgba(51, 65, 85, 0.5) 75%,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
|
||||
/* Top-edge variant for footer */
|
||||
.section-fade-top {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.section-fade-top::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 5%;
|
||||
right: 5%;
|
||||
height: 1px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
transparent,
|
||||
rgba(51, 65, 85, 0.5) 25%,
|
||||
rgba(51, 65, 85, 0.5) 75%,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
|
||||
/* Horizontal scrollable filter pills */
|
||||
.filter-pills {
|
||||
scrollbar-width: none;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user