fix(web): lighten heavy fills and drop template filler
Checked controls, progress, and update chips use the same charcoal as switches. Template actions and attachment filters no longer use a solid black fill, and the template page drops its two explanatory lines.
This commit is contained in:
1 parent
31c2b2f2c9
commit
1fcdb67049
15 files changed
+14
-25
No files matched your search
@@ -236,7 +236,7 @@ export const AssetsPane = ({ onClose, repository, onOpenExecutionCenter }: Asset
|
||||
onClick={() => setFilterType(type)}
|
||||
className={`rounded-lg border border-transparent px-3 py-1.5 text-xs transition-colors ${
|
||||
filterType === type
|
||||
? "bg-slate-950 font-semibold text-slate-50"
|
||||
? "bg-workspace-selection font-semibold text-slate-950"
|
||||
: "font-medium text-slate-600 hover:bg-slate-100"
|
||||
}`}
|
||||
>
|
||||
|
||||
@@ -3795,7 +3795,7 @@ const RichEditorPane = ({
|
||||
</IconTooltip>
|
||||
{mobileEditingActive && !readOnly && (
|
||||
<button
|
||||
className="inline-flex h-8 items-center justify-center rounded-full bg-slate-950 px-3 text-xs font-semibold text-white transition hover:bg-slate-800 disabled:bg-slate-200 disabled:text-slate-500 sm:hidden"
|
||||
className="inline-flex h-8 items-center justify-center rounded-full bg-slate-700 px-3 text-xs font-semibold text-slate-50 transition hover:bg-slate-800 disabled:bg-slate-200 disabled:text-slate-500 sm:hidden"
|
||||
type="button"
|
||||
disabled={mobileDoneDisabled}
|
||||
onClick={handleMobileDone}
|
||||
@@ -4171,7 +4171,7 @@ const RichEditorPane = ({
|
||||
/>
|
||||
<div className="absolute right-3 top-3 flex gap-2">
|
||||
<button
|
||||
className="rounded-full border border-slate-900 bg-slate-900 px-3 py-1.5 text-sm font-semibold text-slate-50 shadow-sm"
|
||||
className="rounded-full border border-slate-700 bg-slate-700 px-3 py-1.5 text-sm font-semibold text-slate-50 shadow-sm"
|
||||
type="button"
|
||||
onClick={() => void handleMobileClipboardInput()}
|
||||
>
|
||||
|
||||
@@ -258,7 +258,7 @@ export const EditorTagPicker = ({ contentMarkdown, disabled, loadTags, title, va
|
||||
onClick={() => toggleTag(tag.name)}
|
||||
aria-pressed={selected}
|
||||
>
|
||||
<span className={`flex h-5 w-5 shrink-0 items-center justify-center rounded border ${selected ? "border-slate-950 bg-slate-950 text-slate-50" : "border-slate-300 bg-card text-transparent"}`}>
|
||||
<span className={`flex h-5 w-5 shrink-0 items-center justify-center rounded border ${selected ? "border-[var(--checkbox-on)] bg-[var(--checkbox-on)] text-[var(--checkbox-mark)]" : "border-slate-300 bg-card text-transparent"}`}>
|
||||
{selected && <Check className="h-3.5 w-3.5" />}
|
||||
</span>
|
||||
<span className="min-w-0 flex-1 truncate font-medium">#{tag.name}</span>
|
||||
|
||||
@@ -176,7 +176,6 @@ export const TemplatesPane = ({
|
||||
<LayoutList className="h-4 w-4 text-slate-900" />
|
||||
{t("templates.title")}
|
||||
</h1>
|
||||
<p className="mt-0.5 text-xs text-slate-500">{t("templates.description")}</p>
|
||||
</div>
|
||||
</div>
|
||||
<ExecutionCenterButton onClick={onOpenExecutionCenter} />
|
||||
@@ -186,7 +185,6 @@ export const TemplatesPane = ({
|
||||
<main className="min-h-0 flex-1 overflow-y-auto px-4 py-6 lg:px-8 lg:py-8">
|
||||
<div className="mx-auto w-full max-w-5xl space-y-8">
|
||||
|
||||
{/* Every template is workspace-owned and fully editable. */}
|
||||
<section>
|
||||
<div className="mb-4 flex flex-wrap items-center justify-between gap-3">
|
||||
<div>
|
||||
@@ -196,7 +194,6 @@ export const TemplatesPane = ({
|
||||
{savedTemplates.length}
|
||||
</span>
|
||||
</h2>
|
||||
<p className="mt-0.5 text-xs text-slate-500">{t("templates.myTemplatesSubtitle")}</p>
|
||||
</div>
|
||||
{!creatingTemplate && !editingTemplate && (
|
||||
<Button
|
||||
@@ -425,7 +422,7 @@ export const TemplatesPane = ({
|
||||
|
||||
<button
|
||||
type="button"
|
||||
className="inline-flex items-center gap-1.5 rounded-lg bg-slate-950 px-3 py-1.5 text-xs font-semibold text-slate-50 transition-colors hover:bg-slate-800 disabled:opacity-50"
|
||||
className="inline-flex items-center gap-1.5 rounded-lg border border-slate-200 bg-card px-3 py-1.5 text-xs font-semibold text-slate-800 shadow-2xs transition-colors hover:bg-slate-50 hover:text-slate-950 disabled:opacity-50"
|
||||
disabled={!canCreateMemo || isCreating}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useState } from "react";
|
||||
import { Check, LayoutList, Pencil, X } from "lucide-react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog";
|
||||
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import type { MemoTemplate } from "@edgeever/shared";
|
||||
@@ -61,9 +61,6 @@ export const TemplatesDialog = ({
|
||||
<LayoutList className="h-4 w-4 text-slate-900" />
|
||||
{t("templates.title")}
|
||||
</DialogTitle>
|
||||
<DialogDescription className="mt-1 text-xs text-slate-500">
|
||||
{t("templates.description")}
|
||||
</DialogDescription>
|
||||
</div>
|
||||
</DialogHeader>
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ export const PluginCatalogCard = ({
|
||||
</span>
|
||||
) : null}
|
||||
{update ? (
|
||||
<span className="rounded-full bg-slate-950 px-2 py-0.5 text-xs font-medium text-slate-50">
|
||||
<span className="rounded-full bg-slate-200 px-2 py-0.5 text-xs font-medium text-slate-800">
|
||||
{t("plugins.updates.available", { version: update.latestVersion })}
|
||||
</span>
|
||||
) : null}
|
||||
|
||||
@@ -39,7 +39,7 @@ const Progress = ({ progress }: { progress: EdgeEverZipProgress }) => {
|
||||
const percentage = progress.total > 0 ? Math.round((progress.completed / progress.total) * 100) : 0;
|
||||
return (
|
||||
<div className="h-1.5 overflow-hidden rounded-full bg-slate-200">
|
||||
<div className="h-full rounded-full bg-slate-900 transition-[width]" style={{ width: `${percentage}%` }} />
|
||||
<div className="h-full rounded-full bg-slate-600 transition-[width]" style={{ width: `${percentage}%` }} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -176,7 +176,7 @@ const PluginDetailView = ({
|
||||
<h2 className="text-sm font-semibold text-slate-950">{name}</h2>
|
||||
<span className="rounded bg-slate-100 px-1.5 py-0.5 text-xs font-semibold uppercase tracking-wide text-slate-500">{manifest.type}</span>
|
||||
{update ? (
|
||||
<span className="rounded-full bg-slate-950 px-2 py-0.5 text-xs font-medium text-slate-50">
|
||||
<span className="rounded-full bg-slate-200 px-2 py-0.5 text-xs font-medium text-slate-800">
|
||||
{t("plugins.updates.available", { version: update.latestVersion })}
|
||||
</span>
|
||||
) : null}
|
||||
@@ -423,7 +423,7 @@ export const PluginManagerCard = ({
|
||||
: t("plugins.updates.found", { count: lastManualCheckCount })}
|
||||
</span>
|
||||
{lastManualCheckCount === null && (updateQuery.data?.updates.length ?? 0) > 0 ? (
|
||||
<span className="rounded-full bg-slate-950 px-1.5 py-0.5 text-xs font-semibold text-slate-50">
|
||||
<span className="rounded-full bg-slate-200 px-1.5 py-0.5 text-xs font-semibold text-slate-800">
|
||||
{updateQuery.data?.updates.length}
|
||||
</span>
|
||||
) : null}
|
||||
|
||||
@@ -27,7 +27,7 @@ const Progress = ({ progress }: { progress: EdgeEverZipProgress }) => {
|
||||
const percentage = progress.total > 0 ? Math.round((progress.completed / progress.total) * 100) : 0;
|
||||
return (
|
||||
<div className="h-1.5 overflow-hidden rounded-full bg-slate-200">
|
||||
<div className="h-full rounded-full bg-slate-900 transition-[width]" style={{ width: `${percentage}%` }} />
|
||||
<div className="h-full rounded-full bg-slate-600 transition-[width]" style={{ width: `${percentage}%` }} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@ const badgeVariants = cva(
|
||||
{
|
||||
variants: {
|
||||
variant: {
|
||||
default: "border-transparent bg-slate-900 text-slate-50",
|
||||
default: "border-transparent bg-slate-700 text-slate-50",
|
||||
secondary: "border-transparent bg-slate-100 text-slate-900",
|
||||
destructive: "border-transparent bg-red-600 text-white",
|
||||
outline: "border-slate-200 text-slate-950",
|
||||
|
||||
@@ -26,6 +26,7 @@ describe("application color system", () => {
|
||||
expect(globals).toContain("--accent-foreground: 0 0% 7%;");
|
||||
expect(globals).not.toContain("--accent-foreground: 158 70% 25%;");
|
||||
expect(globals).toContain("--switch-track-on: #525252;");
|
||||
expect(globals).toContain("--checkbox-on: #525252;");
|
||||
expect(globals).toContain("--switch-track-on: #e7ebe8;");
|
||||
expect(switchSource).toContain("data-[state=checked]:bg-[var(--switch-track-on)]");
|
||||
expect(switchSource).not.toContain("bg-emerald-500");
|
||||
|
||||
@@ -310,7 +310,7 @@ html.dark[data-edgeever-environment="demo"] body::after {
|
||||
--switch-thumb: #ffffff;
|
||||
--switch-track-on: #525252;
|
||||
--switch-thumb-on: #ffffff;
|
||||
--checkbox-on: #1a1d21;
|
||||
--checkbox-on: #525252;
|
||||
--checkbox-mark: #ffffff;
|
||||
--slate-50-rgb: 250 250 250;
|
||||
--slate-100-rgb: 245 245 245;
|
||||
|
||||
@@ -2390,7 +2390,6 @@ export const enUS = {
|
||||
},
|
||||
templates: {
|
||||
title: "Template Center",
|
||||
description: "Create, edit, and reuse your note templates.",
|
||||
create: "New Template",
|
||||
useTemplate: "New note from template",
|
||||
useThisTemplate: "Use Template",
|
||||
@@ -2398,7 +2397,6 @@ export const enUS = {
|
||||
previewTitle: "Template Preview",
|
||||
createDescription: "Create a reusable template from scratch.",
|
||||
myTemplates: "Templates",
|
||||
myTemplatesSubtitle: "Every template belongs to this workspace and can be edited or deleted",
|
||||
savedDescription: "A reusable note template.",
|
||||
emptyMyTemplates: "No templates yet",
|
||||
emptyMyTemplatesHint: "Click \"New Template\" above or save any note as a template directly in the editor.",
|
||||
|
||||
@@ -2390,7 +2390,6 @@ export const ja = {
|
||||
},
|
||||
templates: {
|
||||
title: "テンプレートセンター",
|
||||
description: "ノートテンプレートを作成、編集、再利用します。",
|
||||
create: "新しいテンプレート",
|
||||
useTemplate: "テンプレートから新しいノート",
|
||||
useThisTemplate: "このテンプレートを使う",
|
||||
@@ -2398,7 +2397,6 @@ export const ja = {
|
||||
previewTitle: "テンプレートプレビュー",
|
||||
createDescription: "ゼロから再利用できるテンプレートを作成します。",
|
||||
myTemplates: "テンプレート",
|
||||
myTemplatesSubtitle: "すべてのテンプレートはこのワークスペースに属し、編集や削除ができます",
|
||||
savedDescription: "再利用できるノートテンプレートです。",
|
||||
emptyMyTemplates: "まだテンプレートがありません",
|
||||
emptyMyTemplatesHint: "上の「新しいテンプレート」をクリックするか、エディタで任意のノートをテンプレートとして保存できます。",
|
||||
|
||||
@@ -2388,7 +2388,6 @@ export const zhCN = {
|
||||
},
|
||||
templates: {
|
||||
title: "模板中心",
|
||||
description: "创建、修改和复用你的笔记模板。",
|
||||
create: "新建模板",
|
||||
useTemplate: "从模板新建笔记",
|
||||
useThisTemplate: "使用此模板新建",
|
||||
@@ -2396,7 +2395,6 @@ export const zhCN = {
|
||||
previewTitle: "模板结构预览",
|
||||
createDescription: "从零开始创建一个可重复使用的模板。",
|
||||
myTemplates: "模板",
|
||||
myTemplatesSubtitle: "所有模板都属于当前工作区,可以自由修改或删除",
|
||||
savedDescription: "可重复使用的笔记模板。",
|
||||
emptyMyTemplates: "暂无模板",
|
||||
emptyMyTemplatesHint: "你可以点击上方「新建模板」,或在笔记编辑器中将常用笔记另存为模板。",
|
||||
|
||||
Reference in new issue
Block a user