fix: replace broken border-hard/50 opacity with subtle white borders
Tailwind can't decompose CSS variables for opacity modifiers, so border-border-hard/50 fell back to white currentColor. Replaced with border-white/[0.06] on image attachments, code blocks, and action toolbar. Also applied frosted glass material to message action toolbar.
This commit is contained in:
@@ -80,7 +80,7 @@ function CodeBlock({ language, code }: { language: string; code: string }) {
|
|||||||
// 'text' means a bare fenced block with no language — render without highlighting
|
// 'text' means a bare fenced block with no language — render without highlighting
|
||||||
if (language === 'text') {
|
if (language === 'text') {
|
||||||
return (
|
return (
|
||||||
<pre className="mt-1 p-3 bg-surface-elevated border border-border-hard/50 rounded text-[0.875rem] leading-[1.125rem] font-mono overflow-x-auto whitespace-pre">
|
<pre className="mt-1 p-3 bg-surface-elevated border border-white/[0.06] rounded text-[0.875rem] leading-[1.125rem] font-mono overflow-x-auto whitespace-pre">
|
||||||
<code>{code}</code>
|
<code>{code}</code>
|
||||||
</pre>
|
</pre>
|
||||||
);
|
);
|
||||||
@@ -90,7 +90,7 @@ function CodeBlock({ language, code }: { language: string; code: string }) {
|
|||||||
<Highlight theme={aetherTheme} code={code} language={language}>
|
<Highlight theme={aetherTheme} code={code} language={language}>
|
||||||
{({ style, tokens, getLineProps, getTokenProps }) => (
|
{({ style, tokens, getLineProps, getTokenProps }) => (
|
||||||
<pre
|
<pre
|
||||||
className="mt-1 rounded border border-border-hard/50 text-[0.875rem] leading-[1.125rem] font-mono overflow-x-auto"
|
className="mt-1 rounded border border-white/[0.06] text-[0.875rem] leading-[1.125rem] font-mono overflow-x-auto"
|
||||||
style={{ ...style, padding: '0.625rem 0.75rem', margin: 0 }}
|
style={{ ...style, padding: '0.625rem 0.75rem', margin: 0 }}
|
||||||
>
|
>
|
||||||
{tokens.map((line, i) => {
|
{tokens.map((line, i) => {
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ export function Message({ message, isCompact, isFirstInGroup }: MessageProps) {
|
|||||||
const isImage = att.mimetype.startsWith('image/');
|
const isImage = att.mimetype.startsWith('image/');
|
||||||
if (isImage) {
|
if (isImage) {
|
||||||
return (
|
return (
|
||||||
<div key={att.id} className="max-w-fit mt-1 rounded-lg overflow-hidden border border-border-hard/50 bg-surface-base/20">
|
<div key={att.id} className="max-w-fit mt-1 rounded-lg overflow-hidden border border-white/[0.06]">
|
||||||
<img
|
<img
|
||||||
src={`/api/uploads/${att.filename}`}
|
src={`/api/uploads/${att.filename}`}
|
||||||
alt={att.originalName}
|
alt={att.originalName}
|
||||||
@@ -312,8 +312,8 @@ export function Message({ message, isCompact, isFirstInGroup }: MessageProps) {
|
|||||||
|
|
||||||
{/* Action buttons on hover */}
|
{/* Action buttons on hover */}
|
||||||
{isHovered && !isEditing && (
|
{isHovered && !isEditing && (
|
||||||
<div className="absolute -top-[18px] right-4 flex items-center bg-surface-chat border border-border-hard/50 rounded-[4px] shadow-elevation-low overflow-hidden z-10 h-8">
|
<div className="absolute -top-[18px] right-4 flex items-center glass rounded-[10px] overflow-hidden z-10 h-8">
|
||||||
<div className="flex items-center px-1 border-r border-border-hard/50 h-full">
|
<div className="flex items-center px-1 border-r border-white/[0.06] h-full">
|
||||||
{['👍', '❤️', '😂', '😮'].map(emoji => (
|
{['👍', '❤️', '😂', '😮'].map(emoji => (
|
||||||
<button
|
<button
|
||||||
key={emoji}
|
key={emoji}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export function MessageList({ channelId }: MessageListProps) {
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
ref={containerRef}
|
ref={containerRef}
|
||||||
className="flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin"
|
className="flex-1 overflow-y-auto overflow-x-hidden no-scrollbar"
|
||||||
onScroll={handleScroll}
|
onScroll={handleScroll}
|
||||||
>
|
>
|
||||||
{isLoadingMore && (
|
{isLoadingMore && (
|
||||||
|
|||||||
Reference in New Issue
Block a user