mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-09 00:56:37 +08:00
[优化] 优化界面
This commit is contained in:
@@ -10,6 +10,7 @@ export function Toaster({ ...props }: ToasterProps) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Sonner
|
<Sonner
|
||||||
|
position="bottom-right"
|
||||||
theme={resolvedTheme as ToasterProps['theme']}
|
theme={resolvedTheme as ToasterProps['theme']}
|
||||||
className="toaster group"
|
className="toaster group"
|
||||||
toastOptions={{
|
toastOptions={{
|
||||||
|
|||||||
@@ -116,7 +116,11 @@ export function OriginDetailPage({ originId }: { originId: string }) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="grid gap-4 xl:grid-cols-4">
|
<div className="grid gap-4 xl:grid-cols-4">
|
||||||
|
|||||||
@@ -1252,7 +1252,11 @@ export function ProxyRouteConfigPage({
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="grid gap-6 xl:grid-cols-[280px_minmax(0,1fr)]">
|
<div className="grid gap-6 xl:grid-cols-[280px_minmax(0,1fr)]">
|
||||||
|
|||||||
@@ -2004,7 +2004,11 @@ export function SettingsPage() {
|
|||||||
<PageHeader title="设置" />
|
<PageHeader title="设置" />
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="flex flex-wrap gap-3">
|
<div className="flex flex-wrap gap-3">
|
||||||
|
|||||||
@@ -166,7 +166,11 @@ export function TlsCertificatesPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<AppCard
|
<AppCard
|
||||||
|
|||||||
@@ -159,7 +159,11 @@ export function TunnelsPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<AppCard
|
<AppCard
|
||||||
|
|||||||
@@ -305,7 +305,11 @@ export function UsersPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<AppCard
|
<AppCard
|
||||||
|
|||||||
@@ -752,9 +752,6 @@ export function WAFIPGroupsPage() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="rounded-2xl bg-[var(--surface-muted)] p-4 text-xs text-[var(--foreground-secondary)] leading-relaxed">
|
|
||||||
💡 提示:抓取记录持久化存储在 IP 组的 <code>ext_ips</code> 扩展字段中。未来如需为已抓取到的 IP 记录更多维度的扩展元数据,可直接在此 JSON 对象中添加字段以供扩展。
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</AppModal>
|
</AppModal>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@@ -340,7 +340,11 @@ export function WAFPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="grid gap-5 xl:grid-cols-[360px_minmax(0,1fr)]">
|
<div className="grid gap-5 xl:grid-cols-[360px_minmax(0,1fr)]">
|
||||||
|
|||||||
@@ -163,7 +163,11 @@ export function CertificateApplyModal({
|
|||||||
>
|
>
|
||||||
<form className="space-y-5" onSubmit={onSubmit}>
|
<form className="space-y-5" onSubmit={onSubmit}>
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="grid gap-4 md:grid-cols-2">
|
<div className="grid gap-4 md:grid-cols-2">
|
||||||
|
|||||||
@@ -147,7 +147,11 @@ export function CertificateImportModal({
|
|||||||
>
|
>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="inline-flex rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-1">
|
<div className="inline-flex rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-1">
|
||||||
|
|||||||
@@ -279,7 +279,11 @@ export function WebsiteDetailPage({ websiteId }: { websiteId: string }) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<div className="grid gap-4 xl:grid-cols-4">
|
<div className="grid gap-4 xl:grid-cols-4">
|
||||||
|
|||||||
@@ -113,7 +113,11 @@ export function WebsitesPage() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{feedback ? (
|
{feedback ? (
|
||||||
<InlineMessage tone={feedback.tone} message={feedback.message} />
|
<InlineMessage
|
||||||
|
tone={feedback.tone}
|
||||||
|
message={feedback.message}
|
||||||
|
onClear={() => setFeedback(null)}
|
||||||
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<AppCard
|
<AppCard
|
||||||
|
|||||||
Reference in New Issue
Block a user