Skip to content

Commit fe2360b

Browse files
authored
Merge pull request meshtastic#466 from danditomaso/fix/tailwind-4-styling-updates
dark mode styling updates
2 parents 3db2ede + d8bf2f7 commit fe2360b

19 files changed

+47
-40
lines changed

src/components/Dialog/DeviceNameDialog.tsx

+7-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export interface DeviceNameDialogProps {
2626
export const DeviceNameDialog = ({
2727
open,
2828
onOpenChange,
29-
}: DeviceNameDialogProps): JSX.Element => {
29+
}: DeviceNameDialogProps) => {
3030
const { hardware, nodes, connection } = useDevice();
3131

3232
const myNode = nodes.get(hardware.myNodeNum);
@@ -60,9 +60,13 @@ export const DeviceNameDialog = ({
6060
<div className="gap-4">
6161
<form onSubmit={onSubmit}>
6262
<Label>Long Name</Label>
63-
<Input {...register("longName")} />
63+
<Input className="dark:text-slte-900" {...register("longName")} />
6464
<Label>Short Name</Label>
65-
<Input maxLength={4} {...register("shortName")} />
65+
<Input
66+
className="dark:text-slte-900"
67+
maxLength={4}
68+
{...register("shortName")}
69+
/>
6670
</form>
6771
</div>
6872
<DialogFooter>

src/components/Dialog/ImportDialog.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ export const ImportDialog = ({
104104
<Input
105105
value={importDialogInput}
106106
suffix={validUrl ? "✅" : "❌"}
107+
className="dark:text-slate-900"
107108
onChange={(e) => {
108109
setImportDialogInput(e.target.value);
109110
}}

src/components/Dialog/NodeDetailsDialog.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ export const NodeDetailsDialog = ({
4444
<DialogFooter>
4545
<div className="w-full">
4646
<DeviceImage
47-
className="w-32 h-32 mx-auto rounded-lg border-4 border-gray-200 dark:border-gray-800"
47+
className="w-32 h-32 mx-auto rounded-lg border-4 border-slate-200 dark:border-slate-800"
4848
deviceType={
4949
Protobuf.Mesh.HardwareModel[device.user?.hwModel ?? 0]
5050
}
5151
/>
52-
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
52+
<div className="bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
5353
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
5454
Details:
5555
</p>
@@ -78,7 +78,7 @@ export const NodeDetailsDialog = ({
7878
</div>
7979

8080
{device.position ? (
81-
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
81+
<div className="mt-5 bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
8282
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
8383
Position:
8484
</p>
@@ -103,7 +103,7 @@ export const NodeDetailsDialog = ({
103103
) : null}
104104

105105
{device.deviceMetrics ? (
106-
<div className="mt-5 bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
106+
<div className="mt-5 bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
107107
<p className="text-lg font-semibold text-slate-900 dark:text-slate-50">
108108
Device Metrics:
109109
</p>
@@ -138,7 +138,7 @@ export const NodeDetailsDialog = ({
138138
) : null}
139139

140140
{device ? (
141-
<div className="mt-5 w-full max-w-[464px] bg-gray-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
141+
<div className="mt-5 w-full max-w-[464px] bg-slate-100 dark:bg-slate-800 p-3 rounded-lg mt-3">
142142
<Accordion className="AccordionRoot" type="single" collapsible>
143143
<AccordionItem className="AccordionItem" value="item-1">
144144
<AccordionTrigger>

src/components/Dialog/QRDialog.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export const QRDialog = ({
100100
<div className="flex justify-center">
101101
<button
102102
type="button"
103-
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 ${
103+
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 ${
104104
qrCodeAdd
105105
? "focus:ring-green-800 bg-green-800 text-white"
106106
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
@@ -111,7 +111,7 @@ export const QRDialog = ({
111111
</button>
112112
<button
113113
type="button"
114-
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 ${
114+
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 ${
115115
!qrCodeAdd
116116
? "focus:ring-green-800 bg-green-800 text-white"
117117
: "focus:ring-slate-400 bg-slate-400 hover:bg-green-600"
@@ -127,6 +127,7 @@ export const QRDialog = ({
127127
<Input
128128
value={qrCodeUrl}
129129
disabled={true}
130+
className="dark:text-slate-900"
130131
action={{
131132
icon: ClipboardIcon,
132133
onClick() {

src/components/Dialog/RebootDialog.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export const RebootDialog = ({
3636
<div className="flex gap-2 p-4">
3737
<Input
3838
type="number"
39+
className="dark:text-slate-900"
3940
value={time}
4041
onChange={(e) => setTime(Number.parseInt(e.target.value))}
4142
action={{

src/components/Dialog/ShutdownDialog.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export const ShutdownDialog = ({
3939
type="number"
4040
value={time}
4141
onChange={(e) => setTime(Number.parseInt(e.target.value))}
42+
className="dark:text-slate-900"
4243
suffix="Minutes"
4344
/>
4445
<Button

src/components/Form/FormWrapper.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const FieldWrapper = ({
2222
<Label>{label}</Label>
2323
<div className="sm:col-span-2">
2424
<div className="max-w-lg">
25-
<p className="text-sm text-gray-500">{description}</p>
25+
<p className="text-sm text-slate-500">{description}</p>
2626
<p hidden={valid ?? true} className="text-sm text-red-500">
2727
{validationText}
2828
</p>

src/components/PageComponents/Connect/HTTP.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export const HTTP = ({ closeDialog }: TabElementProps): JSX.Element => {
5757
<Input
5858
prefix={https ? "https://" : "http://"}
5959
placeholder="000.000.000.000 / meshtastic.local"
60-
className="text-black dark:text-black"
60+
className="text-slate-900 dark:text-slate-900"
6161
disabled={connectionInProgress}
6262
{...register("ip")}
6363
/>

src/components/PageComponents/Map/NodeDetail.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export const NodeDetail = ({ node }: NodeDetailProps) => {
121121

122122
<div className="flex mt-2 text-sm">
123123
<div className="flex items-center grow">
124-
<div className="border-2 border-black rounded-sm px-0.5 mr-1">
124+
<div className="border-2 border-slate-900 rounded-sm px-0.5 mr-1">
125125
{Number.isNaN(node.hopsAway) ? "?" : node.hopsAway}
126126
</div>
127127
<div>{node.hopsAway === 1 ? "Hop" : "Hops"}</div>

src/components/PageComponents/Messages/ChannelChat.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,19 @@ export const ChannelChat = ({
5151

5252
if (!messages?.length) {
5353
return (
54-
<div className="flex flex-col h-full w-full container mx-auto">
54+
<div className="flex flex-col h-full container mx-auto">
5555
<div className="flex-1 flex items-center justify-center">
5656
<EmptyState />
5757
</div>
58-
<div className="shrink-0 p-4 w-full dark:bg-gray-900">
58+
<div className="shrink-0 p-4 w-full dark:bg-slate-900">
5959
<MessageInput to={to} channel={channel} maxBytes={200} />
6060
</div>
6161
</div>
6262
);
6363
}
6464

6565
return (
66-
<div className="flex flex-col h-full w-full container mx-auto">
66+
<div className="flex flex-col h-full container mx-auto">
6767
<div className="flex-1 overflow-y-auto" ref={scrollContainerRef}>
6868
<div className="w-full h-full flex flex-col justify-end pl-4 pr-44">
6969
{messages.map((message, index) => {
@@ -81,7 +81,7 @@ export const ChannelChat = ({
8181
<div ref={messagesEndRef} className="w-full" />
8282
</div>
8383
</div>
84-
<div className="shrink-0 mt-2 p-4 w-full dark:bg-gray-900">
84+
<div className="shrink-0 mt-2 p-4 w-full dark:bg-slate-900">
8585
<MessageInput to={to} channel={channel} maxBytes={200} />
8686
</div>
8787
</div>

src/components/PageComponents/Messages/Message.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const StatusIcon = ({ state, className, ...otherProps }: StatusIconProps) => {
7676
const isFailed = state === MESSAGE_STATES.FAILED;
7777
const iconClass = cn(
7878
className,
79-
"text-gray-500 dark:text-gray-400 w-4 h-4 shrink-0",
79+
"text-slate-500 dark:text-slate-400 w-4 h-4 shrink-0",
8080
);
8181

8282
const Icon = STATUS_ICON_MAP[state];
@@ -100,7 +100,7 @@ const getMessageTextStyles = (state: MessageState) => {
100100
"break-words overflow-hidden",
101101
isAcknowledged
102102
? "text-slate-900 dark:text-white"
103-
: "text-slate-900 dark:text-gray-400",
103+
: "text-slate-900 dark:text-slate-400",
104104
isFailed && "text-red-500 dark:text-red-500",
105105
);
106106
};
@@ -110,10 +110,10 @@ const TimeDisplay = ({
110110
className,
111111
}: { date: Date; className?: string }) => (
112112
<div className={cn("flex items-center gap-2 shrink-0", className)}>
113-
<span className="text-xs text-gray-500 dark:text-gray-400 font-mono">
113+
<span className="text-xs text-slate-500 dark:text-slate-400 font-mono">
114114
{date.toLocaleDateString()}
115115
</span>
116-
<span className="text-xs text-gray-500 dark:text-gray-400 font-mono">
116+
<span className="text-xs text-slate-500 dark:text-slate-400 font-mono">
117117
{date.toLocaleTimeString(undefined, {
118118
hour: "2-digit",
119119
minute: "2-digit",
@@ -149,7 +149,7 @@ export const Message = ({ lastMsgSameUser, message, sender }: MessageProps) => {
149149
<div className="flex place-items-center gap-2 mb-1">
150150
<Avatar text={messageUser?.shortName} />
151151
<div className="flex flex-col">
152-
<span className="font-medium text-gray-900 dark:text-white truncate">
152+
<span className="font-medium text-slate-900 dark:text-white truncate">
153153
{messageUser?.longName}
154154
</span>
155155
</div>

src/components/UI/Accordion.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const AccordionTrigger = forwardRef<
1616
<AccordionPrimitive.Trigger
1717
ref={ref}
1818
className={cn(
19-
"flex justify-between items-center w-full p-4 border-b border-gray-200 dark:border-gray-800 group",
19+
"flex justify-between items-center w-full p-4 border-b border-slat-200 dark:border-slat-800 group",
2020
className,
2121
)}
2222
{...props}
@@ -36,7 +36,7 @@ export const AccordionContent = forwardRef<
3636
<AccordionPrimitive.Content
3737
ref={ref}
3838
className={cn(
39-
"p-4 border-b border-gray-200 dark:border-gray-800",
39+
"p-4 border-b border-slat-200 dark:border-slat-800",
4040
className,
4141
)}
4242
{...props}

src/components/UI/Button.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const buttonVariants = cva(
99
variants: {
1010
variant: {
1111
default:
12-
"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",
12+
"bg-slate-900 text-white dark:bg-slate-900 hover:dark:bg-slate-700 dark:text-slate-100 hover:bg-slate-800 ",
1313
destructive:
1414
"bg-red-500 text-white hover:bg-red-600 dark:hover:bg-red-600",
1515
success:

src/components/UI/Dialog.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ const DialogContent = React.forwardRef<
4444
<DialogPrimitive.Content
4545
ref={ref}
4646
className={cn(
47-
"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",
47+
"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",
4848
className,
4949
)}
5050
{...props}
5151
>
5252
{children}
53-
<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">
53+
<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">
5454
<X className="h-4 w-4" />
5555
<span className="sr-only">Close</span>
5656
</DialogPrimitive.Close>

src/components/UI/Input.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { type VariantProps, cva } from "class-variance-authority";
55
import type { LucideIcon } from "lucide-react";
66

77
const inputVariants = cva(
8-
"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",
8+
"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",
99
{
1010
variants: {
1111
variant: {
@@ -35,7 +35,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
3535
return (
3636
<div className="relative w-full">
3737
{prefix && (
38-
<span className="inline-flex items-center rounded-l-md bg-gray-100/90 px-3 font-mono text-sm text-slate-600">
38+
<span className="inline-flex items-center rounded-l-md bg-slate-100/80 px-3 font-mono text-sm text-slate-600">
3939
{prefix}
4040
</span>
4141
)}
@@ -50,14 +50,14 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
5050
{...props}
5151
/>
5252
{suffix && (
53-
<div className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-9 font-mono text-slate-500">
54-
<span className="text-gray-100/40 sm:text-sm">{suffix}</span>
53+
<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">
54+
<span className="text-slate-100/40 sm:text-sm">{suffix}</span>
5555
</div>
5656
)}
5757
{action && (
5858
<button
5959
type="button"
60-
className="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-500 hover:text-gray-400 focus:outline-hidden "
60+
className="absolute inset-y-0 right-0 flex items-center pr-3 text-slate-500 hover:text-slate-400 focus:outline-hidden "
6161
onClick={action.onClick}
6262
>
6363
<action.icon size={20} />

src/index.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
::before,
7575
::backdrop,
7676
::file-selector-button {
77-
border-color: var(--color-gray-200, currentColor);
77+
border-color: var(--color-slate-200, currentColor);
7878
}
7979
}
8080

src/pages/Dashboard/index.tsx

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { useMemo } from "react";
1717
export const Dashboard = () => {
1818
const { setConnectDialogOpen, setSelectedDevice } = useAppStore();
1919
const { getDevices } = useDeviceStore();
20-
const { darkMode } = useAppStore();
2120

2221
const devices = useMemo(() => getDevices(), [getDevices]);
2322

@@ -35,7 +34,7 @@ export const Dashboard = () => {
3534

3635
<div className="flex h-[450px] rounded-md border border-dashed border-slate-200 p-3 dark:border-slate-700">
3736
{devices.length ? (
38-
<ul className="grow divide-y divide-gray-200">
37+
<ul className="grow divide-y divide-slate-200">
3938
{devices.map((device) => {
4039
return (
4140
<li key={device.id}>
@@ -73,10 +72,10 @@ export const Dashboard = () => {
7372
</div>
7473
</div>
7574
<div className="mt-2 sm:flex sm:justify-between">
76-
<div className="flex gap-2 text-sm text-gray-500">
75+
<div className="flex gap-2 text-sm text-slate-500">
7776
<UsersIcon
7877
size={20}
79-
className="text-gray-400"
78+
className="text-slate-400"
8079
aria-hidden="true"
8180
/>
8281
{device.nodes.size === 0 ? 0 : device.nodes.size - 1}
@@ -93,7 +92,7 @@ export const Dashboard = () => {
9392
<H3>No Devices</H3>
9493
<Subtle>Connect at least one device to get started</Subtle>
9594
<Button
96-
className="gap-2"
95+
className="gap-2 dark:bg-white dark:text-slate-900 dark:hover:text-slate-100"
9796
variant={"default"}
9897
onClick={() => setConnectDialogOpen(true)}
9998
>

src/pages/Messages.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export const MessagesPage = () => {
6262
placeholder="Search nodes..."
6363
value={searchTerm}
6464
onChange={(e) => setSearchTerm(e.target.value)}
65-
className="w-full p-2 border border-gray-300 rounded-sm bg-white text-slate-900"
65+
className="w-full p-2 border border-slate-300 rounded-sm bg-white text-slate-900"
6666
/>
6767
</div>
6868
<div className="flex flex-col gap-4">

src/pages/Nodes.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const NodesPage = (): JSX.Element => {
7979
placeholder="Search nodes..."
8080
value={searchTerm}
8181
onChange={(e) => setSearchTerm(e.target.value)}
82-
className="w-full p-2 border border-gray-300 rounded-sm bg-white text-slate-900"
82+
className="w-full p-2 border border-slate-300 rounded-sm bg-white text-slate-900"
8383
/>
8484
</div>
8585
<div className="overflow-y-auto h-full">

0 commit comments

Comments
 (0)