Files
nexus/Project/fonrey/UI_DESIGN/preview.html
2026-05-02 11:35:20 +08:00

817 lines
59 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Fonrey UI System · 样板预览 v1.0</title>
<meta name="viewport" content="width=1280">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: {
50:'#F0FDFA',100:'#CCFBF1',200:'#99F6E4',
500:'#14B8A6',600:'#0F766E',700:'#115E59',800:'#134E4A',
},
neutral: {
50:'#F8FAFC',100:'#F1F5F9',200:'#E2E8F0',300:'#CBD5E1',
400:'#94A3B8',500:'#64748B',600:'#475569',700:'#334155',
800:'#1E293B',900:'#0F172A',
},
success:{50:'#F0FDF4',600:'#16A34A'},
warning:{50:'#FFFBEB',600:'#D97706'},
danger: {50:'#FEF2F2',600:'#DC2626'},
info: {50:'#EFF6FF',600:'#2563EB'},
},
boxShadow: {
xs:'0 1px 2px rgba(15,23,42,0.04)',
},
fontFamily: {
sans:['Inter','PingFang SC','Microsoft YaHei','sans-serif'],
mono:['JetBrains Mono','SFMono-Regular','Menlo','monospace'],
},
}
}
}
</script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono&display=swap" rel="stylesheet">
<style>
body { font-family: 'Inter','PingFang SC','Microsoft YaHei',sans-serif; }
.tabular-nums { font-variant-numeric: tabular-nums; }
/* 轻微滚动条 */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#94A3B8}
</style>
</head>
<body class="bg-neutral-50 text-neutral-700 text-sm antialiased">
<!-- ============ 顶部导航 ============ -->
<header class="sticky top-0 z-20 bg-primary-800">
<div class="flex items-center h-14 justify-between">
<!-- 左区Logo -->
<div class="flex items-center gap-2 px-4 w-60 shrink-0">
<div class="w-7 h-7 rounded-md bg-primary-500 flex items-center justify-center text-white font-semibold">F</div>
<span class="font-semibold text-white text-base">Fonrey · 房睿</span>
</div>
<!-- 中区:主导航 + 搜索 -->
<div class="flex items-center gap-4 flex-1 px-2">
<nav class="flex items-center gap-1 text-sm">
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">工作台</a>
<a class="px-3 py-1.5 rounded-md bg-primary-600 text-white font-medium">房源</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">客源</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">营销</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">交易</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">数据</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">人事</a>
<a class="px-3 py-1.5 rounded-md text-primary-100 hover:bg-primary-700 hover:text-white">系统</a>
</nav>
<!-- 全局搜索 -->
<div class="max-w-xs w-full relative">
<svg class="w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-primary-300" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.3-4.3M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16Z"/></svg>
<input type="text" placeholder="搜索房源 / 客户 / 楼盘 ⌘K"
class="w-full pl-9 pr-3 py-1.5 text-sm rounded-md bg-primary-700/60 border border-transparent text-white placeholder:text-primary-300 hover:bg-primary-700 focus:bg-white focus:text-neutral-700 focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20 focus:outline-none focus:placeholder:text-neutral-400">
</div>
</div>
<!-- 右区:工具 -->
<div class="flex items-center gap-1 px-4 shrink-0">
<button class="relative p-1.5 text-primary-200 hover:bg-primary-700 hover:text-white rounded-md">
<svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022 23.848 23.848 0 0 0 5.454 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"/></svg>
<span class="absolute top-1 right-1 w-1.5 h-1.5 rounded-full bg-danger-600"></span>
</button>
<button class="p-1.5 text-primary-200 hover:bg-primary-700 hover:text-white rounded-md">
<svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"/><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"/></svg>
</button>
<div class="flex items-center gap-2 pl-3 ml-1 border-l border-primary-700">
<div class="w-7 h-7 rounded-full bg-primary-600 text-white flex items-center justify-center text-xs font-semibold">WS</div>
<span class="text-sm font-medium text-primary-100">魏深</span>
</div>
</div>
</div>
</header>
<!-- ============ 主容器 ============ -->
<div class="flex">
<!-- 侧边栏 -->
<aside class="w-56 shrink-0 border-r border-neutral-200 bg-white min-h-[calc(100vh-3.5rem)]">
<nav class="p-3 space-y-0.5 text-sm">
<div class="px-2 pt-2 pb-1 text-xs font-medium text-neutral-500 uppercase tracking-wide">房源管理</div>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md bg-primary-50 text-primary-700 font-medium">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12 12 3l9.75 9M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75"/></svg>
全部房源 <span class="ml-auto text-xs text-neutral-500 tabular-nums">89,204</span>
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<svg class="w-4 h-4 text-neutral-400" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75Zm6.75-3C9.75 9.504 10.254 9 10.875 9h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75Zm6.75-4.5c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V5.625Z"/></svg>
我的房源 <span class="ml-auto text-xs text-neutral-500 tabular-nums">248</span>
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<svg class="w-4 h-4 text-neutral-400" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0Z"/></svg>
收藏
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<svg class="w-4 h-4 text-neutral-400" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"/></svg>
待审核 <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-warning-50 text-warning-600 tabular-nums">12</span>
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<svg class="w-4 h-4 text-neutral-400" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"/></svg>
回收站
</a>
<div class="px-2 pt-4 pb-1 text-xs font-medium text-neutral-500 uppercase tracking-wide">视图</div>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<span class="w-1.5 h-1.5 rounded-full bg-success-600"></span> 本周新上
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<span class="w-1.5 h-1.5 rounded-full bg-warning-600"></span> 钥匙房源
</a>
<a class="flex items-center gap-2 px-2 py-1.5 rounded-md text-neutral-700 hover:bg-neutral-100">
<span class="w-1.5 h-1.5 rounded-full bg-info-600"></span> 降价提醒
</a>
</nav>
</aside>
<!-- 内容区 -->
<main class="flex-1 min-w-0 px-6 py-5 space-y-6">
<!-- 面包屑 + 页面头 -->
<div class="flex items-start justify-between">
<div>
<nav class="flex items-center gap-1 text-xs text-neutral-500 mb-1">
<a class="hover:text-neutral-700">工作台</a>
<svg class="w-3 h-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"/></svg>
<a class="hover:text-neutral-700">房源</a>
<svg class="w-3 h-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"/></svg>
<span class="text-neutral-700">全部房源</span>
</nav>
<h1 class="text-xl font-semibold text-neutral-800">全部房源</h1>
<p class="text-xs text-neutral-500 mt-0.5">管理租户下所有房源数据 · 最近同步于 2 分钟前</p>
</div>
<div class="flex items-center gap-2">
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium bg-white border border-neutral-300 text-neutral-700 rounded-md hover:bg-neutral-50 hover:border-neutral-400">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"/></svg>
导出
</button>
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium bg-white border border-neutral-300 text-neutral-700 rounded-md hover:bg-neutral-50 hover:border-neutral-400">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"/></svg>
导入
</button>
<button class="inline-flex items-center gap-1.5 px-4 py-2 text-sm font-medium bg-primary-600 text-white rounded-md hover:bg-primary-700 active:bg-primary-800 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-600/40">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"/></svg>
新增房源
</button>
</div>
</div>
<!-- Stat Cards -->
<section class="grid grid-cols-4 gap-4">
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-4">
<div class="flex items-start justify-between">
<div>
<div class="text-xs text-neutral-500">在售房源</div>
<div class="mt-1.5 text-xl font-semibold text-neutral-900 tabular-nums">24,891</div>
</div>
<span class="inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600 tabular-nums">
<svg class="w-3 h-3" fill="currentColor" viewBox="0 0 20 20"><path d="M10 3a1 1 0 0 1 .7.3l5 5a1 1 0 1 1-1.4 1.4L11 6.42V16a1 1 0 1 1-2 0V6.42L5.7 9.7a1 1 0 0 1-1.4-1.4l5-5A1 1 0 0 1 10 3Z"/></svg>
+4.2%
</span>
</div>
<div class="mt-2 text-xs text-neutral-500">较上周 <span class="tabular-nums">+1,003</span></div>
</div>
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-4">
<div class="flex items-start justify-between">
<div>
<div class="text-xs text-neutral-500">本月新增</div>
<div class="mt-1.5 text-xl font-semibold text-neutral-900 tabular-nums">1,284</div>
</div>
<span class="inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600 tabular-nums">+12.8%</span>
</div>
<div class="mt-2 text-xs text-neutral-500">目标 <span class="tabular-nums">1,500</span> · 完成 85%</div>
<div class="mt-2 h-1 rounded-full bg-neutral-100 overflow-hidden">
<div class="h-full bg-primary-600" style="width:85%"></div>
</div>
</div>
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-4">
<div class="flex items-start justify-between">
<div>
<div class="text-xs text-neutral-500">待审核</div>
<div class="mt-1.5 text-xl font-semibold text-neutral-900 tabular-nums">12</div>
</div>
<span class="inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium bg-warning-50 text-warning-600">需处理</span>
</div>
<div class="mt-2 text-xs text-primary-600 hover:underline cursor-pointer">查看待审核列表 →</div>
</div>
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-4">
<div class="flex items-start justify-between">
<div>
<div class="text-xs text-neutral-500">本月成交</div>
<div class="mt-1.5 text-xl font-semibold text-neutral-900 tabular-nums">86</div>
</div>
<span class="inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium bg-danger-50 text-danger-600 tabular-nums">-2.1%</span>
</div>
<div class="mt-2 text-xs text-neutral-500">GMV <span class="tabular-nums font-medium text-neutral-700">¥2.14亿</span></div>
</div>
</section>
<!-- 筛选栏 -->
<section class="bg-white rounded-lg border border-neutral-200 shadow-xs">
<!-- Tabs -->
<div class="flex items-center px-4 border-b border-neutral-200">
<nav class="flex items-center gap-1">
<button class="relative px-3 py-3 text-sm font-medium text-primary-700">
全部 <span class="ml-1 text-xs text-neutral-500 tabular-nums">89,204</span>
<span class="absolute bottom-0 inset-x-0 h-0.5 bg-primary-600 rounded-t"></span>
</button>
<button class="px-3 py-3 text-sm text-neutral-600 hover:text-neutral-900">在售 <span class="ml-1 text-xs text-neutral-500 tabular-nums">24,891</span></button>
<button class="px-3 py-3 text-sm text-neutral-600 hover:text-neutral-900">已成交 <span class="ml-1 text-xs text-neutral-500 tabular-nums">8,120</span></button>
<button class="px-3 py-3 text-sm text-neutral-600 hover:text-neutral-900">已下架 <span class="ml-1 text-xs text-neutral-500 tabular-nums">3,402</span></button>
<button class="px-3 py-3 text-sm text-neutral-600 hover:text-neutral-900">钥匙房源 <span class="ml-1 text-xs text-neutral-500 tabular-nums">612</span></button>
</nav>
</div>
<!-- 筛选条件 -->
<div class="p-4 border-b border-neutral-200 space-y-3">
<div class="flex flex-wrap gap-2 items-center">
<!-- 搜索 -->
<div class="relative w-64">
<svg class="w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-neutral-400" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.3-4.3M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16Z"/></svg>
<input type="text" placeholder="房源编号 / 标题 / 业主"
class="w-full pl-9 pr-3 py-1.5 text-sm rounded-md border border-neutral-300 focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20 focus:outline-none">
</div>
<!-- 下拉筛选 -->
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm bg-white border border-neutral-300 rounded-md hover:bg-neutral-50 text-neutral-700">
商圈:朝阳·大望路 <svg class="w-3 h-3 text-neutral-400" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/></svg>
</button>
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm bg-white border border-neutral-300 rounded-md hover:bg-neutral-50 text-neutral-700">
户型:全部 <svg class="w-3 h-3 text-neutral-400" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/></svg>
</button>
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm bg-primary-50 border border-primary-600 rounded-md text-primary-700">
价格500-800万 <svg class="w-3 h-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg>
</button>
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm bg-white border border-neutral-300 rounded-md hover:bg-neutral-50 text-neutral-700">
面积 <svg class="w-3 h-3 text-neutral-400" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/></svg>
</button>
<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm bg-white border border-neutral-300 rounded-md hover:bg-neutral-50 text-neutral-700">
更多筛选 <span class="px-1 rounded bg-primary-600 text-white text-xs tabular-nums">2</span>
</button>
<div class="flex-1"></div>
<button class="text-sm text-neutral-500 hover:text-neutral-700 px-2 py-1.5">重置</button>
</div>
<!-- 已选条件 Tag -->
<div class="flex flex-wrap gap-1.5 items-center text-xs">
<span class="text-neutral-500">已筛选:</span>
<span class="inline-flex items-center gap-1 px-2 py-0.5 rounded bg-primary-50 text-primary-700 font-medium">
价格 500-800万
<button class="hover:text-primary-800"><svg class="w-3 h-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg></button>
</span>
<span class="inline-flex items-center gap-1 px-2 py-0.5 rounded bg-primary-50 text-primary-700 font-medium">
朝阳·大望路
<button class="hover:text-primary-800"><svg class="w-3 h-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg></button>
</span>
<button class="text-neutral-500 hover:text-neutral-700 underline underline-offset-2">清除全部</button>
</div>
</div>
<!-- 工具栏 -->
<div class="flex items-center justify-between px-4 py-2 bg-neutral-50 border-b border-neutral-200">
<div class="flex items-center gap-2 text-xs text-neutral-600">
<span class="font-medium text-neutral-900 tabular-nums">1,284</span> 条结果
<span class="text-neutral-400">·</span>
已选 <span class="font-medium text-primary-700 tabular-nums">3</span>
<button class="text-primary-600 hover:text-primary-700 hover:underline underline-offset-2 ml-1">批量操作 ▾</button>
</div>
<div class="flex items-center gap-1">
<button class="p-1.5 text-neutral-500 hover:bg-neutral-100 rounded-md" title="密度">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"/></svg>
</button>
<button class="p-1.5 text-neutral-500 hover:bg-neutral-100 rounded-md" title="列设置">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75"/></svg>
</button>
<button class="p-1.5 text-neutral-500 hover:bg-neutral-100 rounded-md" title="刷新">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"/></svg>
</button>
</div>
</div>
<!-- 表格 -->
<div class="overflow-x-auto">
<table class="w-full text-sm">
<thead class="bg-neutral-50 border-b border-neutral-200">
<tr class="text-left text-xs font-medium text-neutral-600 uppercase tracking-wide">
<th class="px-3 py-2.5 w-10"><input type="checkbox" class="rounded border-neutral-300 text-primary-600 focus:ring-primary-600/30"></th>
<th class="px-3 py-2.5 w-28">编号</th>
<th class="px-3 py-2.5 min-w-[240px]">房源标题</th>
<th class="px-3 py-2.5">户型</th>
<th class="px-3 py-2.5 text-right">面积 (㎡)</th>
<th class="px-3 py-2.5 text-right">总价 (万)</th>
<th class="px-3 py-2.5 text-right">单价 (元/㎡)</th>
<th class="px-3 py-2.5">状态</th>
<th class="px-3 py-2.5">维护人</th>
<th class="px-3 py-2.5">录入时间</th>
<th class="px-3 py-2.5 w-24 text-right">操作</th>
</tr>
</thead>
<tbody class="divide-y divide-neutral-100">
<!-- Row 1 -->
<tr class="hover:bg-neutral-50 group">
<td class="px-3 py-3"><input type="checkbox" checked class="rounded border-neutral-300 text-primary-600 focus:ring-primary-600/30"></td>
<td class="px-3 py-3 font-mono text-xs text-neutral-600">F20268142</td>
<td class="px-3 py-3">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-neutral-100 shrink-0 overflow-hidden flex items-center justify-center text-neutral-400">
<svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"/></svg>
</div>
<div class="min-w-0">
<div class="font-medium text-neutral-900 truncate">绿城百合公寓 · 南北通透三居 · 业主诚心出售</div>
<div class="text-xs text-neutral-500 truncate">大望路 · 绿城百合公寓 · 中楼层/32层</div>
</div>
</div>
</td>
<td class="px-3 py-3 text-neutral-700">3室2厅</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">128.50</td>
<td class="px-3 py-3 text-right tabular-nums font-medium text-neutral-900">680</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">52,918</td>
<td class="px-3 py-3"><span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600"><span class="w-1.5 h-1.5 rounded-full bg-success-600"></span>在售</span></td>
<td class="px-3 py-3">
<div class="flex items-center gap-1.5">
<div class="w-6 h-6 rounded-full bg-primary-600 text-white flex items-center justify-center text-xs font-semibold"></div>
<span class="text-neutral-700">魏深</span>
</div>
</td>
<td class="px-3 py-3 text-neutral-500 text-xs tabular-nums">2026-04-20 14:32</td>
<td class="px-3 py-3 text-right">
<div class="flex items-center gap-1 justify-end opacity-0 group-hover:opacity-100 transition">
<button class="p-1 text-neutral-500 hover:bg-neutral-100 hover:text-neutral-700 rounded" title="编辑"><svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125"/></svg></button>
<button class="p-1 text-neutral-500 hover:bg-neutral-100 hover:text-neutral-700 rounded" title="更多"><svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path d="M10 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM10 11.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM11.5 15.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z"/></svg></button>
</div>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-neutral-50 group bg-primary-50/40">
<td class="px-3 py-3"><input type="checkbox" checked class="rounded border-neutral-300 text-primary-600"></td>
<td class="px-3 py-3 font-mono text-xs text-neutral-600">F20267891</td>
<td class="px-3 py-3">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-neutral-100 shrink-0"></div>
<div class="min-w-0">
<div class="font-medium text-neutral-900 truncate">
万科翡翠长安 · 精装两居 · 满五唯一
<span class="ml-1 inline-flex items-center px-1 py-0 rounded text-[10px] font-medium bg-danger-50 text-danger-600 align-middle">急售</span>
</div>
<div class="text-xs text-neutral-500 truncate">CBD · 万科翡翠长安 · 高楼层/28层</div>
</div>
</div>
</td>
<td class="px-3 py-3 text-neutral-700">2室1厅</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">89.20</td>
<td class="px-3 py-3 text-right tabular-nums font-medium text-neutral-900">
<span class="line-through text-neutral-400 text-xs mr-1">780</span>720
</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">80,717</td>
<td class="px-3 py-3"><span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-warning-50 text-warning-600"><span class="w-1.5 h-1.5 rounded-full bg-warning-600"></span>待核验</span></td>
<td class="px-3 py-3">
<div class="flex items-center gap-1.5">
<div class="w-6 h-6 rounded-full bg-info-600 text-white flex items-center justify-center text-xs font-semibold"></div>
<span class="text-neutral-700">李明泽</span>
</div>
</td>
<td class="px-3 py-3 text-neutral-500 text-xs tabular-nums">2026-04-19 09:15</td>
<td class="px-3 py-3"></td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-neutral-50 group">
<td class="px-3 py-3"><input type="checkbox" checked class="rounded border-neutral-300 text-primary-600"></td>
<td class="px-3 py-3 font-mono text-xs text-neutral-600">F20267403</td>
<td class="px-3 py-3">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-neutral-100 shrink-0"></div>
<div class="min-w-0">
<div class="font-medium text-neutral-900 truncate">远洋万和城 · 花园洋房 · 带车位</div>
<div class="text-xs text-neutral-500 truncate">亮马桥 · 远洋万和城 · 低楼层/6层</div>
</div>
</div>
</td>
<td class="px-3 py-3 text-neutral-700">4室2厅</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">186.00</td>
<td class="px-3 py-3 text-right tabular-nums font-medium text-neutral-900">1,280</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">68,817</td>
<td class="px-3 py-3"><span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-info-50 text-info-600"><span class="w-1.5 h-1.5 rounded-full bg-info-600"></span>已成交</span></td>
<td class="px-3 py-3">
<div class="flex items-center gap-1.5">
<div class="w-6 h-6 rounded-full bg-warning-600 text-white flex items-center justify-center text-xs font-semibold"></div>
<span class="text-neutral-700">张晓雨</span>
</div>
</td>
<td class="px-3 py-3 text-neutral-500 text-xs tabular-nums">2026-04-15 16:48</td>
<td class="px-3 py-3"></td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-neutral-50 group">
<td class="px-3 py-3"><input type="checkbox" class="rounded border-neutral-300 text-primary-600"></td>
<td class="px-3 py-3 font-mono text-xs text-neutral-600">F20266912</td>
<td class="px-3 py-3">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-neutral-100 shrink-0"></div>
<div class="min-w-0">
<div class="font-medium text-neutral-900 truncate">
华贸城 · 顶跃复式 · 精装未住
<span class="ml-1 inline-flex items-center px-1 py-0 rounded text-[10px] font-medium bg-primary-100 text-primary-700 align-middle">VR</span>
<span class="ml-1 inline-flex items-center px-1 py-0 rounded text-[10px] font-medium bg-warning-50 text-warning-600 align-middle">钥匙</span>
</div>
<div class="text-xs text-neutral-500 truncate">建外 · 华贸城 · 顶层/26层</div>
</div>
</div>
</td>
<td class="px-3 py-3 text-neutral-700">5室3厅</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">280.50</td>
<td class="px-3 py-3 text-right tabular-nums font-medium text-neutral-900">2,680</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">95,544</td>
<td class="px-3 py-3"><span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600"><span class="w-1.5 h-1.5 rounded-full bg-success-600"></span>在售</span></td>
<td class="px-3 py-3">
<div class="flex items-center gap-1.5">
<div class="w-6 h-6 rounded-full bg-neutral-400 text-white flex items-center justify-center text-xs font-semibold"></div>
<span class="text-neutral-700">王建国</span>
</div>
</td>
<td class="px-3 py-3 text-neutral-500 text-xs tabular-nums">2026-04-12 11:20</td>
<td class="px-3 py-3"></td>
</tr>
<!-- Row 5 - 下架 -->
<tr class="hover:bg-neutral-50 group opacity-60">
<td class="px-3 py-3"><input type="checkbox" class="rounded border-neutral-300 text-primary-600"></td>
<td class="px-3 py-3 font-mono text-xs text-neutral-600">F20266541</td>
<td class="px-3 py-3">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-neutral-100 shrink-0"></div>
<div class="min-w-0">
<div class="font-medium text-neutral-700 truncate line-through">观湖国际 · 商住两用</div>
<div class="text-xs text-neutral-500 truncate">国贸 · 观湖国际</div>
</div>
</div>
</td>
<td class="px-3 py-3 text-neutral-700">1室</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">52.80</td>
<td class="px-3 py-3 text-right tabular-nums font-medium text-neutral-700">380</td>
<td class="px-3 py-3 text-right tabular-nums text-neutral-700">71,970</td>
<td class="px-3 py-3"><span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-neutral-100 text-neutral-600"><span class="w-1.5 h-1.5 rounded-full bg-neutral-400"></span>已下架</span></td>
<td class="px-3 py-3"><span class="text-neutral-500"></span></td>
<td class="px-3 py-3 text-neutral-500 text-xs tabular-nums">2026-03-28 08:05</td>
<td class="px-3 py-3"></td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="flex items-center justify-between px-4 py-3 border-t border-neutral-200">
<div class="text-xs text-neutral-500">
显示 <span class="tabular-nums font-medium text-neutral-700">1-20</span> 条,共 <span class="tabular-nums font-medium text-neutral-700">1,284</span>
</div>
<div class="flex items-center gap-1">
<button class="px-2 py-1 text-sm text-neutral-400 rounded-md cursor-not-allowed">← 上一页</button>
<button class="w-8 h-8 text-sm rounded-md bg-primary-600 text-white font-medium tabular-nums">1</button>
<button class="w-8 h-8 text-sm rounded-md hover:bg-neutral-100 text-neutral-700 tabular-nums">2</button>
<button class="w-8 h-8 text-sm rounded-md hover:bg-neutral-100 text-neutral-700 tabular-nums">3</button>
<button class="w-8 h-8 text-sm rounded-md hover:bg-neutral-100 text-neutral-700 tabular-nums">4</button>
<span class="px-1 text-neutral-400"></span>
<button class="w-8 h-8 text-sm rounded-md hover:bg-neutral-100 text-neutral-700 tabular-nums">65</button>
<button class="px-2 py-1 text-sm text-neutral-700 hover:bg-neutral-100 rounded-md">下一页 →</button>
<select class="ml-3 px-2 py-1 text-sm border border-neutral-300 rounded-md bg-white text-neutral-700 focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20 focus:outline-none">
<option>20 条/页</option>
<option>50 条/页</option>
<option>100 条/页</option>
</select>
</div>
</div>
</section>
<!-- 组件展示区 -->
<section class="grid grid-cols-2 gap-4">
<!-- 表单 -->
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">表单组件 · Form</h2>
<form class="space-y-3">
<div class="space-y-1">
<label class="block text-sm font-medium text-neutral-700">房源标题 <span class="text-danger-600">*</span></label>
<input type="text" value="绿城百合公寓 · 南北通透三居"
class="block w-full px-3 py-2 text-sm rounded-md border border-neutral-300 focus:outline-none focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20">
<p class="text-xs text-neutral-500">不超过 50 字,将用于客户端展示</p>
</div>
<div class="grid grid-cols-2 gap-3">
<div class="space-y-1">
<label class="block text-sm font-medium text-neutral-700">户型</label>
<select class="block w-full px-3 py-2 text-sm rounded-md border border-neutral-300 bg-white focus:outline-none focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20">
<option>3室2厅2卫</option><option>2室1厅1卫</option>
</select>
</div>
<div class="space-y-1">
<label class="block text-sm font-medium text-neutral-700">面积 (㎡)</label>
<input type="text" value="128.5"
class="block w-full px-3 py-2 text-sm rounded-md border border-neutral-300 tabular-nums focus:outline-none focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20">
</div>
</div>
<div class="space-y-1">
<label class="block text-sm font-medium text-neutral-700">价格 (万) <span class="text-danger-600">*</span></label>
<input type="text" value="abc"
class="block w-full px-3 py-2 text-sm rounded-md border border-danger-600 tabular-nums focus:outline-none focus:ring-2 focus:ring-danger-600/20">
<p class="text-xs text-danger-600">价格必须是数字</p>
</div>
<div class="space-y-1">
<label class="block text-sm font-medium text-neutral-700">描述</label>
<textarea rows="3" class="block w-full px-3 py-2 text-sm rounded-md border border-neutral-300 focus:outline-none focus:border-primary-600 focus:ring-2 focus:ring-primary-600/20" placeholder="请输入房源描述..."></textarea>
</div>
<div class="flex items-center gap-4">
<label class="inline-flex items-center gap-2 text-sm text-neutral-700">
<input type="checkbox" checked class="rounded border-neutral-300 text-primary-600 focus:ring-primary-600/30"> 同步到小程序
</label>
<label class="inline-flex items-center gap-2 text-sm text-neutral-700">
<input type="radio" name="r" checked class="border-neutral-300 text-primary-600 focus:ring-primary-600/30"> 出售
</label>
<label class="inline-flex items-center gap-2 text-sm text-neutral-700">
<input type="radio" name="r" class="border-neutral-300 text-primary-600 focus:ring-primary-600/30"> 出租
</label>
<!-- Switch -->
<label class="inline-flex items-center gap-2 text-sm text-neutral-700 ml-auto">
启用
<span class="relative inline-flex h-5 w-9 items-center rounded-full bg-primary-600 transition">
<span class="inline-block h-4 w-4 transform rounded-full bg-white translate-x-4 transition"></span>
</span>
</label>
</div>
<div class="flex justify-end gap-2 pt-3 border-t border-neutral-200">
<button type="button" class="px-3 py-1.5 text-sm font-medium bg-white border border-neutral-300 text-neutral-700 rounded-md hover:bg-neutral-50">取消</button>
<button type="submit" class="px-3 py-1.5 text-sm font-medium bg-primary-600 text-white rounded-md hover:bg-primary-700">保存</button>
</div>
</form>
</div>
<!-- 按钮 + Badge + Alert + Timeline -->
<div class="space-y-4">
<!-- 按钮 -->
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">按钮与标签 · Buttons & Badges</h2>
<div class="flex flex-wrap gap-2 mb-3">
<button class="px-3 py-1.5 text-sm font-medium bg-primary-600 text-white rounded-md hover:bg-primary-700">Primary</button>
<button class="px-3 py-1.5 text-sm font-medium bg-white border border-neutral-300 text-neutral-700 rounded-md hover:bg-neutral-50 hover:border-neutral-400">Secondary</button>
<button class="px-3 py-1.5 text-sm font-medium bg-danger-600 text-white rounded-md hover:bg-danger-600/90">Danger</button>
<button class="px-3 py-1.5 text-sm font-medium text-neutral-600 hover:bg-neutral-100 hover:text-neutral-900 rounded-md">Ghost</button>
<button class="px-3 py-1.5 text-sm font-medium text-primary-600 hover:text-primary-700 hover:underline underline-offset-2">Link</button>
<button disabled class="px-3 py-1.5 text-sm font-medium bg-primary-600 text-white rounded-md opacity-50 cursor-not-allowed">Disabled</button>
<button disabled class="inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium bg-primary-600 text-white rounded-md opacity-70 cursor-wait">
<svg class="w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"/><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z"/></svg>
保存中…
</button>
</div>
<div class="flex flex-wrap gap-1.5 mb-3">
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-primary-50 text-primary-700">Primary</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600">Success</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-warning-50 text-warning-600">Warning</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-danger-50 text-danger-600">Danger</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-info-50 text-info-600">Info</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-neutral-100 text-neutral-600">Neutral</span>
<span class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium bg-success-50 text-success-600"><span class="w-1.5 h-1.5 rounded-full bg-success-600"></span>带圆点</span>
</div>
<div class="flex gap-1.5">
<kbd class="px-1.5 py-0.5 text-xs font-mono border border-neutral-300 rounded bg-neutral-50 text-neutral-600"></kbd>
<kbd class="px-1.5 py-0.5 text-xs font-mono border border-neutral-300 rounded bg-neutral-50 text-neutral-600">K</kbd>
<span class="text-xs text-neutral-500 self-center ml-1">快捷键样式</span>
</div>
</div>
<!-- Alert -->
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">提示条 · Alert</h2>
<div class="space-y-2">
<div class="flex gap-3 p-3 rounded-md bg-info-50 border border-info-600/20">
<svg class="w-5 h-5 text-info-600 shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" clip-rule="evenodd"/></svg>
<div class="text-sm text-info-600">
<div class="font-medium">提示</div>
<div class="text-info-600/80 mt-0.5">房源信息将在审核后对外展示</div>
</div>
</div>
<div class="flex gap-3 p-3 rounded-md bg-warning-50 border border-warning-600/20">
<svg class="w-5 h-5 text-warning-600 shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd"/></svg>
<div class="text-sm text-warning-600">
<div class="font-medium">即将过期</div>
<div class="text-warning-600/80 mt-0.5">3 个房源委托将在 7 天内到期</div>
</div>
</div>
<div class="flex gap-3 p-3 rounded-md bg-danger-50 border border-danger-600/20">
<svg class="w-5 h-5 text-danger-600 shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm-1.75-4.75a.75.75 0 1 1 1.5 0v3a.75.75 0 0 1-1.5 0v-3ZM10 6a.75.75 0 0 0-.75.75v5.25a.75.75 0 0 0 1.5 0V6.75A.75.75 0 0 0 10 6Z" clip-rule="evenodd"/></svg>
<div class="text-sm text-danger-600">
<div class="font-medium">操作失败</div>
<div class="text-danger-600/80 mt-0.5">无法删除该房源,仍有关联跟进记录</div>
</div>
</div>
</div>
</div>
<!-- Timeline -->
<div class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">跟进时间线 · Timeline</h2>
<ol class="relative border-l-2 border-neutral-200 ml-2 space-y-5">
<li class="ml-4">
<span class="absolute -left-[7px] w-3 h-3 rounded-full bg-primary-600 ring-4 ring-white"></span>
<div class="text-sm">
<div class="flex items-center gap-2">
<span class="font-medium text-neutral-900">魏深</span>
<span class="text-xs text-neutral-500 tabular-nums">今天 14:32</span>
</div>
<div class="text-neutral-700 mt-1">带客户看房,客户对户型满意,但希望价格再谈 20 万</div>
<div class="flex gap-1 mt-2">
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-primary-50 text-primary-700">看房</span>
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-neutral-100 text-neutral-600">高意向</span>
</div>
</div>
</li>
<li class="ml-4">
<span class="absolute -left-[7px] w-3 h-3 rounded-full bg-info-600 ring-4 ring-white"></span>
<div class="text-sm">
<div class="flex items-center gap-2">
<span class="font-medium text-neutral-900">李明泽</span>
<span class="text-xs text-neutral-500 tabular-nums">昨天 10:12</span>
</div>
<div class="text-neutral-700 mt-1">电话跟进业主,确认可协商空间为 30 万</div>
</div>
</li>
<li class="ml-4">
<span class="absolute -left-[7px] w-3 h-3 rounded-full bg-neutral-300 ring-4 ring-white"></span>
<div class="text-sm">
<div class="flex items-center gap-2">
<span class="text-neutral-600">系统</span>
<span class="text-xs text-neutral-500 tabular-nums">04-20 14:32</span>
</div>
<div class="text-neutral-500 mt-1">房源录入系统,分配维护人 <span class="text-neutral-700">魏深</span></div>
</div>
</li>
</ol>
</div>
</div>
</section>
<!-- 色板展示 -->
<section class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">颜色系统 · Color Palette</h2>
<div class="space-y-4">
<div>
<div class="text-xs font-medium text-neutral-500 uppercase tracking-wide mb-2">Primary (Teal · 品牌主色)</div>
<div class="grid grid-cols-7 gap-2">
<div><div class="h-14 rounded-md bg-primary-50 border border-neutral-200"></div><div class="text-xs mt-1 text-neutral-600">50 <span class="font-mono text-neutral-400">#F0FDFA</span></div></div>
<div><div class="h-14 rounded-md bg-primary-100"></div><div class="text-xs mt-1 text-neutral-600">100 <span class="font-mono text-neutral-400">#CCFBF1</span></div></div>
<div><div class="h-14 rounded-md bg-primary-200"></div><div class="text-xs mt-1 text-neutral-600">200 <span class="font-mono text-neutral-400">#99F6E4</span></div></div>
<div><div class="h-14 rounded-md bg-primary-500"></div><div class="text-xs mt-1 text-neutral-600">500 <span class="font-mono text-neutral-400">#14B8A6</span></div></div>
<div><div class="h-14 rounded-md bg-primary-600 ring-2 ring-primary-600/30 ring-offset-2"></div><div class="text-xs mt-1 text-primary-700 font-medium">600 基准</div></div>
<div><div class="h-14 rounded-md bg-primary-700"></div><div class="text-xs mt-1 text-neutral-600">700 <span class="font-mono text-neutral-400">#115E59</span></div></div>
<div><div class="h-14 rounded-md bg-primary-800"></div><div class="text-xs mt-1 text-neutral-600">800 <span class="font-mono text-neutral-400">#134E4A</span></div></div>
</div>
</div>
<div>
<div class="text-xs font-medium text-neutral-500 uppercase tracking-wide mb-2">Neutral (Slate · 中性灰)</div>
<div class="grid grid-cols-10 gap-2">
<div><div class="h-10 rounded bg-neutral-50 border border-neutral-200"></div><div class="text-xs mt-1 text-neutral-600">50</div></div>
<div><div class="h-10 rounded bg-neutral-100"></div><div class="text-xs mt-1 text-neutral-600">100</div></div>
<div><div class="h-10 rounded bg-neutral-200"></div><div class="text-xs mt-1 text-neutral-600">200</div></div>
<div><div class="h-10 rounded bg-neutral-300"></div><div class="text-xs mt-1 text-neutral-600">300</div></div>
<div><div class="h-10 rounded bg-neutral-400"></div><div class="text-xs mt-1 text-neutral-600">400</div></div>
<div><div class="h-10 rounded bg-neutral-500"></div><div class="text-xs mt-1 text-neutral-600">500</div></div>
<div><div class="h-10 rounded bg-neutral-600"></div><div class="text-xs mt-1 text-neutral-600">600</div></div>
<div><div class="h-10 rounded bg-neutral-700"></div><div class="text-xs mt-1 text-neutral-600">700</div></div>
<div><div class="h-10 rounded bg-neutral-800"></div><div class="text-xs mt-1 text-neutral-600">800</div></div>
<div><div class="h-10 rounded bg-neutral-900"></div><div class="text-xs mt-1 text-neutral-600">900</div></div>
</div>
</div>
<div>
<div class="text-xs font-medium text-neutral-500 uppercase tracking-wide mb-2">Semantic · 语义色</div>
<div class="grid grid-cols-4 gap-3">
<div class="flex items-center gap-2">
<div class="h-10 w-10 rounded bg-success-600"></div>
<div class="text-xs">
<div class="font-medium text-neutral-700">Success</div>
<div class="font-mono text-neutral-400">#16A34A</div>
</div>
</div>
<div class="flex items-center gap-2">
<div class="h-10 w-10 rounded bg-warning-600"></div>
<div class="text-xs">
<div class="font-medium text-neutral-700">Warning</div>
<div class="font-mono text-neutral-400">#D97706</div>
</div>
</div>
<div class="flex items-center gap-2">
<div class="h-10 w-10 rounded bg-danger-600"></div>
<div class="text-xs">
<div class="font-medium text-neutral-700">Danger</div>
<div class="font-mono text-neutral-400">#DC2626</div>
</div>
</div>
<div class="flex items-center gap-2">
<div class="h-10 w-10 rounded bg-info-600"></div>
<div class="text-xs">
<div class="font-medium text-neutral-700">Info</div>
<div class="font-mono text-neutral-400">#2563EB</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- 字体层级 -->
<section class="bg-white rounded-lg border border-neutral-200 shadow-xs p-6">
<h2 class="text-base font-semibold text-neutral-800 mb-4">字体层级 · Typography</h2>
<div class="space-y-3">
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">H1 · 20/600</div>
<div class="text-xl font-semibold text-neutral-800">全部房源</div>
</div>
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">H2 · 16/600</div>
<div class="text-base font-semibold text-neutral-800">房源基本信息</div>
</div>
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">Body · 14/400</div>
<div class="text-sm text-neutral-700">绿城百合公寓 · 南北通透三居 · 业主诚心出售</div>
</div>
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">Data · 14/500</div>
<div class="text-sm font-medium text-neutral-900 tabular-nums">680 万 · 128.50 ㎡</div>
</div>
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">Number · 20/600</div>
<div class="text-xl font-semibold tabular-nums text-neutral-900">24,891</div>
</div>
<div class="flex items-baseline gap-4 border-b border-neutral-100 pb-2">
<div class="w-32 text-xs text-neutral-500">Caption · 12/400</div>
<div class="text-xs text-neutral-500">最近同步于 2 分钟前</div>
</div>
<div class="flex items-baseline gap-4">
<div class="w-32 text-xs text-neutral-500">Mono · 12/400</div>
<div class="text-xs font-mono text-neutral-600">F20268142</div>
</div>
</div>
</section>
<div class="text-center text-xs text-neutral-400 py-4">
Fonrey UI System v1.0 · Preview · 2026-04-25
</div>
</main>
</div>
<!-- ============ Toast 演示 ============ -->
<div class="fixed bottom-6 right-6 z-[70] space-y-2 w-80">
<div class="flex gap-3 p-3 bg-white rounded-lg shadow-lg border border-neutral-200">
<div class="w-8 h-8 rounded-full bg-success-50 text-success-600 flex items-center justify-center shrink-0">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm3.707-9.293a1 1 0 0 0-1.414-1.414L9 10.586 7.707 9.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4Z" clip-rule="evenodd"/></svg>
</div>
<div class="flex-1 text-sm">
<div class="font-medium text-neutral-800">保存成功</div>
<div class="text-xs text-neutral-500 mt-0.5">房源信息已更新</div>
</div>
<button class="text-neutral-400 hover:text-neutral-600"><svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg></button>
</div>
<div class="flex gap-3 p-3 bg-white rounded-lg shadow-lg border border-neutral-200">
<div class="w-8 h-8 rounded-full bg-info-50 text-info-600 flex items-center justify-center shrink-0">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" clip-rule="evenodd"/></svg>
</div>
<div class="flex-1 text-sm">
<div class="font-medium text-neutral-800">有 3 条新消息</div>
<div class="text-xs text-primary-600 hover:underline cursor-pointer mt-0.5">点击查看 →</div>
</div>
</div>
</div>
</body>
<script>
// v1.1 决策:<1280px 显示引导提示页
(function(){
const gate = document.createElement('div');
gate.id = 'screen-gate';
gate.className = 'fixed inset-0 z-[100] bg-white flex-col items-center justify-center px-8 text-center hidden';
gate.innerHTML = `
<div class="w-16 h-16 rounded-xl bg-primary-600 text-white flex items-center justify-center text-2xl font-semibold mb-6">F</div>
<h1 class="text-xl font-semibold text-neutral-800 mb-2">请使用桌面端访问 Fonrey</h1>
<p class="text-sm text-neutral-600 max-w-md mb-6">
Fonrey 为桌面工作场景设计,建议屏幕宽度 ≥ 1280px。请放大浏览器窗口或切换到电脑端访问。
</p>
<p class="text-xs text-neutral-400">当前窗口:<span id="screen-gate-width" class="tabular-nums"></span> px</p>
`;
document.body.appendChild(gate);
function check(){
const w = window.innerWidth;
document.getElementById('screen-gate-width').textContent = w;
if (w < 1280) { gate.classList.remove('hidden'); gate.classList.add('flex'); }
else { gate.classList.add('hidden'); gate.classList.remove('flex'); }
}
window.addEventListener('resize', check);
check();
})();
</script>
</html>