feat(db): mesh data model — meshes, members, invites, audit log
- pgSchema "mesh" with 4 tables isolating the peer mesh domain - Enums: visibility, transport, tier, role - audit_log is metadata-only (E2E encryption enforced at broker/client) - Cascade on mesh delete, soft-delete via archivedAt/revokedAt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
23
apps/web/src/modules/common/themed-image.tsx
Normal file
23
apps/web/src/modules/common/themed-image.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
"use client";
|
||||
|
||||
import Image from "next/image";
|
||||
import { useTheme } from "next-themes";
|
||||
import { preload } from "react-dom";
|
||||
|
||||
import type { ComponentProps } from "react";
|
||||
|
||||
export const ThemedImage = ({
|
||||
light,
|
||||
dark,
|
||||
...props
|
||||
}: Omit<ComponentProps<typeof Image>, "src"> & {
|
||||
light: string;
|
||||
dark: string;
|
||||
}) => {
|
||||
preload(light, { as: "image" });
|
||||
preload(dark, { as: "image" });
|
||||
|
||||
const { resolvedTheme } = useTheme();
|
||||
|
||||
return <Image src={resolvedTheme === "dark" ? dark : light} {...props} />;
|
||||
};
|
||||
Reference in New Issue
Block a user