Compare commits
4
Commits
44755c6e85
..
v0.9.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
140ba10df6 | ||
|
|
48c31388db | ||
|
|
68b0e4d0bd | ||
|
|
cf5353dfe4 |
+1
-1
@@ -18,7 +18,7 @@ export default async function DashboardPage() {
|
|||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-8">
|
<div className="flex flex-col gap-8">
|
||||||
<Card className="bp-glass overflow-hidden">
|
<Card className="bp-glass overflow-hidden">
|
||||||
<CardContent className="flex flex-col items-start gap-4 py-8">
|
<CardContent className="flex flex-col items-start gap-4 py-4">
|
||||||
<BrandMark size={48} animated className="rounded-[9px]" />
|
<BrandMark size={48} animated className="rounded-[9px]" />
|
||||||
<h1 className="font-heading text-3xl font-semibold">Welcome back</h1>
|
<h1 className="font-heading text-3xl font-semibold">Welcome back</h1>
|
||||||
<p className="max-w-xl text-sm text-muted-foreground">
|
<p className="max-w-xl text-sm text-muted-foreground">
|
||||||
|
|||||||
+6
-14
@@ -181,23 +181,15 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Console-module surface: translucent + blurred so the animated background
|
/* Console-module surface: translucent + blurred so the animated background
|
||||||
sweep shines through, with a hairline border and soft inset top highlight. */
|
sweep shines through. Card's own default ring (components/ui/card.tsx:
|
||||||
|
`ring-1 ring-foreground/10`) still shows - ring-accent recolors it to the
|
||||||
|
accent token instead of resetting it. border-accent is currently a no-op
|
||||||
|
(neither Card nor this rule sets a border-width utility to give it a
|
||||||
|
border to color). */
|
||||||
.bp-glass {
|
.bp-glass {
|
||||||
|
@apply shadow-xs ring-accent border-accent;
|
||||||
background: color-mix(in srgb, var(--card) 55%, transparent);
|
background: color-mix(in srgb, var(--card) 55%, transparent);
|
||||||
backdrop-filter: blur(20px) saturate(150%);
|
backdrop-filter: blur(20px) saturate(150%);
|
||||||
border: 1px solid var(--border);
|
|
||||||
box-shadow: inset 0 1px 0 color-mix(in srgb, var(--foreground) 8%, transparent);
|
|
||||||
transition:
|
|
||||||
border-color 0.2s ease,
|
|
||||||
box-shadow 0.2s ease,
|
|
||||||
background-color 0.2s ease;
|
|
||||||
}
|
|
||||||
.bp-glass:hover {
|
|
||||||
background: color-mix(in srgb, var(--card) 62%, transparent);
|
|
||||||
border-color: color-mix(in srgb, var(--primary) 45%, var(--border));
|
|
||||||
box-shadow:
|
|
||||||
inset 0 1px 0 color-mix(in srgb, var(--foreground) 10%, transparent),
|
|
||||||
0 10px 30px -14px rgba(0, 0, 0, 0.45);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Illuminated indicator dot - reused on connection status and per-actuator
|
/* Illuminated indicator dot - reused on connection status and per-actuator
|
||||||
|
|||||||
@@ -64,7 +64,29 @@ export function SessionTimelineChart({ timeline }: { timeline: TimelineRow[] })
|
|||||||
className="bp-readout text-xs"
|
className="bp-readout text-xs"
|
||||||
/>
|
/>
|
||||||
<YAxis domain={[0, 100]} tickLine={false} axisLine={false} width={32} className="bp-readout text-xs" />
|
<YAxis domain={[0, 100]} tickLine={false} axisLine={false} width={32} className="bp-readout text-xs" />
|
||||||
<ChartTooltip content={<ChartTooltipContent />} />
|
<ChartTooltip
|
||||||
|
content={
|
||||||
|
<ChartTooltipContent
|
||||||
|
formatter={(value, name) => {
|
||||||
|
const itemConfig = config[name as string];
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div
|
||||||
|
className="h-2.5 w-2.5 shrink-0 rounded-[2px]"
|
||||||
|
style={{ backgroundColor: itemConfig?.color }}
|
||||||
|
/>
|
||||||
|
<div className="flex flex-1 items-center justify-between gap-4 leading-none">
|
||||||
|
<span className="text-muted-foreground">{itemConfig?.label ?? name}</span>
|
||||||
|
<span className="bp-readout font-medium text-foreground">
|
||||||
|
{typeof value === "number" ? value.toLocaleString() : String(value)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
{series.map(([sessionDeviceId]) => (
|
{series.map(([sessionDeviceId]) => (
|
||||||
<Area
|
<Area
|
||||||
key={sessionDeviceId}
|
key={sessionDeviceId}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sexy",
|
"name": "sexy",
|
||||||
"version": "0.9.0",
|
"version": "0.9.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user