diff --git a/.agent/skills/ui_standards/SKILL.md b/.agent/skills/ui_standards/SKILL.md new file mode 100644 index 0000000..cf34371 --- /dev/null +++ b/.agent/skills/ui_standards/SKILL.md @@ -0,0 +1,40 @@ +--- +name: UI Design Standards +description: Rules and guidelines for consistent UI components including dropdowns, popovers, and list items. +--- + +# UI Design Standards + +This skill provides guidelines for building consistent, accessible, and high-quality UI components within the codebase. + +## 1. Popovers and Dropdowns (弹窗与下拉规范) + +### Alignment (定位逻辑) +- **Right Edge Alignment**: For triggers located on the right side of the screen or navigation bar, the associated dropdown/popover MUST be right-aligned with the trigger. + - In Radix UI / shadcn: Use `align="end"`. + - In CSS/Tailwind: Use `absolute right-0`. +- **Vertical Spacing**: Maintain a consistent vertical offset from the trigger, typically `8px` (`mt-2` or `sideOffset={8}`). + +### Layering and Visual Hierarchy (层级管理) +- **Z-Index**: Always explicitly declare a `z-index` of `50` or higher for floating UI elements to ensure they appear above all other content. +- **Background Integrity**: Drodown containers should use opaque background colors (e.g., `bg-white` or theme-defined `bg-surface`) to prevent "see-through" visual noise from underlying content. Avoid excessive transparency/blur if it compromises readability. +- **Shadows**: Use distinct shadows (e.g., `shadow-md` or `shadow-xl`) to provide depth. + +### Clipping Prevention (溢出处理) +- Use Portals (e.g., `DropdownMenu.Portal`) to render floating content into the `document.body`. This prevents the menu from being clipped by parents with `overflow: hidden`. + +## 2. List Items and Components (列表项规范) + +### Layout and Alignment (对齐规范) +- **Flexbox**: Use `flex items-center` for all list items that include both an icon and a text label. +- **Icon Spacing**: Maintain a standard horizontal gap between icons and labels (recommended: `gap-3` or `12px`). + +### Component Integrity (防压缩与自适应) +- **Icon Shrinking**: Icons within flex containers MUST have `flex-shrink: 0` (Tailwind: `shrink-0`) to prevent them from distorting when the container is narrow. +- **Minimum Width**: Containers displaying variable-length text (like user emails) should have a reasonable `min-width` (e.g., `min-w-[200px]`) to ensure comfortable display. + +## 3. Interaction and Accessibility + +- **Keyboard Support**: Ensure dropdowns support `Esc` to close and allow keyboard navigation (Tab/Arrows). +- **Outside Clicks**: Implement "click outside to close" logic for all popovers. +- **Motion**: Use subtle entry/exit animations (e.g., 120ms fade and scale). Respect `prefers-reduced-motion`. diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..e329023 --- /dev/null +++ b/.cursorrules @@ -0,0 +1,12 @@ +# UI Development Rules + +## 1. 弹窗与下拉规范 (Popovers & Dropdowns) +- **定位逻辑**:除非特殊说明,右上角的触发器对应的弹出层必须强制 `right-0` (或 `align="end"`) 对齐。 +- **层级管理**:所有 Floating UI 必须显式声明 `z-[50+]` 以防被 Content Card 遮挡或透视。 +- **背景显示**:下拉容器背景应使用不透明色(如 `bg-white` 或主题定义的 `bg-surface`),避免透明度导致的视觉干扰。 + +## 2. 列表项规范 (List Items) +- **对齐**:所有带有图标的列表项必须使用 `flex items-center`。 +- **防止重叠**:图标与文字之间应保持足够的间距(推荐 `gap-3` 或 `12px`)。 +- **防压缩**:图标必须带有 `flex-shrink: 0` (或 Tailwind 的 `shrink-0`),防止在容器宽度不足时图标变形。 +- **最小宽度**:涉及用户信息的容器应设置合理的 `min-width` (如 `min-w-[200px]`) 以保证长文字内容正常显示。 diff --git a/src/components/UnifiedNavigation.tsx b/src/components/UnifiedNavigation.tsx index 104aad2..0bc7561 100644 --- a/src/components/UnifiedNavigation.tsx +++ b/src/components/UnifiedNavigation.tsx @@ -275,7 +275,7 @@ export default function UnifiedNavigation() {