Skip to content

Commit 65fabff

Browse files
codexclaude
andcommitted
refactor(theme): normalize inline rgba values to infinite-night/* Tailwind tokens
Replace ~50 instances of text-[rgba(7,16,55,0.XX)] / border-[rgba(...)] with text-infinite-night/55, /40, /20, /80 using Tailwind's opacity modifier syntax. Also fix hub card "Import →" hover states: light:group-hover:bg-slate-300 (cool grey) → light:group-hover:bg-[#E5DFC9] (warm beige, matches palette). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5b722a3 commit 65fabff

File tree

32 files changed

+62
-62
lines changed

32 files changed

+62
-62
lines changed

frontend/src/components/Modals/Password/MultiUserAuth.jsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const RecoveryForm = ({ onSubmit, setShowRecoveryForm }) => {
4141
{t("login.password-reset.title")}
4242
</h3>
4343
</div>
44-
<p className="text-doctor/55 light:text-[rgba(7,16,55,0.55)] text-sm text-center">
44+
<p className="text-doctor/55 light:text-infinite-night/55 text-sm text-center">
4545
{t("login.password-reset.description")}
4646
</p>
4747
</div>
@@ -55,7 +55,7 @@ const RecoveryForm = ({ onSubmit, setShowRecoveryForm }) => {
5555
<input
5656
name="username"
5757
type="text"
58-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
58+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
5959
value={username}
6060
onChange={(e) => setUsername(e.target.value)}
6161
required
@@ -71,7 +71,7 @@ const RecoveryForm = ({ onSubmit, setShowRecoveryForm }) => {
7171
key={index}
7272
type="text"
7373
name={`recoveryCode${index + 1}`}
74-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
74+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
7575
value={code}
7676
onChange={(e) =>
7777
handleRecoveryCodeChange(index, e.target.value)
@@ -92,7 +92,7 @@ const RecoveryForm = ({ onSubmit, setShowRecoveryForm }) => {
9292
</button>
9393
<button
9494
type="button"
95-
className="text-zinc-200 light:text-[rgba(7,16,55,0.55)] hover:text-sky-300 light:hover:text-burnt-earth hover:underline text-sm flex gap-x-1"
95+
className="text-zinc-200 light:text-infinite-night/55 hover:text-sky-300 light:hover:text-burnt-earth hover:underline text-sm flex gap-x-1"
9696
onClick={() => setShowRecoveryForm(false)}
9797
>
9898
{t("login.password-reset.back-to-login")}
@@ -123,7 +123,7 @@ const ResetPasswordForm = ({ onSubmit }) => {
123123
Reset Password
124124
</h3>
125125
</div>
126-
<p className="text-doctor/55 light:text-[rgba(7,16,55,0.55)] text-sm text-center">
126+
<p className="text-doctor/55 light:text-infinite-night/55 text-sm text-center">
127127
Enter your new password.
128128
</p>
129129
</div>
@@ -137,7 +137,7 @@ const ResetPasswordForm = ({ onSubmit }) => {
137137
<input
138138
type="password"
139139
name="newPassword"
140-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
140+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
141141
value={newPassword}
142142
onChange={(e) => setNewPassword(e.target.value)}
143143
required
@@ -150,7 +150,7 @@ const ResetPasswordForm = ({ onSubmit }) => {
150150
<input
151151
type="password"
152152
name="confirmPassword"
153-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
153+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
154154
value={confirmPassword}
155155
onChange={(e) => setConfirmPassword(e.target.value)}
156156
required
@@ -296,7 +296,7 @@ export default function MultiUserAuth() {
296296
{t("login.multi-user.welcome")}
297297
</h3>
298298
</div>
299-
<p className="text-doctor/55 light:text-[rgba(7,16,55,0.55)] text-sm text-center">
299+
<p className="text-doctor/55 light:text-infinite-night/55 text-sm text-center">
300300
{t("login.sign-in", { appName: customAppName || "Lovora" })}
301301
</p>
302302
</div>
@@ -310,7 +310,7 @@ export default function MultiUserAuth() {
310310
<input
311311
name="username"
312312
type="text"
313-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
313+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
314314
required={true}
315315
autoComplete="off"
316316
/>
@@ -322,7 +322,7 @@ export default function MultiUserAuth() {
322322
<input
323323
name="password"
324324
type="password"
325-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
325+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
326326
required={true}
327327
autoComplete="off"
328328
/>
@@ -342,7 +342,7 @@ export default function MultiUserAuth() {
342342
</button>
343343
<button
344344
type="button"
345-
className="text-zinc-200 light:text-[rgba(7,16,55,0.55)] hover:text-sky-300 light:hover:text-burnt-earth hover:underline text-sm flex gap-x-1"
345+
className="text-zinc-200 light:text-infinite-night/55 hover:text-sky-300 light:hover:text-burnt-earth hover:underline text-sm flex gap-x-1"
346346
onClick={handleResetPassword}
347347
>
348348
{t("login.multi-user.forgot-pass")}?

frontend/src/components/Modals/Password/SingleUserAuth.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default function SingleUserAuth() {
8080
{t("login.multi-user.welcome")}
8181
</h3>
8282
</div>
83-
<p className="text-doctor/55 light:text-[rgba(7,16,55,0.55)] text-sm text-center">
83+
<p className="text-doctor/55 light:text-infinite-night/55 text-sm text-center">
8484
{t("login.sign-in", { appName: customAppName || "Lovora" })}
8585
</p>
8686
</div>
@@ -94,7 +94,7 @@ export default function SingleUserAuth() {
9494
<input
9595
name="password"
9696
type="password"
97-
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-[rgba(7,16,55,0.55)] text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
97+
className="border-none bg-zinc-800 light:bg-divine-pleasure text-zinc-200 light:text-infinite-night/55 text-sm rounded-lg p-2.5 w-[300px] h-[34px] focus:outline-none focus:ring-1 focus:ring-sky-300"
9898
required={true}
9999
autoComplete="off"
100100
/>

frontend/src/components/Sidebar/ActiveWorkspaces/ThreadContainer/ThreadItem/index.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default function ThreadItem({
5050
className={`${
5151
isActive
5252
? "border-l-2 border-b-2 border-white light:border-infinite-night z-[2]"
53-
: "border-l border-b border-zinc-500 light:border-[rgba(7,16,55,0.20)] z-[1]"
53+
: "border-l border-b border-zinc-500 light:border-infinite-night/20 z-[1]"
5454
} h-[50%] absolute top-0 left-3 rounded-bl-lg`}
5555
></div>
5656
{/* Downstroke border for next item */}
@@ -60,7 +60,7 @@ export default function ThreadItem({
6060
className={`${
6161
idx <= activeIdx && !isActive
6262
? "border-l-2 border-white light:border-infinite-night z-[2]"
63-
: "border-l border-zinc-500 light:border-[rgba(7,16,55,0.20)] z-[1]"
63+
: "border-l border-zinc-500 light:border-infinite-night/20 z-[1]"
6464
} h-[100%] absolute top-0 left-3`}
6565
></div>
6666
)}
@@ -77,7 +77,7 @@ export default function ThreadItem({
7777
<div className="w-full flex justify-between">
7878
<div className="w-full pl-2 py-1">
7979
<p
80-
className={`text-left text-sm text-slate-400/50 light:text-[rgba(7,16,55,0.55)] italic`}
80+
className={`text-left text-sm text-slate-400/50 light:text-infinite-night/55 italic`}
8181
>
8282
deleted thread
8383
</p>

frontend/src/components/Sidebar/ActiveWorkspaces/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export default function ActiveWorkspaces() {
174174
className={`group/upload border-none rounded-md flex items-center justify-center ml-auto p-[2px] ${isActive ? "hover:bg-zinc-500 light:hover:bg-sky-800/30" : "hover:bg-zinc-500 light:hover:bg-slate-400"}`}
175175
>
176176
<UploadSimple
177-
className={`h-[20px] w-[20px] ${isActive ? "text-doctor/55 hover:text-white light:text-[#071037]/80 light:group-hover/upload:text-infinite-night" : "text-doctor/55 hover:text-white light:text-[rgba(7,16,55,0.55)] light:group-hover/upload:text-infinite-night"}`}
177+
className={`h-[20px] w-[20px] ${isActive ? "text-doctor/55 hover:text-white light:text-infinite-night/80 light:group-hover/upload:text-infinite-night" : "text-doctor/55 hover:text-white light:text-infinite-night/55 light:group-hover/upload:text-infinite-night"}`}
178178
/>
179179
</button>
180180
<button
@@ -199,7 +199,7 @@ export default function ActiveWorkspaces() {
199199
? "#46C8FF"
200200
: undefined
201201
}
202-
className={`h-[20px] w-[20px] ${isActive ? "text-doctor/55 hover:text-white light:text-[#071037]/80 light:group-hover/gear:text-infinite-night" : "text-doctor/55 hover:text-white light:text-[rgba(7,16,55,0.55)] light:group-hover/gear:text-infinite-night"}`}
202+
className={`h-[20px] w-[20px] ${isActive ? "text-doctor/55 hover:text-white light:text-infinite-night/80 light:group-hover/gear:text-infinite-night" : "text-doctor/55 hover:text-white light:text-infinite-night/55 light:group-hover/gear:text-infinite-night"}`}
203203
/>
204204
</button>
205205
</div>

frontend/src/components/Sidebar/SearchBox/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ function ShortWidthNewWorkspaceButton({ user, showNewWsModal }) {
204204
<Plus
205205
size={16}
206206
weight="bold"
207-
className="text-black light:text-[rgba(7,16,55,0.55)]"
207+
className="text-black light:text-infinite-night/55"
208208
/>
209209
</button>
210210
<Tooltip

frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/Citation/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export function CitationDetailModal({
174174
)}
175175
</div>
176176
{references > 1 && (
177-
<p className="text-xs text-doctor/55 light:text-[rgba(7,16,55,0.55)] mt-2">
177+
<p className="text-xs text-doctor/55 light:text-infinite-night/55 mt-2">
178178
Referenced {references} times.
179179
</p>
180180
)}

frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/ActionMenu/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function ActionMenu({ chatId, forkThread, isEditing, role }) {
4040
<div className="mt-2 -ml-0.5 relative" ref={menuRef}>
4141
<button
4242
onClick={toggleMenu}
43-
className="border-none text-doctor/75 light:text-[rgba(7,16,55,0.55)] transition-colors duration-200"
43+
className="border-none text-doctor/75 light:text-infinite-night/55 transition-colors duration-200"
4444
data-tooltip-id="action-menu"
4545
data-tooltip-content={t("chat_window.more_actions")}
4646
aria-label={t("chat_window.more_actions")}

frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/EditMessage/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function EditMessageAction({ chatId = null, role, isEditing }) {
5353
? t("chat_window.edit_prompt")
5454
: t("chat_window.edit_response")
5555
} `}
56-
className="border-none text-doctor/75 light:text-[rgba(7,16,55,0.55)]"
56+
className="border-none text-doctor/75 light:text-infinite-night/55"
5757
aria-label={`Edit ${role === "user" ? t("chat_window.edit_prompt") : t("chat_window.edit_response")}`}
5858
>
5959
<Pencil size={21} className="mb-1" />

frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/RenderMetrics/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export default function RenderMetrics({ metrics = {} }) {
131131
}
132132
className={`border-none flex md:justify-end items-center gap-x-[8px] -ml-7 ${showMetricsAutomatically ? "opacity-100" : "opacity-0"} md:group-hover:opacity-100 transition-all duration-300`}
133133
>
134-
<p className="cursor-pointer text-xs font-mono text-doctor/55 light:text-[rgba(7,16,55,0.55)]">
134+
<p className="cursor-pointer text-xs font-mono text-doctor/55 light:text-infinite-night/55">
135135
{buildMetricsString(metrics)}
136136
</p>
137137
</button>

frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/TTSButton/asyncTts.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export default function AsyncTTSMessage({ slug, chatId }) {
6565
? t("pause_tts_speech_message")
6666
: t("chat_window.tts_speak_message")
6767
}
68-
className="border-none text-doctor/75 light:text-[rgba(7,16,55,0.55)]"
68+
className="border-none text-doctor/75 light:text-infinite-night/55"
6969
aria-label={speaking ? "Pause speech" : "Speak message"}
7070
>
7171
{speaking ? (

0 commit comments

Comments
 (0)