Merge pull request #466 from danditomaso/fix/tailwind-4-styling-updates
dark mode styling updates
This commit is contained in:
@@ -26,7 +26,7 @@ export interface DeviceNameDialogProps {
|
|||||||
export const DeviceNameDialog = ({
|
export const DeviceNameDialog = ({
|
||||||
open,
|
open,
|
||||||
onOpenChange,
|
onOpenChange,
|
||||||
}: DeviceNameDialogProps): JSX.Element => {
|
}: DeviceNameDialogProps) => {
|
||||||
const { hardware, nodes, connection } = useDevice();
|
const { hardware, nodes, connection } = useDevice();
|
||||||
|
|
||||||
const myNode = nodes.get(hardware.myNodeNum);
|
const myNode = nodes.get(hardware.myNodeNum);
|
||||||
@@ -60,9 +60,13 @@ export const DeviceNameDialog = ({
|
|||||||
<div className="gap-4">
|
<div className="gap-4">
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<Label>Long Name</Label>
|
<Label>Long Name</Label>
|
||||||
<Input {...register("longName")} />
|
<Input className="dark:text-slte-900" {...register("longName")} />
|
||||||
<Label>Short Name</Label>
|
<Label>Short Name</Label>
|
||||||
<Input maxLength={4} {...register("shortName")} />
|
<Input
|
||||||
|
className="dark:text-slte-900"
|
||||||
|
maxLength={4}
|
||||||
|
{...register("shortName")}
|
||||||
|
/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ export const ImportDialog = ({
|
|||||||
<Input
|
<Input
|
||||||
value={importDialogInput}
|
value={importDialogInput}
|
||||||
suffix={validUrl ? "✅" : "❌"}
|
suffix={validUrl ? "✅" : "❌"}
|
||||||
|
className="dark:text-slate-900"
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setImportDialogInput(e.target.value);
|
setImportDialogInput(e.target.value);
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -44,12 +44,12 @@ export const NodeDetailsDialog = ({
|
|||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<DeviceImage
|
<DeviceImage
|
||||||
className="w-32 h-32 mx-auto rounded-lg border-4 border-gray-200 dark:border-gray-800"
|
className="w-32 h-32 mx-auto rounded-lg border-4 border-slate-200 dark:border-slate-800"
|
||||||
deviceType={
|
deviceType={
|
||||||
Protobuf.Mesh.HardwareModel[device.user?.hwModel ?? 0]
|
Protobuf.Mesh.HardwareModel[device.user?.hwModel ?? 0]
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
<div className="bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
||||||
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
||||||
Details:
|
Details:
|
||||||
</p>
|
</p>
|
||||||
@@ -78,7 +78,7 @@ export const NodeDetailsDialog = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{device.position ? (
|
{device.position ? (
|
||||||
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
<div className="mt-5 bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
||||||
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
||||||
Position:
|
Position:
|
||||||
</p>
|
</p>
|
||||||
@@ -103,7 +103,7 @@ export const NodeDetailsDialog = ({
|
|||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{device.deviceMetrics ? (
|
{device.deviceMetrics ? (
|
||||||
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
<div className="mt-5 bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
||||||
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
|
||||||
Device Metrics:
|
Device Metrics:
|
||||||
</p>
|
</p>
|
||||||
@@ -138,7 +138,7 @@ export const NodeDetailsDialog = ({
|
|||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{device ? (
|
{device ? (
|
||||||
<div className="mt-5 w-full max-w-[464px] bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
<div className="mt-5 w-full max-w-[464px] bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
|
||||||
<Accordion className="AccordionRoot" type="single" collapsible>
|
<Accordion className="AccordionRoot" type="single" collapsible>
|
||||||
<AccordionItem className="AccordionItem" value="item-1">
|
<AccordionItem className="AccordionItem" value="item-1">
|
||||||
<AccordionTrigger>
|
<AccordionTrigger>
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export const QRDialog = ({
|
|||||||
<div className="flex justify-center">
|
<div className="flex justify-center">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className={`border-black border-t border-l border-b rounded-l h-10 px-7 py-2 text-sm font-medium focus:outline-hidden focus:ring-2 focus:ring-offset-2 ${
|
className={`border-slate-900 border-t border-l border-b rounded-l h-10 px-7 py-2 text-sm font-medium focus:outline-hidden focus:ring-2 focus:ring-offset-2 ${
|
||||||
qrCodeAdd
|
qrCodeAdd
|
||||||
? "focus:ring-green-800 bg-green-800 text-white"
|
? "focus:ring-green-800 bg-green-800 text-white"
|
||||||
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
|
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
|
||||||
@@ -111,7 +111,7 @@ export const QRDialog = ({
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className={`border-black border-t border-r border-b rounded-r h-10 px-4 py-2 text-sm font-medium focus:outline-hidden focus:ring-2 focus:ring-offset-2 ${
|
className={`border-slate-900 border-t border-r border-b rounded-r h-10 px-4 py-2 text-sm font-medium focus:outline-hidden focus:ring-2 focus:ring-offset-2 ${
|
||||||
!qrCodeAdd
|
!qrCodeAdd
|
||||||
? "focus:ring-green-800 bg-green-800 text-white"
|
? "focus:ring-green-800 bg-green-800 text-white"
|
||||||
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
|
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
|
||||||
@@ -127,6 +127,7 @@ export const QRDialog = ({
|
|||||||
<Input
|
<Input
|
||||||
value={qrCodeUrl}
|
value={qrCodeUrl}
|
||||||
disabled={true}
|
disabled={true}
|
||||||
|
className="dark:text-slate-900"
|
||||||
action={{
|
action={{
|
||||||
icon: ClipboardIcon,
|
icon: ClipboardIcon,
|
||||||
onClick() {
|
onClick() {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ export const RebootDialog = ({
|
|||||||
<div className="flex gap-2 p-4">
|
<div className="flex gap-2 p-4">
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
|
className="dark:text-slate-900"
|
||||||
value={time}
|
value={time}
|
||||||
onChange={(e) => setTime(Number.parseInt(e.target.value))}
|
onChange={(e) => setTime(Number.parseInt(e.target.value))}
|
||||||
action={{
|
action={{
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ export const ShutdownDialog = ({
|
|||||||
type="number"
|
type="number"
|
||||||
value={time}
|
value={time}
|
||||||
onChange={(e) => setTime(Number.parseInt(e.target.value))}
|
onChange={(e) => setTime(Number.parseInt(e.target.value))}
|
||||||
|
className="dark:text-slate-900"
|
||||||
suffix="Minutes"
|
suffix="Minutes"
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const FieldWrapper = ({
|
|||||||
<Label>{label}</Label>
|
<Label>{label}</Label>
|
||||||
<div className="sm:col-span-2">
|
<div className="sm:col-span-2">
|
||||||
<div className="max-w-lg">
|
<div className="max-w-lg">
|
||||||
<p className="text-sm text-gray-500">{description}</p>
|
<p className="text-sm text-slate-500">{description}</p>
|
||||||
<p hidden={valid ?? true} className="text-sm text-red-500">
|
<p hidden={valid ?? true} className="text-sm text-red-500">
|
||||||
{validationText}
|
{validationText}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export const HTTP = ({ closeDialog }: TabElementProps): JSX.Element => {
|
|||||||
<Input
|
<Input
|
||||||
prefix={https ? "https://" : "http://"}
|
prefix={https ? "https://" : "http://"}
|
||||||
placeholder="000.000.000.000 / meshtastic.local"
|
placeholder="000.000.000.000 / meshtastic.local"
|
||||||
className="text-black dark:text-black"
|
className="text-slate-900 dark:text-slate-900"
|
||||||
disabled={connectionInProgress}
|
disabled={connectionInProgress}
|
||||||
{...register("ip")}
|
{...register("ip")}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ export const NodeDetail = ({ node }: NodeDetailProps) => {
|
|||||||
|
|
||||||
<div className="flex mt-2 text-sm">
|
<div className="flex mt-2 text-sm">
|
||||||
<div className="flex items-center grow">
|
<div className="flex items-center grow">
|
||||||
<div className="border-2 border-black rounded-sm px-0.5 mr-1">
|
<div className="border-2 border-slate-900 rounded-sm px-0.5 mr-1">
|
||||||
{Number.isNaN(node.hopsAway) ? "?" : node.hopsAway}
|
{Number.isNaN(node.hopsAway) ? "?" : node.hopsAway}
|
||||||
</div>
|
</div>
|
||||||
<div>{node.hopsAway === 1 ? "Hop" : "Hops"}</div>
|
<div>{node.hopsAway === 1 ? "Hop" : "Hops"}</div>
|
||||||
|
|||||||
@@ -51,11 +51,11 @@ export const ChannelChat = ({
|
|||||||
|
|
||||||
if (!messages?.length) {
|
if (!messages?.length) {
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col h-full w-full container mx-auto">
|
<div className="flex flex-col h-full container mx-auto">
|
||||||
<div className="flex-1 flex items-center justify-center">
|
<div className="flex-1 flex items-center justify-center">
|
||||||
<EmptyState />
|
<EmptyState />
|
||||||
</div>
|
</div>
|
||||||
<div className="shrink-0 p-4 w-full dark:bg-gray-900">
|
<div className="shrink-0 p-4 w-full dark:bg-slate-900">
|
||||||
<MessageInput to={to} channel={channel} maxBytes={200} />
|
<MessageInput to={to} channel={channel} maxBytes={200} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,7 +63,7 @@ export const ChannelChat = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col h-full w-full container mx-auto">
|
<div className="flex flex-col h-full container mx-auto">
|
||||||
<div className="flex-1 overflow-y-auto" ref={scrollContainerRef}>
|
<div className="flex-1 overflow-y-auto" ref={scrollContainerRef}>
|
||||||
<div className="w-full h-full flex flex-col justify-end pl-4 pr-44">
|
<div className="w-full h-full flex flex-col justify-end pl-4 pr-44">
|
||||||
{messages.map((message, index) => {
|
{messages.map((message, index) => {
|
||||||
@@ -81,7 +81,7 @@ export const ChannelChat = ({
|
|||||||
<div ref={messagesEndRef} className="w-full" />
|
<div ref={messagesEndRef} className="w-full" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="shrink-0 mt-2 p-4 w-full dark:bg-gray-900">
|
<div className="shrink-0 mt-2 p-4 w-full dark:bg-slate-900">
|
||||||
<MessageInput to={to} channel={channel} maxBytes={200} />
|
<MessageInput to={to} channel={channel} maxBytes={200} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ const StatusIcon = ({ state, className, ...otherProps }: StatusIconProps) => {
|
|||||||
const isFailed = state === MESSAGE_STATES.FAILED;
|
const isFailed = state === MESSAGE_STATES.FAILED;
|
||||||
const iconClass = cn(
|
const iconClass = cn(
|
||||||
className,
|
className,
|
||||||
"text-gray-500 dark:text-gray-400 w-4 h-4 shrink-0",
|
"text-slate-500 dark:text-slate-400 w-4 h-4 shrink-0",
|
||||||
);
|
);
|
||||||
|
|
||||||
const Icon = STATUS_ICON_MAP[state];
|
const Icon = STATUS_ICON_MAP[state];
|
||||||
@@ -100,7 +100,7 @@ const getMessageTextStyles = (state: MessageState) => {
|
|||||||
"break-words overflow-hidden",
|
"break-words overflow-hidden",
|
||||||
isAcknowledged
|
isAcknowledged
|
||||||
? "text-slate-900 dark:text-white"
|
? "text-slate-900 dark:text-white"
|
||||||
: "text-slate-900 dark:text-gray-400",
|
: "text-slate-900 dark:text-slate-400",
|
||||||
isFailed && "text-red-500 dark:text-red-500",
|
isFailed && "text-red-500 dark:text-red-500",
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -110,10 +110,10 @@ const TimeDisplay = ({
|
|||||||
className,
|
className,
|
||||||
}: { date: Date; className?: string }) => (
|
}: { date: Date; className?: string }) => (
|
||||||
<div className={cn("flex items-center gap-2 shrink-0", className)}>
|
<div className={cn("flex items-center gap-2 shrink-0", className)}>
|
||||||
<span className="text-xs text-gray-500 dark:text-gray-400 font-mono">
|
<span className="text-xs text-slate-500 dark:text-slate-400 font-mono">
|
||||||
{date.toLocaleDateString()}
|
{date.toLocaleDateString()}
|
||||||
</span>
|
</span>
|
||||||
<span className="text-xs text-gray-500 dark:text-gray-400 font-mono">
|
<span className="text-xs text-slate-500 dark:text-slate-400 font-mono">
|
||||||
{date.toLocaleTimeString(undefined, {
|
{date.toLocaleTimeString(undefined, {
|
||||||
hour: "2-digit",
|
hour: "2-digit",
|
||||||
minute: "2-digit",
|
minute: "2-digit",
|
||||||
@@ -149,7 +149,7 @@ export const Message = ({ lastMsgSameUser, message, sender }: MessageProps) => {
|
|||||||
<div className="flex place-items-center gap-2 mb-1">
|
<div className="flex place-items-center gap-2 mb-1">
|
||||||
<Avatar text={messageUser?.shortName} />
|
<Avatar text={messageUser?.shortName} />
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<span className="font-medium text-gray-900 dark:text-white truncate">
|
<span className="font-medium text-slate-900 dark:text-white truncate">
|
||||||
{messageUser?.longName}
|
{messageUser?.longName}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const AccordionTrigger = forwardRef<
|
|||||||
<AccordionPrimitive.Trigger
|
<AccordionPrimitive.Trigger
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex justify-between items-center w-full p-4 border-b border-gray-200 dark:border-gray-800 group",
|
"flex justify-between items-center w-full p-4 border-b border-slat-200 dark:border-slat-800 group",
|
||||||
className,
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
@@ -36,7 +36,7 @@ export const AccordionContent = forwardRef<
|
|||||||
<AccordionPrimitive.Content
|
<AccordionPrimitive.Content
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn(
|
||||||
"p-4 border-b border-gray-200 dark:border-gray-800",
|
"p-4 border-b border-slat-200 dark:border-slat-800",
|
||||||
className,
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const buttonVariants = cva(
|
|||||||
variants: {
|
variants: {
|
||||||
variant: {
|
variant: {
|
||||||
default:
|
default:
|
||||||
"bg-slate-900 text-white dark:bg-white dark:text-slate-900 bg-slate-900 text-white hover:bg-slate-700 hover:text-slate-50",
|
"bg-slate-900 text-white dark:bg-slate-900 hover:dark:bg-slate-700 dark:text-slate-100 hover:bg-slate-800 ",
|
||||||
destructive:
|
destructive:
|
||||||
"bg-red-500 text-white hover:bg-red-600 dark:hover:bg-red-600",
|
"bg-red-500 text-white hover:bg-red-600 dark:hover:bg-red-600",
|
||||||
success:
|
success:
|
||||||
|
|||||||
@@ -44,13 +44,13 @@ const DialogContent = React.forwardRef<
|
|||||||
<DialogPrimitive.Content
|
<DialogPrimitive.Content
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn(
|
||||||
"fixed z-50 grid w-full bg-white max-w-[512px] max-h-[100vh] overflow-y-auto scale-100 gap-4 p-6 opacity-100 animate-in fade-in-90 slide-in-from-bottom-10 sm:max-w-lg sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0",
|
"fixed z-50 grid w-full bg-white max-w-[512px] max-h-[100vh] overflow-y-auto scale-100 gap-4 p-6 opacity-100 animate-in fade-in-90 slide-in-from-bottom-10 sm:max-w-lg sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0 dark:text-slate-900",
|
||||||
className,
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
<DialogPrimitive.Close className="absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900 dark:data-[state=open]:bg-slate-800">
|
<DialogPrimitive.Close className="absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900">
|
||||||
<X className="h-4 w-4" />
|
<X className="h-4 w-4" />
|
||||||
<span className="sr-only">Close</span>
|
<span className="sr-only">Close</span>
|
||||||
</DialogPrimitive.Close>
|
</DialogPrimitive.Close>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { type VariantProps, cva } from "class-variance-authority";
|
|||||||
import type { LucideIcon } from "lucide-react";
|
import type { LucideIcon } from "lucide-react";
|
||||||
|
|
||||||
const inputVariants = cva(
|
const inputVariants = cva(
|
||||||
"flex h-10 w-full rounded-md border bg-transparent py-2 px-3 text-sm placeholder:text-slate-400 focus:outline-hidden focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:text-slate-50 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900",
|
"flex h-10 w-full items-center justify-between rounded-md border border-slate-300 bg-transparent py-2 px-3 text-sm placeholder:text-slate-400 focus:outline-hidden focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-700 dark:text-slate-50 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900 dark:open-dialog:text-slate-900",
|
||||||
{
|
{
|
||||||
variants: {
|
variants: {
|
||||||
variant: {
|
variant: {
|
||||||
@@ -35,7 +35,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|||||||
return (
|
return (
|
||||||
<div className="relative w-full">
|
<div className="relative w-full">
|
||||||
{prefix && (
|
{prefix && (
|
||||||
<span className="inline-flex items-center rounded-l-md bg-gray-100/90 px-3 font-mono text-sm text-slate-600">
|
<span className="inline-flex items-center rounded-l-md bg-slate-100/80 px-3 font-mono text-sm text-slate-600">
|
||||||
{prefix}
|
{prefix}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
@@ -50,14 +50,14 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
{suffix && (
|
{suffix && (
|
||||||
<div className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-9 font-mono text-slate-500">
|
<div className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-9 font-mono text-slate-500 dark:text-slate-900">
|
||||||
<span className="text-gray-100/40 sm:text-sm">{suffix}</span>
|
<span className="text-slate-100/40 sm:text-sm">{suffix}</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{action && (
|
{action && (
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-500 hover:text-gray-400 focus:outline-hidden "
|
className="absolute inset-y-0 right-0 flex items-center pr-3 text-slate-500 hover:text-slate-400 focus:outline-hidden "
|
||||||
onClick={action.onClick}
|
onClick={action.onClick}
|
||||||
>
|
>
|
||||||
<action.icon size={20} />
|
<action.icon size={20} />
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@
|
|||||||
::before,
|
::before,
|
||||||
::backdrop,
|
::backdrop,
|
||||||
::file-selector-button {
|
::file-selector-button {
|
||||||
border-color: var(--color-gray-200, currentColor);
|
border-color: var(--color-slate-200, currentColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import { useMemo } from "react";
|
|||||||
export const Dashboard = () => {
|
export const Dashboard = () => {
|
||||||
const { setConnectDialogOpen, setSelectedDevice } = useAppStore();
|
const { setConnectDialogOpen, setSelectedDevice } = useAppStore();
|
||||||
const { getDevices } = useDeviceStore();
|
const { getDevices } = useDeviceStore();
|
||||||
const { darkMode } = useAppStore();
|
|
||||||
|
|
||||||
const devices = useMemo(() => getDevices(), [getDevices]);
|
const devices = useMemo(() => getDevices(), [getDevices]);
|
||||||
|
|
||||||
@@ -35,7 +34,7 @@ export const Dashboard = () => {
|
|||||||
|
|
||||||
<div className="flex h-[450px] rounded-md border border-dashed border-slate-200 p-3 dark:border-slate-700">
|
<div className="flex h-[450px] rounded-md border border-dashed border-slate-200 p-3 dark:border-slate-700">
|
||||||
{devices.length ? (
|
{devices.length ? (
|
||||||
<ul className="grow divide-y divide-gray-200">
|
<ul className="grow divide-y divide-slate-200">
|
||||||
{devices.map((device) => {
|
{devices.map((device) => {
|
||||||
return (
|
return (
|
||||||
<li key={device.id}>
|
<li key={device.id}>
|
||||||
@@ -73,10 +72,10 @@ export const Dashboard = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-2 sm:flex sm:justify-between">
|
<div className="mt-2 sm:flex sm:justify-between">
|
||||||
<div className="flex gap-2 text-sm text-gray-500">
|
<div className="flex gap-2 text-sm text-slate-500">
|
||||||
<UsersIcon
|
<UsersIcon
|
||||||
size={20}
|
size={20}
|
||||||
className="text-gray-400"
|
className="text-slate-400"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
{device.nodes.size === 0 ? 0 : device.nodes.size - 1}
|
{device.nodes.size === 0 ? 0 : device.nodes.size - 1}
|
||||||
@@ -93,7 +92,7 @@ export const Dashboard = () => {
|
|||||||
<H3>No Devices</H3>
|
<H3>No Devices</H3>
|
||||||
<Subtle>Connect at least one device to get started</Subtle>
|
<Subtle>Connect at least one device to get started</Subtle>
|
||||||
<Button
|
<Button
|
||||||
className="gap-2"
|
className="gap-2 dark:bg-white dark:text-slate-900 dark:hover:text-slate-100"
|
||||||
variant={"default"}
|
variant={"default"}
|
||||||
onClick={() => setConnectDialogOpen(true)}
|
onClick={() => setConnectDialogOpen(true)}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export const MessagesPage = () => {
|
|||||||
placeholder="Search nodes..."
|
placeholder="Search nodes..."
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={(e) => setSearchTerm(e.target.value)}
|
onChange={(e) => setSearchTerm(e.target.value)}
|
||||||
className="w-full p-2 border border-gray-300 rounded-sm bg-white text-slate-900"
|
className="w-full p-2 border border-slate-300 rounded-sm bg-white text-slate-900"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-4">
|
<div className="flex flex-col gap-4">
|
||||||
|
|||||||
+1
-1
@@ -79,7 +79,7 @@ const NodesPage = (): JSX.Element => {
|
|||||||
placeholder="Search nodes..."
|
placeholder="Search nodes..."
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={(e) => setSearchTerm(e.target.value)}
|
onChange={(e) => setSearchTerm(e.target.value)}
|
||||||
className="w-full p-2 border border-gray-300 rounded-sm bg-white text-slate-900"
|
className="w-full p-2 border border-slate-300 rounded-sm bg-white text-slate-900"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="overflow-y-auto h-full">
|
<div className="overflow-y-auto h-full">
|
||||||
|
|||||||
Reference in New Issue
Block a user