Initial commit: 12个专业个人简历作品集项目
12
.claude/settings.local.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(find:*)",
|
||||
"Bash(git init:*)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
||||
60
.gitignore
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
# macOS系统文件
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# 缩略图
|
||||
._*
|
||||
|
||||
# 文件系统元数据
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# 目录和文件
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
|
||||
# 编辑器配置
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# 构建输出
|
||||
dist/
|
||||
build/
|
||||
*.log
|
||||
|
||||
# 环境变量
|
||||
.env
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# 临时文件
|
||||
*.tmp
|
||||
*.temp
|
||||
|
||||
# 大型二进制文件(可选,如果需要保留fbx文件则注释掉以下行)
|
||||
# *.fbx
|
||||
# *.psd
|
||||
# *.mp4
|
||||
# *.mov
|
||||
21
个人简历_交通物流/.claude/settings.local.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(find:*)",
|
||||
"Bash(open index.html)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git push:*)",
|
||||
"Bash(python3:*)",
|
||||
"Bash(open http://localhost:8080)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(gh repo view:*)",
|
||||
"Bash(open:*)",
|
||||
"mcp__serena__read_file",
|
||||
"Bash(git remote set-url:*)",
|
||||
"Bash(gh api:*)",
|
||||
"mcp__serena__list_dir"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
||||
388
个人简历_交通物流/.cursor/rules/design.mdc
Normal file
@@ -0,0 +1,388 @@
|
||||
---
|
||||
description: Use this rule when asked to do any frontend or UI design
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
36
个人简历_交通物流/.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v4
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: '.'
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
32
个人简历_交通物流/.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# 依赖目录
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# 环境变量
|
||||
.env
|
||||
.env.local
|
||||
.env.production.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
|
||||
# 编辑器目录
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Vercel
|
||||
.vercel
|
||||
|
||||
# 日志文件
|
||||
logs
|
||||
*.log
|
||||
|
||||
# 临时文件
|
||||
.temp
|
||||
.tmp
|
||||
.cache
|
||||
0
个人简历_交通物流/.nojekyll
Normal file
521
个人简历_交通物流/.superdesign/design_iterations/default_ui_darkmode.css
Normal file
@@ -0,0 +1,521 @@
|
||||
/* ========================================
|
||||
Dark Mode UI Framework
|
||||
A beautiful dark mode design system
|
||||
======================================== */
|
||||
|
||||
/* ========================================
|
||||
CSS Variables & Theme
|
||||
======================================== */
|
||||
:root {
|
||||
/* Dark Mode Color Palette */
|
||||
--background: oklch(0.145 0 0);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.205 0 0);
|
||||
--card-foreground: oklch(0.985 0 0);
|
||||
--primary: oklch(0.922 0 0);
|
||||
--primary-foreground: oklch(0.205 0 0);
|
||||
--secondary: oklch(0.269 0 0);
|
||||
--secondary-foreground: oklch(0.985 0 0);
|
||||
--muted: oklch(0.269 0 0);
|
||||
--muted-foreground: oklch(0.708 0 0);
|
||||
--accent: oklch(0.269 0 0);
|
||||
--accent-foreground: oklch(0.985 0 0);
|
||||
--destructive: oklch(0.704 0.191 22.216);
|
||||
--border: oklch(1 0 0 / 10%);
|
||||
--input: oklch(1 0 0 / 15%);
|
||||
--ring: oklch(0.556 0 0);
|
||||
|
||||
/* Spacing & Layout */
|
||||
--radius: 0.625rem;
|
||||
--spacing-xs: 0.25rem;
|
||||
--spacing-sm: 0.5rem;
|
||||
--spacing-md: 0.75rem;
|
||||
--spacing-lg: 1rem;
|
||||
--spacing-xl: 1.5rem;
|
||||
--spacing-2xl: 2rem;
|
||||
--spacing-3xl: 3rem;
|
||||
|
||||
/* Typography */
|
||||
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
--font-size-xs: 0.75rem;
|
||||
--font-size-sm: 0.875rem;
|
||||
--font-size-base: 1rem;
|
||||
--font-size-lg: 1.125rem;
|
||||
--font-size-xl: 1.25rem;
|
||||
--font-size-2xl: 1.5rem;
|
||||
--font-size-3xl: 1.875rem;
|
||||
--font-size-4xl: 2.25rem;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Base Styles
|
||||
======================================== */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-family);
|
||||
line-height: 1.6;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
html.dark {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Layout Components
|
||||
======================================== */
|
||||
.container {
|
||||
max-width: 64rem;
|
||||
margin: 0 auto;
|
||||
padding: var(--spacing-2xl) var(--spacing-lg);
|
||||
}
|
||||
|
||||
.container-sm {
|
||||
max-width: 42rem;
|
||||
}
|
||||
|
||||
.container-lg {
|
||||
max-width: 80rem;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
|
||||
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||
.grid-cols-auto { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
|
||||
|
||||
.gap-sm { gap: var(--spacing-sm); }
|
||||
.gap-md { gap: var(--spacing-md); }
|
||||
.gap-lg { gap: var(--spacing-lg); }
|
||||
.gap-xl { gap: var(--spacing-xl); }
|
||||
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.justify-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.justify-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Card Components
|
||||
======================================== */
|
||||
.card {
|
||||
background-color: var(--card);
|
||||
color: var(--card-foreground);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: calc(var(--radius) + 4px);
|
||||
padding: var(--spacing-xl);
|
||||
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Button Components
|
||||
======================================== */
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--spacing-sm);
|
||||
white-space: nowrap;
|
||||
border-radius: var(--radius);
|
||||
font-size: var(--font-size-sm);
|
||||
font-weight: 500;
|
||||
transition: all 0.2s;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: var(--spacing-sm) var(--spacing-lg);
|
||||
min-height: 2.25rem;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: var(--primary);
|
||||
color: var(--primary-foreground);
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: rgba(236, 236, 236, 0.9);
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--border);
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
.btn-outline:hover {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
|
||||
.btn-ghost {
|
||||
background-color: transparent;
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
.btn-ghost:hover {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
|
||||
.btn-destructive {
|
||||
background-color: var(--destructive);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-destructive:hover {
|
||||
background-color: rgba(220, 38, 38, 0.9);
|
||||
}
|
||||
|
||||
/* Button Sizes */
|
||||
.btn-sm {
|
||||
padding: var(--spacing-xs) var(--spacing-md);
|
||||
font-size: var(--font-size-xs);
|
||||
min-height: 2rem;
|
||||
}
|
||||
|
||||
.btn-lg {
|
||||
padding: var(--spacing-md) var(--spacing-xl);
|
||||
font-size: var(--font-size-base);
|
||||
min-height: 2.75rem;
|
||||
}
|
||||
|
||||
.btn-icon {
|
||||
padding: var(--spacing-sm);
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Form Components
|
||||
======================================== */
|
||||
.form-input {
|
||||
width: 100%;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
color: var(--foreground);
|
||||
font-size: var(--font-size-sm);
|
||||
outline: none;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.form-input:focus {
|
||||
border-color: var(--ring);
|
||||
box-shadow: 0 0 0 3px rgba(136, 136, 136, 0.5);
|
||||
}
|
||||
|
||||
.form-input::placeholder {
|
||||
color: var(--muted-foreground);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Badge Components
|
||||
======================================== */
|
||||
.badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid;
|
||||
padding: 0.125rem var(--spacing-sm);
|
||||
font-size: var(--font-size-xs);
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Priority Badge Variants */
|
||||
.badge-priority-high {
|
||||
background: rgba(127, 29, 29, 0.3);
|
||||
color: rgb(252, 165, 165);
|
||||
border: 1px solid rgba(153, 27, 27, 0.5);
|
||||
}
|
||||
|
||||
.badge-priority-medium {
|
||||
background: rgba(120, 53, 15, 0.3);
|
||||
color: rgb(252, 211, 77);
|
||||
border: 1px solid rgba(146, 64, 14, 0.5);
|
||||
}
|
||||
|
||||
.badge-priority-low {
|
||||
background: rgba(20, 83, 45, 0.3);
|
||||
color: rgb(134, 239, 172);
|
||||
border: 1px solid rgba(22, 101, 52, 0.5);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Tab Components
|
||||
======================================== */
|
||||
.tab-list {
|
||||
display: flex;
|
||||
gap: var(--spacing-sm);
|
||||
margin-bottom: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.tab-button {
|
||||
background-color: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
color: var(--foreground);
|
||||
text-transform: capitalize;
|
||||
font-weight: 500;
|
||||
transition: all 0.2s ease;
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
font-size: var(--font-size-sm);
|
||||
}
|
||||
|
||||
.tab-button:hover {
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
border-color: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.tab-button.active {
|
||||
background-color: #f8f9fa !important;
|
||||
color: #1a1a1a !important;
|
||||
border-color: #f8f9fa !important;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.tab-button.active:hover {
|
||||
background-color: #e9ecef !important;
|
||||
border-color: #e9ecef !important;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Typography
|
||||
======================================== */
|
||||
.text-xs { font-size: var(--font-size-xs); }
|
||||
.text-sm { font-size: var(--font-size-sm); }
|
||||
.text-base { font-size: var(--font-size-base); }
|
||||
.text-lg { font-size: var(--font-size-lg); }
|
||||
.text-xl { font-size: var(--font-size-xl); }
|
||||
.text-2xl { font-size: var(--font-size-2xl); }
|
||||
.text-3xl { font-size: var(--font-size-3xl); }
|
||||
.text-4xl { font-size: var(--font-size-4xl); }
|
||||
|
||||
.font-normal { font-weight: 400; }
|
||||
.font-medium { font-weight: 500; }
|
||||
.font-semibold { font-weight: 600; }
|
||||
.font-bold { font-weight: 700; }
|
||||
|
||||
.text-primary { color: var(--primary); }
|
||||
.text-muted { color: var(--muted-foreground); }
|
||||
.text-destructive { color: var(--destructive); }
|
||||
|
||||
.gradient-text {
|
||||
background: linear-gradient(to right, var(--primary), rgba(236, 236, 236, 0.6));
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Icon System
|
||||
======================================== */
|
||||
.icon {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
fill: currentColor;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.icon-sm { width: 0.875rem; height: 0.875rem; }
|
||||
.icon-lg { width: 1.25rem; height: 1.25rem; }
|
||||
.icon-xl { width: 1.5rem; height: 1.5rem; }
|
||||
.icon-2xl { width: 2rem; height: 2rem; }
|
||||
|
||||
/* ========================================
|
||||
Interactive Components
|
||||
======================================== */
|
||||
.checkbox {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.checkbox:hover {
|
||||
border-color: var(--ring);
|
||||
}
|
||||
|
||||
.checkbox.checked {
|
||||
background-color: rgb(22, 163, 74);
|
||||
border-color: rgb(22, 163, 74);
|
||||
}
|
||||
|
||||
.checkbox.checked::after {
|
||||
content: '✓';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: white;
|
||||
font-size: 0.75rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
List Components
|
||||
======================================== */
|
||||
.list-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--spacing-lg);
|
||||
padding: var(--spacing-lg);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||
transition: background-color 0.2s;
|
||||
}
|
||||
|
||||
.list-item:hover {
|
||||
background-color: rgba(255, 255, 255, 0.025);
|
||||
}
|
||||
|
||||
.list-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.list-item.completed {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Empty State Component
|
||||
======================================== */
|
||||
.empty-state {
|
||||
text-align: center;
|
||||
padding: var(--spacing-3xl) var(--spacing-lg);
|
||||
color: var(--muted-foreground);
|
||||
}
|
||||
|
||||
.empty-state .icon {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
margin: 0 auto var(--spacing-lg);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Utility Classes
|
||||
======================================== */
|
||||
.hidden { display: none; }
|
||||
.block { display: block; }
|
||||
.flex { display: flex; }
|
||||
.inline-flex { display: inline-flex; }
|
||||
|
||||
.w-full { width: 100%; }
|
||||
.h-full { height: 100%; }
|
||||
.min-h-screen { min-height: 100vh; }
|
||||
|
||||
.opacity-50 { opacity: 0.5; }
|
||||
.opacity-60 { opacity: 0.6; }
|
||||
.opacity-75 { opacity: 0.75; }
|
||||
|
||||
.transition-all { transition: all 0.2s ease; }
|
||||
.transition-colors { transition: color 0.2s ease, background-color 0.2s ease; }
|
||||
.transition-opacity { transition: opacity 0.2s ease; }
|
||||
|
||||
/* ========================================
|
||||
Responsive Design
|
||||
======================================== */
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
padding: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.grid-cols-auto {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.flex-col-mobile {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.text-center-mobile {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.gap-sm-mobile { gap: var(--spacing-sm); }
|
||||
|
||||
.hidden-mobile { display: none; }
|
||||
.block-mobile { display: block; }
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.text-2xl { font-size: var(--font-size-xl); }
|
||||
.text-3xl { font-size: var(--font-size-2xl); }
|
||||
.text-4xl { font-size: var(--font-size-3xl); }
|
||||
|
||||
.container {
|
||||
padding: var(--spacing-lg) var(--spacing-sm);
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Animation Utilities
|
||||
======================================== */
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(10px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
.animate-fade-in {
|
||||
animation: fadeIn 0.3s ease-out;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Focus & Accessibility
|
||||
======================================== */
|
||||
.focus-visible:focus-visible {
|
||||
outline: 2px solid var(--ring);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
* {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
114
个人简历_交通物流/.superdesign/design_iterations/logistics_theme_1.css
Normal file
@@ -0,0 +1,114 @@
|
||||
:root {
|
||||
/* 交通物流产业专业配色 */
|
||||
--primary-blue: #0052CC; /* 铁路蓝 - 主色调 */
|
||||
--secondary-red: #D32F2F; /* 高铁红 - 强调色 */
|
||||
--logistics-green: #00897B; /* 物流绿 - 成功状态 */
|
||||
--steel-gray: #455A64; /* 钢铁灰 - 专业感 */
|
||||
--cloud-white: #FAFAFA; /* 云白 - 背景色 */
|
||||
|
||||
/* 功能性色彩 */
|
||||
--track-silver: #B0BEC5; /* 轨道银 */
|
||||
--signal-yellow: #FFA726; /* 信号黄 */
|
||||
--night-blue: #1A237E; /* 夜航蓝 */
|
||||
--cargo-brown: #5D4037; /* 货运棕 */
|
||||
|
||||
/* 渐变色 */
|
||||
--gradient-primary: linear-gradient(135deg, #0052CC 0%, #1976D2 100%);
|
||||
--gradient-speed: linear-gradient(90deg, #0052CC 0%, #00897B 50%, #FFA726 100%);
|
||||
--gradient-track: linear-gradient(180deg, rgba(0,82,204,0.1) 0%, rgba(0,82,204,0) 100%);
|
||||
|
||||
/* 文字颜色 */
|
||||
--text-primary: #263238;
|
||||
--text-secondary: #546E7A;
|
||||
--text-light: #90A4AE;
|
||||
--text-white: #FFFFFF;
|
||||
|
||||
/* 背景色 */
|
||||
--bg-primary: #FFFFFF;
|
||||
--bg-secondary: #F5F7FA;
|
||||
--bg-card: #FFFFFF;
|
||||
--bg-hover: rgba(0, 82, 204, 0.05);
|
||||
|
||||
/* 边框 */
|
||||
--border-light: #E0E0E0;
|
||||
--border-medium: #BDBDBD;
|
||||
--border-focus: #0052CC;
|
||||
|
||||
/* 字体 */
|
||||
--font-primary: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||
--font-heading: 'Space Grotesk', 'Inter', sans-serif;
|
||||
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
||||
|
||||
/* 字体大小 */
|
||||
--text-xs: 0.75rem;
|
||||
--text-sm: 0.875rem;
|
||||
--text-base: 1rem;
|
||||
--text-lg: 1.125rem;
|
||||
--text-xl: 1.25rem;
|
||||
--text-2xl: 1.5rem;
|
||||
--text-3xl: 1.875rem;
|
||||
--text-4xl: 2.25rem;
|
||||
--text-5xl: 3rem;
|
||||
|
||||
/* 间距 */
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
|
||||
/* 圆角 */
|
||||
--radius-sm: 0.25rem;
|
||||
--radius-md: 0.5rem;
|
||||
--radius-lg: 0.75rem;
|
||||
--radius-xl: 1rem;
|
||||
--radius-2xl: 1.5rem;
|
||||
--radius-full: 9999px;
|
||||
|
||||
/* 阴影 */
|
||||
--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
||||
--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
||||
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||
--shadow-card: 0 2px 8px rgba(0, 82, 204, 0.08);
|
||||
--shadow-hover: 0 8px 16px rgba(0, 82, 204, 0.12);
|
||||
|
||||
/* 动画时长 */
|
||||
--duration-fast: 150ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-slow: 500ms;
|
||||
--duration-slower: 800ms;
|
||||
|
||||
/* 动画缓动 */
|
||||
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
||||
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
||||
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
|
||||
/* 特效 */
|
||||
--blur-sm: blur(4px);
|
||||
--blur-md: blur(8px);
|
||||
--blur-lg: blur(12px);
|
||||
--blur-xl: blur(16px);
|
||||
}
|
||||
|
||||
/* 深色模式变量(可选) */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg-primary: #0F172A;
|
||||
--bg-secondary: #1E293B;
|
||||
--bg-card: #1E293B;
|
||||
--text-primary: #F1F5F9;
|
||||
--text-secondary: #CBD5E1;
|
||||
--border-light: #334155;
|
||||
--border-medium: #475569;
|
||||
}
|
||||
}
|
||||
177
个人简历_交通物流/.superdesign/design_iterations/logistics_theme_2.css
Normal file
@@ -0,0 +1,177 @@
|
||||
:root {
|
||||
/* 统一蓝色系 - 交通物流专业配色 */
|
||||
--primary-900: #0C1929; /* 深夜蓝 - 最深色 */
|
||||
--primary-800: #1A2F4B; /* 深海蓝 */
|
||||
--primary-700: #234567; /* 海军蓝 */
|
||||
--primary-600: #2C5F8D; /* 标准蓝 */
|
||||
--primary-500: #3B7CB8; /* 主色调 - 铁路蓝 */
|
||||
--primary-400: #5A9FD4; /* 天空蓝 */
|
||||
--primary-300: #7FB5E1; /* 浅天蓝 */
|
||||
--primary-200: #A5CEEC; /* 云朵蓝 */
|
||||
--primary-100: #D2E5F5; /* 薄雾蓝 */
|
||||
--primary-50: #EBF4FB; /* 极浅蓝 */
|
||||
|
||||
/* 中性色 - 带蓝色调 */
|
||||
--gray-900: #1A1F2B; /* 深灰蓝 */
|
||||
--gray-800: #2C3241; /* 暗灰蓝 */
|
||||
--gray-700: #3E4557; /* 中深灰蓝 */
|
||||
--gray-600: #525A70; /* 中灰蓝 */
|
||||
--gray-500: #6B7489; /* 标准灰蓝 */
|
||||
--gray-400: #8892A6; /* 浅灰蓝 */
|
||||
--gray-300: #A8B2C3; /* 更浅灰蓝 */
|
||||
--gray-200: #CAD2DD; /* 很浅灰蓝 */
|
||||
--gray-100: #E5E9EF; /* 极浅灰蓝 */
|
||||
--gray-50: #F5F7FA; /* 背景灰蓝 */
|
||||
|
||||
/* 功能色 - 蓝色系调和 */
|
||||
--accent-teal: #2E7D8C; /* 青蓝 - 成功/完成 */
|
||||
--accent-slate: #4A5F7A; /* 石板蓝 - 信息 */
|
||||
--accent-steel: #546B84; /* 钢铁蓝 - 次要 */
|
||||
--accent-ice: #6B9BD2; /* 冰蓝 - 高亮 */
|
||||
|
||||
/* 语义色彩 */
|
||||
--success: #2E7D8C; /* 成功 - 青蓝色 */
|
||||
--warning: #7A8BA3; /* 警告 - 中性蓝灰 */
|
||||
--error: #5A6B84; /* 错误 - 深蓝灰 */
|
||||
--info: #3B7CB8; /* 信息 - 主蓝色 */
|
||||
|
||||
/* 渐变 */
|
||||
--gradient-primary: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-400) 100%);
|
||||
--gradient-hero: linear-gradient(180deg, var(--primary-900) 0%, var(--primary-700) 50%, var(--primary-500) 100%);
|
||||
--gradient-card: linear-gradient(135deg, var(--primary-50) 0%, var(--gray-50) 100%);
|
||||
--gradient-mesh: radial-gradient(at 20% 80%, var(--primary-100) 0%, transparent 50%),
|
||||
radial-gradient(at 80% 20%, var(--primary-200) 0%, transparent 50%);
|
||||
|
||||
/* 文字颜色 */
|
||||
--text-primary: var(--gray-900);
|
||||
--text-secondary: var(--gray-700);
|
||||
--text-muted: var(--gray-500);
|
||||
--text-light: var(--gray-400);
|
||||
--text-white: #FFFFFF;
|
||||
--text-on-primary: #FFFFFF;
|
||||
|
||||
/* 背景色 */
|
||||
--bg-primary: #FFFFFF;
|
||||
--bg-secondary: var(--gray-50);
|
||||
--bg-tertiary: var(--primary-50);
|
||||
--bg-card: #FFFFFF;
|
||||
--bg-overlay: rgba(12, 25, 41, 0.6);
|
||||
--bg-hover: rgba(59, 124, 184, 0.08);
|
||||
--bg-active: rgba(59, 124, 184, 0.12);
|
||||
|
||||
/* 边框 */
|
||||
--border-light: var(--gray-200);
|
||||
--border-default: var(--gray-300);
|
||||
--border-medium: var(--gray-400);
|
||||
--border-focus: var(--primary-500);
|
||||
--border-hover: var(--primary-400);
|
||||
|
||||
/* 字体 */
|
||||
--font-primary: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||
--font-heading: 'Space Grotesk', 'Inter', sans-serif;
|
||||
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
||||
|
||||
/* 字体大小 */
|
||||
--text-xs: 0.75rem;
|
||||
--text-sm: 0.875rem;
|
||||
--text-base: 1rem;
|
||||
--text-lg: 1.125rem;
|
||||
--text-xl: 1.25rem;
|
||||
--text-2xl: 1.5rem;
|
||||
--text-3xl: 1.875rem;
|
||||
--text-4xl: 2.25rem;
|
||||
--text-5xl: 3rem;
|
||||
--text-6xl: 3.75rem;
|
||||
|
||||
/* 字体粗细 */
|
||||
--font-thin: 100;
|
||||
--font-light: 300;
|
||||
--font-normal: 400;
|
||||
--font-medium: 500;
|
||||
--font-semibold: 600;
|
||||
--font-bold: 700;
|
||||
--font-black: 900;
|
||||
|
||||
/* 间距 */
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
--space-24: 6rem;
|
||||
|
||||
/* 圆角 */
|
||||
--radius-sm: 0.375rem;
|
||||
--radius-md: 0.5rem;
|
||||
--radius-lg: 0.75rem;
|
||||
--radius-xl: 1rem;
|
||||
--radius-2xl: 1.5rem;
|
||||
--radius-3xl: 2rem;
|
||||
--radius-full: 9999px;
|
||||
|
||||
/* 阴影 - 蓝色调 */
|
||||
--shadow-xs: 0 1px 2px 0 rgba(12, 25, 41, 0.05);
|
||||
--shadow-sm: 0 1px 3px 0 rgba(12, 25, 41, 0.1), 0 1px 2px 0 rgba(12, 25, 41, 0.06);
|
||||
--shadow-md: 0 4px 6px -1px rgba(12, 25, 41, 0.1), 0 2px 4px -1px rgba(12, 25, 41, 0.06);
|
||||
--shadow-lg: 0 10px 15px -3px rgba(12, 25, 41, 0.1), 0 4px 6px -2px rgba(12, 25, 41, 0.05);
|
||||
--shadow-xl: 0 20px 25px -5px rgba(12, 25, 41, 0.12), 0 10px 10px -5px rgba(12, 25, 41, 0.04);
|
||||
--shadow-2xl: 0 25px 50px -12px rgba(12, 25, 41, 0.25);
|
||||
--shadow-card: 0 2px 8px rgba(59, 124, 184, 0.1);
|
||||
--shadow-hover: 0 8px 20px rgba(59, 124, 184, 0.15);
|
||||
--shadow-focus: 0 0 0 3px rgba(59, 124, 184, 0.2);
|
||||
|
||||
/* 动画时长 */
|
||||
--duration-instant: 100ms;
|
||||
--duration-fast: 200ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-slow: 500ms;
|
||||
--duration-slower: 700ms;
|
||||
--duration-slowest: 1000ms;
|
||||
|
||||
/* 动画缓动 */
|
||||
--ease-linear: linear;
|
||||
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
||||
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
||||
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
--ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||
|
||||
/* 特效 */
|
||||
--blur-sm: blur(4px);
|
||||
--blur-md: blur(8px);
|
||||
--blur-lg: blur(12px);
|
||||
--blur-xl: blur(20px);
|
||||
--blur-2xl: blur(40px);
|
||||
|
||||
/* 透明度 */
|
||||
--opacity-0: 0;
|
||||
--opacity-5: 0.05;
|
||||
--opacity-10: 0.1;
|
||||
--opacity-20: 0.2;
|
||||
--opacity-30: 0.3;
|
||||
--opacity-40: 0.4;
|
||||
--opacity-50: 0.5;
|
||||
--opacity-60: 0.6;
|
||||
--opacity-70: 0.7;
|
||||
--opacity-80: 0.8;
|
||||
--opacity-90: 0.9;
|
||||
--opacity-100: 1;
|
||||
|
||||
/* 层级 */
|
||||
--z-0: 0;
|
||||
--z-10: 10;
|
||||
--z-20: 20;
|
||||
--z-30: 30;
|
||||
--z-40: 40;
|
||||
--z-50: 50;
|
||||
--z-modal: 1000;
|
||||
--z-popover: 1100;
|
||||
--z-tooltip: 1200;
|
||||
--z-notification: 1300;
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
:root {
|
||||
/* 极光蓝紫渐变色系 - 高级物流主题 */
|
||||
|
||||
/* 主色调 - 深邃蓝紫 */
|
||||
--aurora-950: #0A0E27; /* 极夜深蓝 */
|
||||
--aurora-900: #0F1729; /* 深空蓝 */
|
||||
--aurora-800: #1A2942; /* 午夜蓝 */
|
||||
--aurora-700: #273E63; /* 深海蓝 */
|
||||
--aurora-600: #3B5998; /* 皇家蓝 */
|
||||
--aurora-500: #5B7EC2; /* 极光蓝 - 主色 */
|
||||
--aurora-400: #7B9FE0; /* 天际蓝 */
|
||||
--aurora-300: #9BB9F1; /* 晨曦蓝 */
|
||||
--aurora-200: #BDD4F7; /* 薄雾蓝 */
|
||||
--aurora-100: #E0EBFB; /* 冰晶蓝 */
|
||||
--aurora-50: #F3F7FE; /* 极光白 */
|
||||
|
||||
/* 紫色调 - 神秘感 */
|
||||
--purple-900: #1E0E3E; /* 深紫 */
|
||||
--purple-800: #2D1B69; /* 皇家紫 */
|
||||
--purple-700: #3F2B96; /* 贵族紫 */
|
||||
--purple-600: #5141C3; /* 极光紫 */
|
||||
--purple-500: #6B5DD3; /* 薰衣草紫 */
|
||||
--purple-400: #8B7FE5; /* 丁香紫 */
|
||||
--purple-300: #ACA3F2; /* 淡紫 */
|
||||
--purple-200: #CFC9F8; /* 浅紫 */
|
||||
--purple-100: #E9E6FC; /* 极浅紫 */
|
||||
|
||||
/* 青色调 - 科技感 */
|
||||
--cyan-600: #0891B2; /* 科技青 */
|
||||
--cyan-500: #06B6D4; /* 青蓝 */
|
||||
--cyan-400: #22D3EE; /* 亮青 */
|
||||
--cyan-300: #67E8F9; /* 浅青 */
|
||||
--cyan-200: #A5F3FC; /* 极浅青 */
|
||||
|
||||
/* 高级渐变组合 */
|
||||
--gradient-aurora: linear-gradient(135deg,
|
||||
var(--aurora-600) 0%,
|
||||
var(--purple-600) 50%,
|
||||
var(--cyan-500) 100%);
|
||||
|
||||
--gradient-premium: linear-gradient(90deg,
|
||||
#667eea 0%,
|
||||
#764ba2 25%,
|
||||
#6B8DD6 50%,
|
||||
#8E37D7 75%,
|
||||
#667eea 100%);
|
||||
|
||||
--gradient-mesh:
|
||||
radial-gradient(at 20% 80%, var(--purple-400) 0%, transparent 50%),
|
||||
radial-gradient(at 80% 20%, var(--cyan-400) 0%, transparent 50%),
|
||||
radial-gradient(at 40% 40%, var(--aurora-400) 0%, transparent 50%),
|
||||
linear-gradient(135deg, var(--aurora-950) 0%, var(--purple-900) 100%);
|
||||
|
||||
--gradient-glass: linear-gradient(135deg,
|
||||
rgba(255, 255, 255, 0.1) 0%,
|
||||
rgba(255, 255, 255, 0.05) 100%);
|
||||
|
||||
--gradient-holographic: linear-gradient(45deg,
|
||||
#ff0080,
|
||||
#ff8c00,
|
||||
#ffd700,
|
||||
#00ff00,
|
||||
#00ffff,
|
||||
#0080ff,
|
||||
#ff0080);
|
||||
|
||||
--gradient-card: linear-gradient(135deg,
|
||||
rgba(91, 126, 194, 0.1) 0%,
|
||||
rgba(107, 93, 211, 0.05) 50%,
|
||||
rgba(6, 182, 212, 0.1) 100%);
|
||||
|
||||
--gradient-text: linear-gradient(90deg,
|
||||
var(--aurora-400) 0%,
|
||||
var(--purple-400) 33%,
|
||||
var(--cyan-400) 66%,
|
||||
var(--aurora-400) 100%);
|
||||
|
||||
/* 毛玻璃效果背景 */
|
||||
--glass-white: rgba(255, 255, 255, 0.08);
|
||||
--glass-white-hover: rgba(255, 255, 255, 0.12);
|
||||
--glass-dark: rgba(10, 14, 39, 0.6);
|
||||
--glass-purple: rgba(81, 65, 195, 0.1);
|
||||
--glass-cyan: rgba(6, 182, 212, 0.1);
|
||||
|
||||
/* 霓虹光效 */
|
||||
--neon-blue: #00d4ff;
|
||||
--neon-purple: #a855f7;
|
||||
--neon-pink: #ec4899;
|
||||
--glow-blue: 0 0 20px rgba(0, 212, 255, 0.5);
|
||||
--glow-purple: 0 0 20px rgba(168, 85, 247, 0.5);
|
||||
--glow-pink: 0 0 20px rgba(236, 72, 153, 0.5);
|
||||
|
||||
/* 文字颜色 */
|
||||
--text-primary: var(--aurora-50);
|
||||
--text-secondary: var(--aurora-200);
|
||||
--text-muted: var(--aurora-300);
|
||||
--text-accent: var(--cyan-400);
|
||||
--text-gradient: var(--gradient-text);
|
||||
|
||||
/* 背景色 */
|
||||
--bg-primary: var(--aurora-950);
|
||||
--bg-secondary: var(--aurora-900);
|
||||
--bg-tertiary: var(--aurora-800);
|
||||
--bg-card: var(--glass-white);
|
||||
--bg-overlay: rgba(10, 14, 39, 0.8);
|
||||
|
||||
/* 边框 */
|
||||
--border-default: rgba(255, 255, 255, 0.1);
|
||||
--border-hover: rgba(255, 255, 255, 0.2);
|
||||
--border-accent: var(--cyan-500);
|
||||
--border-gradient: linear-gradient(90deg,
|
||||
var(--purple-500),
|
||||
var(--cyan-500));
|
||||
|
||||
/* 高级阴影 */
|
||||
--shadow-neon:
|
||||
0 0 20px rgba(91, 126, 194, 0.5),
|
||||
0 0 40px rgba(107, 93, 211, 0.3),
|
||||
0 0 60px rgba(6, 182, 212, 0.2);
|
||||
|
||||
--shadow-card:
|
||||
0 10px 40px rgba(0, 0, 0, 0.3),
|
||||
0 2px 10px rgba(91, 126, 194, 0.2);
|
||||
|
||||
--shadow-hover:
|
||||
0 20px 60px rgba(0, 0, 0, 0.4),
|
||||
0 10px 20px rgba(107, 93, 211, 0.3),
|
||||
inset 0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||
|
||||
--shadow-glass:
|
||||
0 8px 32px 0 rgba(31, 38, 135, 0.37),
|
||||
inset 0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||
|
||||
--shadow-text:
|
||||
0 0 10px rgba(91, 126, 194, 0.8),
|
||||
0 0 20px rgba(107, 93, 211, 0.6),
|
||||
0 0 30px rgba(6, 182, 212, 0.4);
|
||||
|
||||
/* 动画时长 */
|
||||
--duration-instant: 100ms;
|
||||
--duration-fast: 200ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-slow: 500ms;
|
||||
--duration-slower: 800ms;
|
||||
--duration-slowest: 1200ms;
|
||||
|
||||
/* 动画缓动函数 */
|
||||
--ease-linear: linear;
|
||||
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
||||
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
||||
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
--ease-elastic: cubic-bezier(0.68, -0.55, 0.32, 1.55);
|
||||
--ease-back: cubic-bezier(0.36, 0, 0.66, -0.56);
|
||||
|
||||
/* 模糊效果 */
|
||||
--blur-sm: blur(4px);
|
||||
--blur-md: blur(8px);
|
||||
--blur-lg: blur(16px);
|
||||
--blur-xl: blur(24px);
|
||||
--blur-2xl: blur(40px);
|
||||
--backdrop-blur: blur(12px);
|
||||
|
||||
/* 字体系统 */
|
||||
--font-display: 'Orbitron', 'Space Grotesk', sans-serif;
|
||||
--font-primary: 'Inter', 'PingFang SC', sans-serif;
|
||||
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
||||
|
||||
/* 字体大小 - 响应式 */
|
||||
--text-xs: clamp(0.75rem, 1.5vw, 0.875rem);
|
||||
--text-sm: clamp(0.875rem, 2vw, 1rem);
|
||||
--text-base: clamp(1rem, 2.5vw, 1.125rem);
|
||||
--text-lg: clamp(1.125rem, 3vw, 1.25rem);
|
||||
--text-xl: clamp(1.25rem, 3.5vw, 1.5rem);
|
||||
--text-2xl: clamp(1.5rem, 4vw, 2rem);
|
||||
--text-3xl: clamp(2rem, 5vw, 2.5rem);
|
||||
--text-4xl: clamp(2.5rem, 6vw, 3.5rem);
|
||||
--text-5xl: clamp(3rem, 7vw, 4.5rem);
|
||||
--text-6xl: clamp(3.5rem, 8vw, 6rem);
|
||||
|
||||
/* 间距系统 */
|
||||
--space-0: 0;
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
--space-24: 6rem;
|
||||
--space-32: 8rem;
|
||||
|
||||
/* 圆角 */
|
||||
--radius-sm: 0.5rem;
|
||||
--radius-md: 0.75rem;
|
||||
--radius-lg: 1rem;
|
||||
--radius-xl: 1.5rem;
|
||||
--radius-2xl: 2rem;
|
||||
--radius-3xl: 3rem;
|
||||
--radius-full: 9999px;
|
||||
|
||||
/* 装饰性元素 */
|
||||
--pattern-grid: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23667eea' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
|
||||
|
||||
--pattern-dots: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%236B5DD3' fill-opacity='0.1'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/g%3E%3C/svg%3E");
|
||||
|
||||
/* 特殊效果 */
|
||||
--noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.02'/%3E%3C/svg%3E");
|
||||
|
||||
/* 动画关键帧定义 */
|
||||
--animation-float: float 6s ease-in-out infinite;
|
||||
--animation-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||
--animation-gradient: gradient 8s linear infinite;
|
||||
--animation-glow: glow 2s ease-in-out infinite alternate;
|
||||
}
|
||||
383
个人简历_交通物流/.windsurfrules
Normal file
@@ -0,0 +1,383 @@
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
383
个人简历_交通物流/CLAUDE.md
Normal file
@@ -0,0 +1,383 @@
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
3833
个人简历_交通物流/index.backup_20251027_145140.html
Normal file
3833
个人简历_交通物流/index.html
Normal file
208
个人简历_交通物流/muted_elegant_theme.css
Normal file
@@ -0,0 +1,208 @@
|
||||
/* 视觉设计师作品集 - 柔和优雅配色主题 */
|
||||
|
||||
:root {
|
||||
/* ===== 柔和的黑灰红色彩系统 ===== */
|
||||
|
||||
/* 黑色系 - 柔和深邃 */
|
||||
--black-pure: #000000;
|
||||
--black-soft: #0D0D0D;
|
||||
--black-warm: #1A1616;
|
||||
--black-medium: #242020;
|
||||
--black-light: #2E2828;
|
||||
|
||||
/* 灰色系 - 温暖中性 */
|
||||
--gray-dark: #3A3535;
|
||||
--gray-medium-dark: #4A4545;
|
||||
--gray-medium: #5A5555;
|
||||
--gray-neutral: #6A6565;
|
||||
--gray-warm: #7A7575;
|
||||
--gray-light: #8A8585;
|
||||
--gray-lighter: #9A9595;
|
||||
--gray-pale: #AAA5A5;
|
||||
--gray-soft: #BAB5B5;
|
||||
--gray-mist: #CAC5C5;
|
||||
--gray-cloud: #DAD5D5;
|
||||
--gray-white: #EAE5E5;
|
||||
|
||||
/* 红色系 - 低饱和度 */
|
||||
--red-deepest: #2A1515; /* 极深酒红 */
|
||||
--red-deeper: #3A2020; /* 深酒红 */
|
||||
--red-deep: #4A2525; /* 暗红褐 */
|
||||
--red-dark: #5A3030; /* 暗红 */
|
||||
--red-muted: #6A3535; /* 柔红 */
|
||||
--red-medium: #7A4040; /* 中红 */
|
||||
--red-soft: #8A4545; /* 软红 */
|
||||
--red-warm: #9A5050; /* 暖红 */
|
||||
--red-light: #AA5555; /* 浅红 */
|
||||
--red-pale: #BA6060; /* 淡红 */
|
||||
|
||||
/* 白色系 */
|
||||
--white-pure: #FFFFFF;
|
||||
--white-soft: #FAF8F8;
|
||||
--white-warm: #F5F0F0;
|
||||
|
||||
/* ===== 柔和光影系统 ===== */
|
||||
|
||||
/* 高光效果 - 更柔和 */
|
||||
--highlight-white-subtle: rgba(255, 255, 255, 0.02);
|
||||
--highlight-white-soft: rgba(255, 255, 255, 0.04);
|
||||
--highlight-white-medium: rgba(255, 255, 255, 0.08);
|
||||
--highlight-white-strong: rgba(255, 255, 255, 0.12);
|
||||
|
||||
--highlight-red-subtle: rgba(122, 64, 64, 0.05);
|
||||
--highlight-red-soft: rgba(122, 64, 64, 0.1);
|
||||
--highlight-red-medium: rgba(122, 64, 64, 0.15);
|
||||
--highlight-red-strong: rgba(122, 64, 64, 0.2);
|
||||
|
||||
--highlight-gray: rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 辉光效果 - 更内敛 */
|
||||
--glow-white: 0 0 15px rgba(255, 255, 255, 0.05),
|
||||
0 0 30px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--glow-red: 0 0 15px rgba(122, 64, 64, 0.2),
|
||||
0 0 30px rgba(122, 64, 64, 0.1),
|
||||
0 0 45px rgba(122, 64, 64, 0.05);
|
||||
|
||||
--glow-gray: 0 0 15px rgba(150, 145, 145, 0.1),
|
||||
0 0 30px rgba(150, 145, 145, 0.05);
|
||||
|
||||
/* 内发光 - 微妙 */
|
||||
--inner-glow-white: inset 0 0 20px rgba(255, 255, 255, 0.03),
|
||||
inset 0 0 40px rgba(255, 255, 255, 0.01);
|
||||
|
||||
--inner-glow-red: inset 0 0 20px rgba(122, 64, 64, 0.08),
|
||||
inset 0 0 40px rgba(122, 64, 64, 0.04);
|
||||
|
||||
/* ===== 阴影系统 - 更柔和 ===== */
|
||||
|
||||
/* 标准阴影 */
|
||||
--shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.2),
|
||||
0 0 1px rgba(255, 255, 255, 0.01) inset;
|
||||
|
||||
--shadow-soft: 0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-medium: 0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02);
|
||||
|
||||
--shadow-strong: 0 8px 16px rgba(0, 0, 0, 0.35),
|
||||
0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 0 1px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--shadow-intense: 0 12px 24px rgba(0, 0, 0, 0.4),
|
||||
0 6px 12px rgba(0, 0, 0, 0.35),
|
||||
0 0 2px rgba(255, 255, 255, 0.04);
|
||||
|
||||
/* 彩色阴影 - 低饱和 */
|
||||
--shadow-red-soft: 0 2px 8px rgba(122, 64, 64, 0.15),
|
||||
0 1px 4px rgba(122, 64, 64, 0.1);
|
||||
|
||||
--shadow-red-medium: 0 4px 16px rgba(122, 64, 64, 0.2),
|
||||
0 2px 8px rgba(122, 64, 64, 0.15);
|
||||
|
||||
--shadow-gray: 0 2px 8px rgba(150, 145, 145, 0.15),
|
||||
0 1px 4px rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 浮动阴影 */
|
||||
--shadow-float: 0 10px 30px rgba(0, 0, 0, 0.3),
|
||||
0 5px 15px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02) inset;
|
||||
|
||||
/* 凹陷阴影 */
|
||||
--shadow-inset-soft: inset 0 1px 2px rgba(0, 0, 0, 0.3),
|
||||
inset 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-inset-deep: inset 0 2px 4px rgba(0, 0, 0, 0.4),
|
||||
inset 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
/* 文字阴影 */
|
||||
--text-shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
--text-shadow-glow: 0 0 5px rgba(122, 64, 64, 0.3),
|
||||
0 0 10px rgba(122, 64, 64, 0.1);
|
||||
|
||||
/* ===== 渐变系统 - 低饱和度 ===== */
|
||||
|
||||
/* 黑灰渐变 */
|
||||
--gradient-black-gray: linear-gradient(135deg, #0D0D0D 0%, #3A3535 100%);
|
||||
--gradient-gray: linear-gradient(135deg, #3A3535 0%, #6A6565 100%);
|
||||
--gradient-gray-soft: linear-gradient(135deg, #5A5555 0%, #9A9595 100%);
|
||||
|
||||
/* 红色渐变 - 柔和 */
|
||||
--gradient-red: linear-gradient(135deg, #3A2020 0%, #7A4040 50%, #8A4545 100%);
|
||||
--gradient-red-dark: linear-gradient(135deg, #2A1515 0%, #4A2525 100%);
|
||||
--gradient-red-soft: linear-gradient(135deg, #6A3535 0%, #9A5050 100%);
|
||||
|
||||
/* 混合渐变 */
|
||||
--gradient-black-red: linear-gradient(135deg, #0D0D0D 0%, #3A2020 50%, #5A3030 100%);
|
||||
--gradient-gray-red: linear-gradient(135deg, #3A3535 0%, #5A5555 50%, #7A4040 100%);
|
||||
--gradient-tricolor: linear-gradient(135deg, #0D0D0D 0%, #4A4545 33%, #6A3535 66%, #2E2828 100%);
|
||||
|
||||
/* 径向渐变 */
|
||||
--gradient-radial-red: radial-gradient(circle, rgba(122, 64, 64, 0.1) 0%, transparent 70%);
|
||||
--gradient-radial-gray: radial-gradient(circle, rgba(150, 145, 145, 0.15) 0%, transparent 70%);
|
||||
--gradient-radial-mixed: radial-gradient(circle at 30% 50%, rgba(122, 64, 64, 0.08) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 50%, rgba(150, 145, 145, 0.1) 0%, transparent 50%);
|
||||
|
||||
/* 网格渐变 */
|
||||
--gradient-mesh: radial-gradient(at 20% 30%, rgba(122, 64, 64, 0.06) 0%, transparent 40%),
|
||||
radial-gradient(at 60% 70%, rgba(150, 145, 145, 0.08) 0%, transparent 40%),
|
||||
radial-gradient(at 80% 20%, rgba(255, 255, 255, 0.02) 0%, transparent 40%),
|
||||
radial-gradient(at 40% 80%, rgba(122, 64, 64, 0.04) 0%, transparent 40%);
|
||||
|
||||
/* ===== 材质效果 ===== */
|
||||
|
||||
/* 玻璃效果 */
|
||||
--glass-dark: rgba(13, 13, 13, 0.7);
|
||||
--glass-gray: rgba(58, 53, 53, 0.5);
|
||||
--glass-red: rgba(122, 64, 64, 0.08);
|
||||
--glass-blur: blur(16px);
|
||||
--glass-blur-strong: blur(32px);
|
||||
|
||||
/* 噪点纹理 */
|
||||
--noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.02'/%3E%3C/svg%3E");
|
||||
|
||||
/* 扫光效果 */
|
||||
--shine: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, 0.05) 50%, transparent 60%);
|
||||
--shine-red: linear-gradient(105deg, transparent 40%, rgba(122, 64, 64, 0.1) 50%, transparent 60%);
|
||||
|
||||
/* ===== 动画时长 ===== */
|
||||
--duration-instant: 100ms;
|
||||
--duration-fast: 200ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-medium: 400ms;
|
||||
--duration-slow: 600ms;
|
||||
--duration-slower: 800ms;
|
||||
--duration-slowest: 1200ms;
|
||||
|
||||
/* ===== 动画缓动 ===== */
|
||||
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
|
||||
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
--ease-bounce: cubic-bezier(0.87, -0.41, 0.19, 1.44);
|
||||
|
||||
/* ===== 字体系统 ===== */
|
||||
--font-sans: -apple-system, BlinkMacSystemFont, 'Inter', 'SF Pro Display', sans-serif;
|
||||
--font-mono: 'SF Mono', 'JetBrains Mono', monospace;
|
||||
--font-display: 'SF Pro Display', -apple-system, sans-serif;
|
||||
|
||||
/* ===== 间距系统 ===== */
|
||||
--space-0: 0;
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
--space-24: 6rem;
|
||||
--space-32: 8rem;
|
||||
--space-40: 10rem;
|
||||
--space-48: 12rem;
|
||||
}
|
||||
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/城市商超配送调度优化项目.jpg
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程一:订单接收与任务生成.jpg
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程三:仓库装车与出车管理.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程二:车辆调度与线路规划.png
Normal file
|
After Width: | Height: | Size: 229 KiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程五:门店交付与回单管理.jpg
Normal file
|
After Width: | Height: | Size: 129 KiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程六:数据分析与持续优化.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
个人简历_交通物流/public/城市商超配送调度优化项目/流程四:在途运输监控与异常处理.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 700 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程一:构建客户委托与协议签订机制.jpg
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程三:制定单证制作与审核规范.jpg
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程二:规范订舱与舱位确认操作.jpg
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程五:建设船舶在港调度与现场管控机制.jpg
Normal file
|
After Width: | Height: | Size: 362 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程六:规范费用结算与风险防控.jpeg
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
个人简历_交通物流/public/宁波港至德国汉堡港机电设备出口船务代理项目/流程四:实施报关报检与合规协调.jpeg
Normal file
|
After Width: | Height: | Size: 266 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /智慧物流销售配送与用户反馈数据分析项目-主图.png
Normal file
|
After Width: | Height: | Size: 688 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /流程一:数据清洗与完整性校核.jpg
Normal file
|
After Width: | Height: | Size: 383 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /流程三:配送服务时效性分析.jpg
Normal file
|
After Width: | Height: | Size: 820 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /流程二:数据规整与特征构建.jpg
Normal file
|
After Width: | Height: | Size: 369 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /流程五:可视化报表与成果呈现.png
Normal file
|
After Width: | Height: | Size: 537 KiB |
BIN
个人简历_交通物流/public/智慧物流销售配送与用户反馈数据分析项目 /流程四:潜力市场与销售趋势挖掘.jpg
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
个人简历_交通物流/public/淘宝某旗舰店男式短袖物流运营项目/流程一:订单接入与前置校验.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
个人简历_交通物流/public/淘宝某旗舰店男式短袖物流运营项目/流程三:运输途径可视化.png
Normal file
|
After Width: | Height: | Size: 734 KiB |
BIN
个人简历_交通物流/public/淘宝某旗舰店男式短袖物流运营项目/流程二:仓储作业优化与出库调度.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
个人简历_交通物流/public/淘宝某旗舰店男式短袖物流运营项目/流程四:售后与退换货处理.jpg
Normal file
|
After Width: | Height: | Size: 215 KiB |
BIN
个人简历_交通物流/public/淘宝某旗舰店男式短袖物流运营项目/淘宝某旗舰店男式短袖物流运营项目-总图.jpg
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程一:到货接收与入库前检.jpg
Normal file
|
After Width: | Height: | Size: 215 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程三:入库上架与库区规划.jpeg
Normal file
|
After Width: | Height: | Size: 706 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程二:预冷与一次保鲜处理.jpeg
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程五:出库复检与装车交接.jpeg
Normal file
|
After Width: | Height: | Size: 264 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程六:HACCP与异常事件处置.jpeg
Normal file
|
After Width: | Height: | Size: 365 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/流程四:在库保鲜与巡检纠偏.jpeg
Normal file
|
After Width: | Height: | Size: 799 KiB |
BIN
个人简历_交通物流/public/鲜葡萄冷链物流与仓储项目/鲜葡萄冷链物流与仓储项目-主图.jpg
Normal file
|
After Width: | Height: | Size: 996 KiB |
29
个人简历_交通物流/个人简历.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# 二、专业技能
|
||||
|
||||
### (一)核心能力
|
||||
|
||||
1. 熟悉工业机器人安装流程:协助完成机器人本体的吊装定位、基座固定与末端执行器校准,具备实地安装操作经验;
|
||||
2. 精通电气布线与接地测试:掌握动力线与信号线分布布局、接地电阻测量与屏蔽效果确认,确保系统稳定性;
|
||||
3. 掌握机器人示教器操作与轨迹调试:能建立坐标系、配置路径控制参数,参与运动误差测试与重复定位精度验证;
|
||||
4. 了解机器人电气控制板与PLC基础:具备PLC编程意识与电路图识读能力,能配合识别布线逻辑并支持控制系统调试;
|
||||
5. 有基本网络与通讯系统应用经验:参与控制柜组网、权限分级设定及系统通信稳定性验证,支持控制系统集成;
|
||||
6. 掌握视觉识别与力控测试流程:协助执行视觉对齐、力控触发参数测试、节拍与定位精度记录,支持柔性换型工艺验证;
|
||||
7. 具备系统级故障排查与调试记录能力:能够协助定位安装、布线、控制、电气测试等环节异常并做好日志归档;
|
||||
8. 了解机器人校准与安全规范:接触Level-1/2标定方法,对机器人校准理论有初步认知,并熟悉ISO 10218等工业机器人安全规范;
|
||||
9. 具备较强问题解决与团队协作能力:在实习中多次配合工程师,协助完成项目FAT/SAT验收资料整理与客户培训协助,沟通清晰,执行力强。
|
||||
|
||||
### (二)复合能力
|
||||
|
||||
1. 物流自动化控制基础能力:了解物流自动化中涉及的电机驱动、传感器控制、PLC输入输出等电路元件的作用;基本掌握常见控制电路的图纸识读与布线逻辑。
|
||||
2. 物流自动化设备认知与识别能力:熟悉物流机器人在搬运与分拣中的基本功能与区别,了解AGV沿固定轨道导航原理;能基本识别控制界面中的任务队列和速度参数,并掌握处理简单异常(如障碍停机、路径重规划)的基础操作能力。
|
||||
3. 智慧物流系统应用操作能力:了解智慧物流中订单、仓库、运输、客户服务等业务与系统(如WMS、TMS、OMS)之间的流程衔接;熟悉WMS系统中库位设置、波次管理、出库策略等基础功能;基本掌握操作WMS进行数据查询、作业分配与问题处理。
|
||||
4. 物流安全与质量意识:了解仓储搬运、货车装卸、高频出入等环节的作业安全规范与常见隐患;熟悉物流标准作业程序(SOP)和质量验收要求;基本掌握作业前检查、异常记录、客户签收等质量控制动作。
|
||||
5. 客户需求对接服务能力:了解从客户需求收集、物流服务方案设计、交付执行、问题处理、满意度跟踪的基本服务流程;熟悉客户在运输时效、配送精准度、交货灵活性等方面的核心关注点;基本掌握通过电话/邮件/面谈等方式与客户沟通与反馈的基本技巧。
|
||||
6. 数据采集与物流信息可视化能力:了解从条码/RFID采集、系统汇总、平台展示、数据分析、异常监控的基本路径;熟悉各类物流数据可视化工具与信息仪表板设计逻辑;基本掌握物流作业中关键指标(如周转率、订单完成率)的获取与监控方式。
|
||||
7. 供应链与库存管理基础能力:了解从采购计划、供应商对接、入库、库存周转、缺货/积压预警、数据报表分析的管理流程;熟悉库存分类、盘点方法与安全库存机制;基本掌握ERP/WMS系统中常用库存模块的操作。
|
||||
8. 现代物流运营流程执行能力:了解从订单生成、仓储收发、出入库、拣选包装、配送追踪、客户签收的基本物流作业流程;熟悉现代物流活动中“人、货、场”的协同机制;基本掌握常见仓配任务的岗位职责与业务衔接要点。
|
||||
9. 精益物流与现场改善能力:了解精益物流中的“七大浪费”、现场5S、拉动系统与看板管理基本概念;熟悉流程优化、配送线路规划与作业平衡分析工具;基本掌握利用流程图或时间记录方式发现并改善典型作业问题。
|
||||
|
||||
# 三、个人评价
|
||||
|
||||
我是一名刚完成工业机器人实习项目的大专毕业生,对自动化装配与智能制造充满兴趣。在项目过程中,我积极协助工程师完成本体安装、系统配置与轨迹调试等关键环节,积累了对工业机器人软硬件协同的初步理解。我工作态度认真,善于听从指导并及时反馈问题,具备良好的沟通和执行能力。未来希望继续深耕工业机器人领域,在实际工作中不断学习进步,成长为一名专业可靠的技术人员。
|
||||
BIN
个人简历_交通物流/李沐阳.png
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
个人简历_交通物流/李若宁.png
Normal file
|
After Width: | Height: | Size: 478 KiB |
406
个人简历_交通物流/项目案例.md
Normal file
@@ -0,0 +1,406 @@
|
||||
项目名称:淘宝某旗舰店男式短袖物流运营项目
|
||||
|
||||
项目描述:本项目以淘宝某男装旗舰店“双11”大促为背景,针对短袖商品在日均 2000 单提升至 1 万单/日的订单高峰期,设计并实施了覆盖订单接入、仓储作业、运输跟踪与售后处理的物流全链路方案。通过 OMS、WMS、TMS 的系统化应用与流程优化,最终实现订单处理准确率 99% 以上,出库及时率 95% 以上,并将退换货周期缩短至 7 天以内,构建了高峰运营的标准化履约模式。
|
||||
|
||||
实习时间:2023.5~2024.9
|
||||
|
||||
实习岗位:物流专员
|
||||
|
||||
实习企业:科捷物流有限公司
|
||||
|
||||
### 岗位职责:
|
||||
|
||||
1. 从OMS接入订单并进行地址、付款与库存校核,标注异常订单并与客服协同处理,保障信息准确与流程顺畅。
|
||||
2. 按区域与尺码组织波次拣选与复核,协同仓库执行出入库、拣货、包装与发运等作业,推进当日订单及时出库。
|
||||
3. 使用看板与TMS跟踪运输节点(揽收/中转/派送/签收),对延误、破损、未妥投等异常进行登记、上报并推动承运商处置与反馈。
|
||||
4. 协助客户侧物流沟通,向用户同步轨迹与异常通知,配合客服处理运单咨询并提供实时进度支持。
|
||||
5. 处理退换货与逆向物流:生成退换货单、对接上门取件/寄回、支持仓库验收入库与不良登记,沉淀周度复盘要点。
|
||||
6. 汇总出库率、延误率、退换货率等指标,形成日/周报并向运营、仓储与客服同步,为大促复盘与后续优化提供依据。
|
||||
7. 归档拣货清单、滞留件记录、退货验收表等物流单据,维护资料可追溯性与对账完整性。
|
||||
8. 支持日常标签打印、面单粘贴、打包与出库等基础作业,确保单据、条码与包件信息一致。
|
||||
|
||||
### 流程一:订单接入与前置校验
|
||||
|
||||
流程概述:在订单暴增背景下,协助完成 OMS 系统订单导入、前置校验与异常拦截,确保订单数据准确无误进入仓库。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 批量订单接入:协助 OMS 系统在高峰时段 1 小时内导入超 1 万条订单,保证无延迟。
|
||||
2. 订单信息核查:对收货地址、尺码、付款状态进行复核,减少错发、漏发。
|
||||
3. 库存预占操作:按照“已付款优先”策略锁定库存,避免超卖与重复扣减。
|
||||
4. 异常订单处理:标记缺货与地址错误订单,协助客服进行二次确认。
|
||||
5. 数据报表输出:整理日度订单处理与异常统计表,用于运营复盘。
|
||||
|
||||
### 流程二:仓储作业优化与出库调度
|
||||
|
||||
流程概述:在仓库环节,参与拣货、复核、打包和出库任务,利用波次拣选与电子看板提高作业效率,保证高峰期间的出库时效。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 波次拣选协助:将大批订单按区域与尺码分批次拣选,减少作业拥堵。
|
||||
2. 扫码复核与打包:逐件完成扫码确认与双人复核,控制错发率低于 0.2%。
|
||||
3. 智能承运商分配:协助系统完成顺丰、中通、极兔等承运商订单分配,提升配送效率。
|
||||
4. 出库进度监控:利用电子看板检查出库节拍,确保每小时约 2000 件出库。
|
||||
5. 滞留件处理:对 500 件未揽收订单进行复核加急处理,防止延误。
|
||||
|
||||
### 流程三:运输途径可视化
|
||||
|
||||
流程概述:协助 TMS 系统跟踪订单运输节点,监控延误和异常,推动问题件在 24 小时内闭环,提升客户体验。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 全链路节点监控:导入揽收、中转、派送、签收等承运商轨迹,确保物流可追踪。
|
||||
2. 异常预警工单:发现延误或派送失败订单,系统生成工单并分派跟进。
|
||||
3. 承运商沟通:协助与顺丰、中通等网点保持联系,加急处理延误件。
|
||||
4. 客户信息同步:通过短信或 APP 向客户推送进度提醒,降低咨询量。
|
||||
5. 异常数据复盘:汇总每日延误率、破损率,提交承运商考核参考。
|
||||
|
||||
### 流程四:售后与退换货处理
|
||||
|
||||
流程概述:在售后环节,协助处理退换货工单、逆向物流对接与仓库退货验收,缩短退货周期并保证客户体验。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 工单分类处理:根据尺码不符、破损、错发三类原因分类退换货需求。
|
||||
2. 逆向物流操作:协助生成退货单号并对接承运商,保证退货件 72 小时内返仓。
|
||||
3. 仓库退货验收:逐件扫码确认退货短袖,良品入库,不良品报损登记。
|
||||
4. 客户进度反馈:将退换货进度实时更新至客服系统,减少二次投诉。
|
||||
5. 周报数据整理:整理退换货比例与区域分布,形成周报供团队优化。
|
||||
|
||||
|
||||
|
||||
项目名称:城市商超配送调度优化项目
|
||||
|
||||
项目描述:本项目以广州、深圳两地 80+ 商超门店为配送对象,针对每日 1500 单以上、60 辆配送车(含 15 辆冷藏车)的高频运营场景,优化订单接收、车辆调度、运输监控与交付回单等全链条流程。通过 TMS 系统与 GPS 实时监控手段,项目实现配送准时率从 85% 提升至 96%,车辆利用率提升 12%,并有效降低 8% 的整体运营成本。
|
||||
|
||||
实习时间:2023.5~2024.9
|
||||
|
||||
实习岗位:物流调度员
|
||||
|
||||
实习企业:J&T极兔速递有限公司
|
||||
|
||||
### 岗位职责:
|
||||
|
||||
1. 协助审核当日订单与任务生成,按温控类型与时效要求分类,确保基础信息完整、可调度。
|
||||
2. 使用 TMS 汇总车辆、司机与线路资源,配合制定车辆与路线分配方案,优先保障重要与时效紧急任务。
|
||||
3. 与仓库装车团队协同,完成分区堆放与装车核对,按既定窗口期组织批次发车,提升现场执行一致性。
|
||||
4. 在途过程通过 GPS/车载系统监控运输状态,遇到拥堵、临时变更等异常时及时调整路线并同步门店/司机。
|
||||
5. 跟进门店交付与签收,收集电子回单与照片,核对“准时/延误”标记并回写至 TMS/BI,为次日排班提供依据。
|
||||
6. 统计准时率、车辆利用率、油耗与异常项,参与制作日/周运营报表,提出调度与成本优化建议。
|
||||
7. 与仓配、客服、运营等团队保持联动,处理订单变更与异常流程,推动问题闭环。
|
||||
8. 处置常见突发事件(司机迟到、车辆故障、门店拒收等),制定替代方案并保留处理记录。
|
||||
|
||||
### 流程一:订单接收与任务生成
|
||||
|
||||
流程概述:在订单接收阶段,负责利用系统汇总门店需求并生成配送任务,保障数据完整与时效准确。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 订单数据录入:通过 POS 与 TMS 系统对接,自动生成每日门店配送清单。
|
||||
2. 订单分类整理:将冷链与常温品类分开,避免温控冲突。
|
||||
3. 任务包生成:系统按体积、重量计算配送包,作为后续调度依据。
|
||||
4. 时效标记:根据门店“上午9点前到货”等要求,为订单打上时限标签。
|
||||
5. 异常订单审核:对数量异常的大单进行人工确认,防止错单流入。
|
||||
|
||||
### 流程二:车辆调度与线路规划
|
||||
|
||||
流程概述:在调度环节,合理分配车辆与司机,利用 TMS 系统规划线路,兼顾冷链需求与运力利用。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 车辆排班:60 辆车按冷链与常温任务区分排班,优先保证冷链订单。
|
||||
2. 路径优化:TMS 计算最优路线,结合交通限行与门店时段微调。
|
||||
3. 司机任务分配:依据司机熟悉区域指派路线,降低迷路与延误。
|
||||
4. 运力补充:高峰期临时外租 3–5 辆车,填补运力缺口。
|
||||
5. 成本核算:审核系统输出的油耗、里程预测,优化调度方案。
|
||||
|
||||
### 流程三:仓库装车与出车管理
|
||||
|
||||
流程概述:在仓库作业环节,协助组织拣货、复核和车辆装载,确保冷链与常温货物分区管理并按时出车。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 拣货复核:在仓库完成二次校对,保证 SKU 数量与批次准确。
|
||||
2. 装车规范执行:冷链车配温度仪,货物分层堆放,避免压损。
|
||||
3. 出车核查:逐一检查司机证件、车辆油量与 GPS 设备状态。
|
||||
4. 发车调度:统一在凌晨 5:00–6:00 分批发车,保障时效。
|
||||
5. 异常替补:若司机缺勤,及时调配替补司机,防止延误。
|
||||
|
||||
### 流程四:在途运输监控与异常处理
|
||||
|
||||
流程概述:在运输过程中,依托 GPS 和冷链监控系统,实时掌握车辆位置与温度状态,及时响应突发情况。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. GPS 实时监控:所有车辆运行轨迹与里程自动上传。
|
||||
2. 冷链温控预警:监控冷藏车温度保持 2–8℃,超标自动报警。
|
||||
3. 路况调整:遇到拥堵,TMS 自动重规划路线并通知司机。
|
||||
4. 异常处理:门店拒收、地址变更时,与门店即时沟通解决。
|
||||
5. 在途信息推送:每隔 2 小时更新车辆位置与 ETA 给客户系统。
|
||||
|
||||
### 流程五:门店交付与回单管理
|
||||
|
||||
流程概述:在交付环节,确认卸货、签收与回单,保障交付准确性和信息透明。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 到货签收:司机与门店共同点数,并签署电子交付单。
|
||||
2. 时效考核:系统比对到货时间与时限,标记准时/延误情况。
|
||||
3. 回单上传:司机通过 APP 上传签收单照片,后台统一归档。
|
||||
4. 异常登记:拒收、退货单独记录并反馈运营团队。
|
||||
5. 数据导入:交付结果同步进 BI 系统,为次日优化提供数据。
|
||||
|
||||
### 流程六:数据分析与持续优化
|
||||
|
||||
流程概述:在项目收尾阶段,整理配送数据并输出分析报告,持续优化车辆利用与配送准时率。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. KPI 统计:记录准时率、车辆利用率、异常率与油耗成本等核心指标。
|
||||
2. 数据采集:通过 TMS、GPS 自动抓取运输与里程数据,减少人工误差。
|
||||
3. 可视化输出:协助生成运力负荷与异常告警的 BI 看板。
|
||||
4. 趋势分析:对比周度与月度数据,识别高峰时段与问题线路。
|
||||
5. 策略优化:根据分析结果调整排班与线路规划,提升整体效率。
|
||||
|
||||
|
||||
|
||||
项目名称:宁波港至德国汉堡港机电设备出口船务代理项目
|
||||
|
||||
项目描述:本项目以宁波港至德国汉堡港的出口运输为场景,承运浙江永擎机电有限公司的28吨大型工业水泵机组。项目目标是在既定船期内高效落实舱位,确保单证制作与报关流程零差错,并在目的港实现14天免用箱期与电放提单的快速交付。通过标准化的订舱操作、单证三重校核机制、单一窗口报关报检及现场调度监管,项目实现了从委托签约到费用结算的全流程可追溯管理。在操作中引入Excel节点追踪与风险预案机制,不仅保证了客户货物的合规与时效,也为机电类超重设备的出口提供了可复制的船务代理操作蓝本。
|
||||
|
||||
实习时间:2023.5~2024.9
|
||||
|
||||
实习岗位:船务代理
|
||||
|
||||
实习企业:广西大展宏图贸易有限公司
|
||||
|
||||
### 岗位职责:
|
||||
|
||||
1. 协助完成订舱、报关、报检、装箱及运输跟踪等流程,能在指导下制作提单、装箱单与报关单,使用Excel登记业务节点并跟进进度,确保货物运输过程合规、可控与可追溯。
|
||||
2. 参与客户开发与维护,能够通过展会、网络及推荐收集潜在客户资料并建立档案,在客户接洽过程中主动倾听并记录需求,配合上级提供定制化船务方案,提升客户满意度。
|
||||
3. 协助合同洽谈与条款整理,能根据客户需求参与船务代理服务方案的编制,协助归档费用标准与责任划分条款,避免理解偏差,保障合同执行顺利推进。
|
||||
4. 参与市场调研,能够收集船务代理行业的价格变动、竞争对手模式与政策法规动态,形成简要分析报告,并结合数据提出改进与业务拓展思路,为上级决策提供支撑。
|
||||
5. 协助费用结算与账务核对,整理发票与结算凭证,使用Excel维护收款进度表并记录差异,跟进客户付款情况,对账务异议进行初步核查与反馈,保证公司资金回收及时。
|
||||
6. 参与客户服务与投诉处理,能通过电话、邮件与即时通讯渠道回应客户咨询并记录问题,遇到投诉时及时上报并提出初步解决建议,稳定客户关系并降低流失风险。
|
||||
7. 协助跨部门沟通,能在业务洽谈和操作中与操作部、财务部等部门有效对接,确保客户需求落实;在突发问题中协调资源并保持信息透明,推动业务顺利完成。
|
||||
|
||||
### 流程一:客户委托与协议整理
|
||||
|
||||
流程描述:在项目启动阶段,船务代理需协助审核客户提供的委托文件,并整理合同条款中的费用、责任及特殊需求。这一环节要求岗位人员细致核对资料的完整性与合规性,确保服务协议能够支撑后续订舱、单证及现场操作的顺利进行。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 文件初审:协助核对营业执照、装箱单、产品清单等资料,确保HS编码与监管要求一致,避免因资料缺失影响报关;
|
||||
2. 条款整理:在上级指导下整理协议中的费用标准和结算周期,形成清晰对照表,便于后续费用执行;
|
||||
3. 特殊需求记录:将客户对电放提单、舱内底层装载、免用箱期等要求进行登记,防止遗漏;
|
||||
4. 权责归档:参与整理代理方与客户双方的权责分工表,确保各环节责任清晰,降低后续争议风险;
|
||||
|
||||
### 流程二:订舱与舱位跟进
|
||||
|
||||
流程描述:订舱环节是保障货物按时出运的关键,船务代理需在指导下提交订舱资料,并跟进舱位确认与提箱单下发,避免因延误导致爆舱风险。该流程需要岗位人员细致跟踪船公司反馈并做好异常情况的初步应对。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 订舱资料准备:在指导下填写订舱单并通过EDI提交,确保舱位申请及时准确;
|
||||
2. 舱位确认追踪:每日登录船公司系统查看订舱状态,记录确认号并反馈给上级;
|
||||
3. 提箱单整理:协助下发S/O至车队,明确提柜时间与堆场位置,确保运输衔接顺畅;
|
||||
4. 异常预案登记:整理备用航线及应急措施资料,确保爆舱情况下可快速切换方案;
|
||||
|
||||
### 流程三:单证制作与合规校核
|
||||
|
||||
流程描述:单证环节直接关系到清关与提货,船务代理需在上级带领下参与提单、报关单等文件的制作与初步核对,确保单证信息一致性和合规性。通过“三重校验”机制,岗位人员主要承担基础校对与整理归档的职责。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 单证资料整理:收集客户的合同、发票、装箱单等资料,建立单证清单;
|
||||
2. 提单初步校核:协助核对提单草稿中的货名、件数、重量与SI一致,避免差错;
|
||||
3. 报关单辅助填报:在指导下完成部分字段输入,确保申报资料完整;
|
||||
4. 单证归档:负责将审核通过的单证分类编号并存档,保证后续可追溯性;
|
||||
|
||||
### 流程四:报关报检协助
|
||||
|
||||
流程描述:报关报检是货物出境的关键节点,船务代理助理需配合准备相关资料并在抽查时协助协调资源,保证通关效率。岗位工作更多是执行与资料支撑,确保申报信息完整、逻辑一致。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 资料准备:协助整理合同、发票、装箱单、提单等资料,上传至“单一窗口”系统;
|
||||
2. 非危品声明:在指导下完成Non-Hazardous声明的填写与提交;
|
||||
3. 查验支持:若遇抽查,协助调配吊机、托盘车等现场资源,做好费用记录;
|
||||
4. 信息核对:检查报关单与舱单的一致性,避免因不符导致退单;
|
||||
|
||||
### 流程五:费用结算与账务核对
|
||||
|
||||
流程描述:费用结算是客户最关注的环节,船务代理助理需配合整理发票、收款进度表及对账记录,确保费用清晰透明并能及时反馈差异问题。该环节需要岗位人员具备细致的数据管理与Excel使用能力。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 发票归集:负责收集整理海运费、THC、电放费等发票凭证,按类别归档;
|
||||
2. 收款进度表:使用Excel建立收款进度表,标注到账与未到账项目;
|
||||
3. 对账初核:在上级指导下进行账务差异比对,发现异常及时反馈;
|
||||
4. 结算资料存档:将客户付款凭证、结算单归档保存,确保后续审计与对账可追溯;
|
||||
|
||||
|
||||
|
||||
|
||||
项目名称:鲜葡萄冷链物流与仓储项目
|
||||
|
||||
项目描述:随着生鲜消费需求的快速增长,葡萄等高价值水果在长途运输与仓储环节的损耗问题日益突出,冷链稳定性与批次可追溯性成为行业核心关注点。本项目以鲜葡萄为对象,构建了一套覆盖入库、预冷、在库保鲜、出库交接到运输衔接的全流程冷链管理模式。项目目标是在整个储运周期内将货损率控制在合理范围,并实现货架期延长 25% 以上。通过引入温湿度双闭环控制、FEFO拣货策略与HACCP质量管理体系,结合电子台账与三温一致留痕机制,项目为果品流通提供了高标准的操作规范和可复制的仓储解决方案,显著提升了冷链运行的稳定性与市场供应的可靠性。
|
||||
|
||||
实习时间:2023.5~2024.9
|
||||
|
||||
实习岗位:冷库管理员
|
||||
|
||||
实习企业:江苏快而捷物流股份有限公司
|
||||
|
||||
### 岗位职责:
|
||||
|
||||
1. 协助完成到货车辆的温度核查与外观抽检,整理入库批次信息并生成基础台账,确保入库流程合规可追溯;
|
||||
2. 在导师指导下参与预冷作业,学习操作心温探针与数据记录表,跟踪心温降至目标区间,并完成保鲜剂配置与作业区清洁留痕;
|
||||
3. 协助进行上架与库区分区作业,完成托盘堆码、库区点位温湿度抄录,检查风道通畅,协助异常数据的报备与跟进;
|
||||
4. 参与在库日常巡检,记录温湿/门禁/报警数据,完成批次点检与灰霉疑似样本标记,协助整理周报并提交改进清单;
|
||||
5. 配合完成出库复检与装车交接,检查箱温与外观,学习执行FEFO拣货与三温一致留痕操作,参与封签拍照与电子交接单归档;
|
||||
6. 协助HACCP台账与召回演练准备,整理关键控制点监测记录,支持异常批次的隔离与应急转移。
|
||||
|
||||
### 流程一:到货接收与入库前检
|
||||
|
||||
流程描述:该流程是冷库环节的首要任务,确保入库前车辆与货品温度、外观和批次信息符合标准。作为冷库管理员,我主要负责基础抽检与信息留痕,协助导师完成温度门槛核验与批次标识,保证入库环节合规可追溯。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 月台温控检查:核查月台温度维持在≤8℃,记录开门时长,协助导师降低断链风险;
|
||||
2. 车辆箱温核对:使用温度计抽测箱温保持2–5℃,若发现异常立即登记并报备;
|
||||
3. 批次标识整理:协助打印与张贴箱贴、托盘卡,录入产地/采收日编码,确保批次可追溯;
|
||||
4. 外观抽检记录:跟随导师学习AQL抽样标准,对果粒完整度、梗鲜度进行抽检并记录;
|
||||
|
||||
### 流程二:预冷与一次保鲜处理
|
||||
|
||||
流程描述:预冷环节直接关系到鲜果田间热的快速移除与后续品质保持。我在该流程中学习操作心温探针与数据表,跟踪心温变化并整理降温曲线,协助完成保鲜剂配置与作业卫生留痕。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 心温探针抽测:按照规范每2小时使用探针抽测葡萄心温并登记,确保心温降至目标区间;
|
||||
2. 降温曲线记录:协助绘制并整理降温曲线,学习发现异常批次并延长预冷时间;
|
||||
3. 保鲜剂配置:协助导师按批次准备缓释SO₂纸与内衬袋,学习配置剂量与更换周期;
|
||||
4. 作业区清洁留痕:执行预冷区工具分色使用与班后清洁消杀,完成留痕记录表格;
|
||||
|
||||
### 流程三:入库上架与库区分区
|
||||
|
||||
流程描述:上架是冷库日常的核心环节,涉及分区规划与托盘堆码。我主要负责在导师指导下完成托盘搬运、点位温湿度抄录与风道检查,确保库区布局合理、气流均匀。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 分区上架执行:按照品种/成熟度指令,将托盘分区放置在近拣区或长存区;
|
||||
2. 托盘堆码作业:学习执行“品”字型堆码,注意层高与通风间距,避免果实受压;
|
||||
3. 温湿度点位抄录:每日定时抄录各监测点温湿度数据并汇总,异常情况立即报备;
|
||||
4. 风道畅通检查:巡检库区通道,确保货物未遮挡回风口,保持冷风循环均匀;
|
||||
|
||||
### 流程四:在库巡检与保鲜纠偏
|
||||
|
||||
流程描述:日常巡检是冷库管理员的持续性任务,我需完成温湿度、报警与批次点检记录,并协助灰霉疑似样本标记和异常批次报备,保障在库品质稳定。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 温湿报警监控:定时检查温湿度监测仪表,记录偏差并向导师反馈异常情况;
|
||||
2. 批次点检操作:对指定托盘进行点检,核查外观与果粒状态,填写检查表;
|
||||
3. 灰霉样本标记:发现疑似霉变样本时打“黄牌”并隔离至缓冲区,防止交叉污染;
|
||||
4. 周报数据整理:整理巡检、报警与异常记录,协助导师形成周报与改进清单;
|
||||
|
||||
### 流程五:出库复检与装车交接
|
||||
|
||||
流程描述:出库环节直接决定冷链衔接的稳定性。我主要负责协助复检箱温、执行FEFO拣货指令、完成三温一致留痕,并整理封签与交接凭证。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 箱温抽检:在出库复检时随机测量箱温,确保维持在1–3℃方可放行;
|
||||
2. FEFO拣货执行:根据系统指令优先拣出高龄批次,学习如何结合订单节奏执行FEFO;
|
||||
3. 三温一致核对:拍照记录库温/箱温/车温,确保数据一致并归档;
|
||||
4. 装车封签与凭证:协助完成托盘封签与拍照,整理电子交接单据并归档;
|
||||
|
||||
### 流程六:HACCP台账与召回演练
|
||||
|
||||
流程描述:作为质量管理的重要组成部分,我主要负责整理关键控制点监测记录,协助导师进行召回演练准备与异常批次隔离,确保合规与应急处置能力。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. CCP监测整理:收集与整理预冷、在库温湿度、出库三温一致等关键控制点记录;
|
||||
2. 召回演练支持:协助按批次号与托盘卡进行模拟追溯,确保定位率与响应时效;
|
||||
3. 异常批次隔离:在导师指令下,将异常批次转移至隔离区并做好记录;
|
||||
4. 台账归档:完成HACCP相关记录的电子归档与纸质存档,提升审计合规率;
|
||||
|
||||
|
||||
|
||||
|
||||
项目名称:智慧物流销售配送与用户反馈数据分析项目
|
||||
|
||||
项目描述:本项目基于某企业在华东、西北及海外(马来西亚)市场的6类商品配送与用户反馈数据,开展全流程数据清洗、规整与分析,目标是通过数据驱动的方式发现 配送时效问题、潜在销售区域增长点以及产品质量隐患。数据维度涵盖订单信息、交货状态、销售金额、销售区域与用户反馈等指标。分析团队在实施中遵循数据分析SOP,执行数据清洗—异常处理—特征构建—可视化分析四步流程,结合物流时效指标与客户满意度反馈,提出针对性改进策略。最终成果为企业优化配送线路、调整区域投入、改进质检流程提供了可靠的数据支撑,推动企业从经验驱动向数据驱动的智慧物流运营转型。
|
||||
|
||||
实习时间:2023.5~2024.9
|
||||
|
||||
实习岗位:物流数据分析专员
|
||||
|
||||
实习企业:广东博达科技有限公司
|
||||
|
||||
### 岗位职责:
|
||||
|
||||
1. 协助完成订单、交货、销售金额及用户反馈等多维度数据的清洗与校核,利用Excel完成重复值剔除、缺失值处理和金额字段统一,确保数据样本真实可靠。
|
||||
2. 在数据规整阶段,负责时间、区域和交货状态字段的标准化处理,构建衍生特征字段并重置索引,提高后续分析效率与口径一致性。
|
||||
3. 参与交货时效性分析,使用Excel透视表对季度趋势、区域差异与货品维度进行统计对比,协助识别配送瓶颈并输出图表化结果。
|
||||
4. 协助完成潜力市场与销售趋势分析,提取时间序列和区域分布特征,利用图表揭示高增长潜力区域与销售淡季,为资源投放提供数据支持。
|
||||
5. 在用户反馈分析中,负责质量合格率、返修率和拒收率的统计与对比,结合交付数据协助发现潜在质量隐患,并输出基础改进建议。
|
||||
6. 参与制作可视化报表和分析文档,利用Excel和Power BI呈现配送效率、销售趋势与客户反馈结果,支持业务部门的决策汇报。
|
||||
7. 协助维护项目数据档案与分析记录,确保分析过程和结果可追溯,并配合团队进行结果复盘和改进策略整理。
|
||||
|
||||
### 流程一:数据清洗与完整性校核
|
||||
|
||||
流程描述: 在项目启动阶段,主要协助对订单、交货和销售金额等原始数据进行清洗与校核,保证后续分析的可靠性与一致性。这一环节帮助我掌握了基础数据清洗与异常值处理的实操方法,是物流数据分析的核心基础。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 重复值剔除:使用Excel筛选订单号字段,删除9条重复记录,避免交货率和销售额出现虚高统计;
|
||||
2. 缺失值处理:检查关键字段,剔除缺少订单号与金额的数据,保证分组聚合统计时样本有效;
|
||||
3. 金额字段统一:将“万元”和“元”混合单位统一转化为float数值,确保跨区域金额口径一致;
|
||||
4. 异常值排查:识别销售金额为0的记录并剔除,避免不合理数据拉低平均销售额;
|
||||
|
||||
### 流程二:数据规整与特征构建
|
||||
|
||||
流程描述: 在清洗后的基础上,对时间、区域、交货状态和用户反馈字段进行标准化处理,并构建衍生特征字段,提高分析效率与口径统一性。该环节让我理解了如何通过特征工程提升数据可用性。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 时间维度处理:将销售时间统一转化为标准日期格式,并提取“月份”字段,用于趋势分析;
|
||||
2. 区域字段标准化:将“华东地区”“华东”等不同表述合并处理,避免区域销售额统计误差;
|
||||
3. 状态字段统一:对“按时交货”“延迟交货”等交付状态进行标准化编码,确保交货率计算无偏差;
|
||||
4. 用户反馈标签规整:将“质量合格”“返修”“拒收”等反馈信息统一编码,避免统计分类不一致;
|
||||
|
||||
### 流程三:配送服务时效性分析
|
||||
|
||||
流程描述: 在结构化数据基础上,协助开展季度、区域与货品多维度的交货时效性分析,定位配送环节瓶颈,并通过图表输出结果,为优化运力调度提供依据。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 季度趋势分析:用Excel透视表对比季度交货率,发现第四季度延迟率上升,与冬季气候相关;
|
||||
2. 区域差异识别:统计发现西北地区按时交货率显著低于华东和海外市场,需优化运输路线;
|
||||
3. 货品维度对比:发现货品3延迟交货比例最高,是拉低整体交货率的关键因素;
|
||||
4. 图表化呈现:利用柱状图与折线图展示交货率变化,支持团队直观识别问题环节;
|
||||
|
||||
### 流程四:潜力市场与销售趋势挖掘
|
||||
|
||||
流程描述: 在时效分析之后,协助进行销售量与区域分布的趋势研究,挖掘高增长市场和淡季销售空档,为市场策略提供数据支撑。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 时间序列分析:统计月度销量,发现货品2在10月和12月销售激增,推测与促销相关;
|
||||
2. 区域差异分析:识别华东市场对货品2的需求增长明显,是未来重点资源投放区域;
|
||||
3. 销售淡季识别:发现货品2在7-9月和11月销量低迷,为企业提供淡季促销参考;
|
||||
4. 策略支持:协助整理趋势报告,提出加大华东市场投入、优化马来西亚市场资源配置的建议;
|
||||
|
||||
### 流程五:可视化报表与成果呈现
|
||||
|
||||
流程描述: 在分析结果基础上,利用Excel与Power BI制作多维度可视化报表,呈现配送效率、销售趋势与客户反馈结果,为管理层决策提供直观支撑。
|
||||
|
||||
工作内容:
|
||||
|
||||
1. 可视化设计:使用Excel透视图、Power BI柱状图与折线图展示交货率、销售趋势与反馈数据;
|
||||
2. 指标看板制作:搭建配送效率与区域销售趋势的实时监控看板,提升可读性与管理效率;
|
||||
3. 报告编制:将分析结果整理为图文并茂的分析文档,支持部门周会与管理层汇报;
|
||||
4. 档案归档:维护数据分析过程文档与可视化记录,保证过程可追溯并支持后续复盘;
|
||||
29
个人简历_化工/.claude/settings.local.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(find:*)",
|
||||
"Bash(open index.html)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git push:*)",
|
||||
"Bash(python3:*)",
|
||||
"Bash(open http://localhost:8080)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(gh repo view:*)",
|
||||
"mcp__serena__list_dir",
|
||||
"mcp__serena__activate_project",
|
||||
"Bash(cp:*)",
|
||||
"Bash(cat:*)",
|
||||
"Bash(node:*)",
|
||||
"Bash(open:*)",
|
||||
"mcp__serena__replace_regex",
|
||||
"Bash(rm:*)",
|
||||
"Bash(git init:*)",
|
||||
"Bash(git remote add:*)",
|
||||
"Bash(gh:*)",
|
||||
"WebFetch(domain:github.com)",
|
||||
"mcp__serena__find_file"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
||||
388
个人简历_化工/.cursor/rules/design.mdc
Normal file
@@ -0,0 +1,388 @@
|
||||
---
|
||||
description: Use this rule when asked to do any frontend or UI design
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
22
个人简历_化工/.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./
|
||||
publish_branch: gh-pages
|
||||
32
个人简历_化工/.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# 依赖目录
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# 环境变量
|
||||
.env
|
||||
.env.local
|
||||
.env.production.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
|
||||
# 编辑器目录
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Vercel
|
||||
.vercel
|
||||
|
||||
# 日志文件
|
||||
logs
|
||||
*.log
|
||||
|
||||
# 临时文件
|
||||
.temp
|
||||
.tmp
|
||||
.cache
|
||||
0
个人简历_化工/.nojekyll
Normal file
3191
个人简历_化工/.superdesign/design_iterations/chemical_resume_elegant.html
Normal file
164
个人简历_化工/.superdesign/design_iterations/chemical_theme_1.css
Normal file
@@ -0,0 +1,164 @@
|
||||
:root {
|
||||
/* 化工科技主题色彩系统 */
|
||||
--background: oklch(0.1200 0.020 210);
|
||||
--foreground: oklch(0.9800 0 0);
|
||||
--card: oklch(0.1500 0.015 210);
|
||||
--card-foreground: oklch(0.9500 0 0);
|
||||
--popover: oklch(0.1800 0.015 210);
|
||||
--popover-foreground: oklch(0.9500 0 0);
|
||||
|
||||
/* 主色 - 深青蓝色(化工科技感) */
|
||||
--primary: oklch(0.6200 0.1800 200);
|
||||
--primary-foreground: oklch(0.9800 0 0);
|
||||
|
||||
/* 次要色 - 翠绿色(环保与安全) */
|
||||
--secondary: oklch(0.6500 0.1500 165);
|
||||
--secondary-foreground: oklch(0.1200 0 0);
|
||||
|
||||
/* 柔和色 */
|
||||
--muted: oklch(0.2500 0.015 210);
|
||||
--muted-foreground: oklch(0.7000 0.010 210);
|
||||
|
||||
/* 强调色 - 橙色(安全警示) */
|
||||
--accent: oklch(0.6800 0.1900 45);
|
||||
--accent-foreground: oklch(0.1200 0 0);
|
||||
|
||||
/* 破坏色/警告色 */
|
||||
--destructive: oklch(0.5800 0.2200 25);
|
||||
--destructive-foreground: oklch(0.9800 0 0);
|
||||
|
||||
/* 边框 */
|
||||
--border: oklch(0.3000 0.015 210);
|
||||
--input: oklch(0.2800 0.015 210);
|
||||
--ring: oklch(0.6200 0.1800 200);
|
||||
|
||||
/* 图表颜色 - 数据可视化 */
|
||||
--chart-1: oklch(0.6200 0.1800 200);
|
||||
--chart-2: oklch(0.6500 0.1500 165);
|
||||
--chart-3: oklch(0.6800 0.1900 45);
|
||||
--chart-4: oklch(0.5500 0.1600 250);
|
||||
--chart-5: oklch(0.7000 0.1200 120);
|
||||
|
||||
/* 侧边栏 */
|
||||
--sidebar: oklch(0.1300 0.020 210);
|
||||
--sidebar-foreground: oklch(0.9500 0 0);
|
||||
--sidebar-primary: oklch(0.6200 0.1800 200);
|
||||
--sidebar-primary-foreground: oklch(0.9800 0 0);
|
||||
--sidebar-accent: oklch(0.6800 0.1900 45);
|
||||
--sidebar-accent-foreground: oklch(0.1200 0 0);
|
||||
--sidebar-border: oklch(0.3000 0.015 210);
|
||||
--sidebar-ring: oklch(0.6200 0.1800 200);
|
||||
|
||||
/* 字体系统 */
|
||||
--font-sans: 'Inter', 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
--font-serif: 'Merriweather', 'Georgia', serif;
|
||||
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
||||
|
||||
/* 圆角系统 */
|
||||
--radius: 0.75rem;
|
||||
--radius-sm: calc(var(--radius) - 0.25rem);
|
||||
--radius-md: calc(var(--radius));
|
||||
--radius-lg: calc(var(--radius) + 0.25rem);
|
||||
--radius-xl: calc(var(--radius) + 0.5rem);
|
||||
|
||||
/* 阴影系统 - 柔和科技感 */
|
||||
--shadow-2xs: 0 1px 2px 0px oklch(0 0 0 / 0.05);
|
||||
--shadow-xs: 0 2px 4px 0px oklch(0 0 0 / 0.08);
|
||||
--shadow-sm: 0 4px 6px -1px oklch(0 0 0 / 0.10), 0 2px 4px -1px oklch(0 0 0 / 0.06);
|
||||
--shadow: 0 6px 12px -2px oklch(0 0 0 / 0.15), 0 3px 6px -2px oklch(0 0 0 / 0.08);
|
||||
--shadow-md: 0 8px 16px -3px oklch(0 0 0 / 0.12), 0 4px 8px -2px oklch(0 0 0 / 0.06);
|
||||
--shadow-lg: 0 12px 24px -4px oklch(0 0 0 / 0.15), 0 6px 12px -2px oklch(0 0 0 / 0.08);
|
||||
--shadow-xl: 0 20px 32px -5px oklch(0 0 0 / 0.20), 0 10px 16px -3px oklch(0 0 0 / 0.10);
|
||||
--shadow-2xl: 0 32px 48px -8px oklch(0 0 0 / 0.25);
|
||||
|
||||
/* 发光效果 - 科技感 */
|
||||
--glow-primary: 0 0 20px oklch(0.6200 0.1800 200 / 0.3);
|
||||
--glow-secondary: 0 0 20px oklch(0.6500 0.1500 165 / 0.3);
|
||||
--glow-accent: 0 0 20px oklch(0.6800 0.1900 45 / 0.3);
|
||||
|
||||
/* 文字追踪 */
|
||||
--tracking-normal: 0em;
|
||||
--tracking-wide: 0.025em;
|
||||
--tracking-wider: 0.05em;
|
||||
--tracking-widest: 0.1em;
|
||||
|
||||
/* 间距系统 */
|
||||
--spacing: 0.25rem;
|
||||
--spacing-2: calc(var(--spacing) * 2);
|
||||
--spacing-3: calc(var(--spacing) * 3);
|
||||
--spacing-4: calc(var(--spacing) * 4);
|
||||
--spacing-5: calc(var(--spacing) * 5);
|
||||
--spacing-6: calc(var(--spacing) * 6);
|
||||
--spacing-8: calc(var(--spacing) * 8);
|
||||
--spacing-10: calc(var(--spacing) * 10);
|
||||
--spacing-12: calc(var(--spacing) * 12);
|
||||
--spacing-16: calc(var(--spacing) * 16);
|
||||
--spacing-20: calc(var(--spacing) * 20);
|
||||
--spacing-24: calc(var(--spacing) * 24);
|
||||
|
||||
/* 过渡动画时间 */
|
||||
--duration-instant: 0ms;
|
||||
--duration-fast: 150ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-slow: 500ms;
|
||||
--duration-slower: 700ms;
|
||||
|
||||
/* 缓动函数 */
|
||||
--ease-linear: linear;
|
||||
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
||||
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
||||
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
}
|
||||
|
||||
/* 亮色主题变体(可选) */
|
||||
[data-theme="light"] {
|
||||
--background: oklch(0.9800 0 0);
|
||||
--foreground: oklch(0.1200 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1200 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1200 0 0);
|
||||
--primary: oklch(0.5200 0.2000 200);
|
||||
--primary-foreground: oklch(0.9800 0 0);
|
||||
--secondary: oklch(0.5500 0.1700 165);
|
||||
--secondary-foreground: oklch(0.9800 0 0);
|
||||
--muted: oklch(0.9500 0 0);
|
||||
--muted-foreground: oklch(0.4500 0 0);
|
||||
--accent: oklch(0.6000 0.2100 45);
|
||||
--accent-foreground: oklch(0.9800 0 0);
|
||||
--destructive: oklch(0.5000 0.2400 25);
|
||||
--destructive-foreground: oklch(0.9800 0 0);
|
||||
--border: oklch(0.9000 0 0);
|
||||
--input: oklch(0.9000 0 0);
|
||||
--ring: oklch(0.5200 0.2000 200);
|
||||
}
|
||||
|
||||
/* 特殊效果类 */
|
||||
.gradient-primary {
|
||||
background: linear-gradient(135deg,
|
||||
oklch(0.6200 0.1800 200),
|
||||
oklch(0.6500 0.1500 165));
|
||||
}
|
||||
|
||||
.gradient-tech {
|
||||
background: linear-gradient(135deg,
|
||||
oklch(0.5500 0.1600 250),
|
||||
oklch(0.6200 0.1800 200),
|
||||
oklch(0.6500 0.1500 165));
|
||||
}
|
||||
|
||||
.gradient-safety {
|
||||
background: linear-gradient(135deg,
|
||||
oklch(0.6800 0.1900 45),
|
||||
oklch(0.5800 0.2200 25));
|
||||
}
|
||||
|
||||
.text-gradient {
|
||||
background: linear-gradient(135deg,
|
||||
oklch(0.6200 0.1800 200),
|
||||
oklch(0.6500 0.1500 165));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
521
个人简历_化工/.superdesign/design_iterations/default_ui_darkmode.css
Normal file
@@ -0,0 +1,521 @@
|
||||
/* ========================================
|
||||
Dark Mode UI Framework
|
||||
A beautiful dark mode design system
|
||||
======================================== */
|
||||
|
||||
/* ========================================
|
||||
CSS Variables & Theme
|
||||
======================================== */
|
||||
:root {
|
||||
/* Dark Mode Color Palette */
|
||||
--background: oklch(0.145 0 0);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.205 0 0);
|
||||
--card-foreground: oklch(0.985 0 0);
|
||||
--primary: oklch(0.922 0 0);
|
||||
--primary-foreground: oklch(0.205 0 0);
|
||||
--secondary: oklch(0.269 0 0);
|
||||
--secondary-foreground: oklch(0.985 0 0);
|
||||
--muted: oklch(0.269 0 0);
|
||||
--muted-foreground: oklch(0.708 0 0);
|
||||
--accent: oklch(0.269 0 0);
|
||||
--accent-foreground: oklch(0.985 0 0);
|
||||
--destructive: oklch(0.704 0.191 22.216);
|
||||
--border: oklch(1 0 0 / 10%);
|
||||
--input: oklch(1 0 0 / 15%);
|
||||
--ring: oklch(0.556 0 0);
|
||||
|
||||
/* Spacing & Layout */
|
||||
--radius: 0.625rem;
|
||||
--spacing-xs: 0.25rem;
|
||||
--spacing-sm: 0.5rem;
|
||||
--spacing-md: 0.75rem;
|
||||
--spacing-lg: 1rem;
|
||||
--spacing-xl: 1.5rem;
|
||||
--spacing-2xl: 2rem;
|
||||
--spacing-3xl: 3rem;
|
||||
|
||||
/* Typography */
|
||||
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
--font-size-xs: 0.75rem;
|
||||
--font-size-sm: 0.875rem;
|
||||
--font-size-base: 1rem;
|
||||
--font-size-lg: 1.125rem;
|
||||
--font-size-xl: 1.25rem;
|
||||
--font-size-2xl: 1.5rem;
|
||||
--font-size-3xl: 1.875rem;
|
||||
--font-size-4xl: 2.25rem;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Base Styles
|
||||
======================================== */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-family);
|
||||
line-height: 1.6;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
html.dark {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Layout Components
|
||||
======================================== */
|
||||
.container {
|
||||
max-width: 64rem;
|
||||
margin: 0 auto;
|
||||
padding: var(--spacing-2xl) var(--spacing-lg);
|
||||
}
|
||||
|
||||
.container-sm {
|
||||
max-width: 42rem;
|
||||
}
|
||||
|
||||
.container-lg {
|
||||
max-width: 80rem;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
|
||||
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||
.grid-cols-auto { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
|
||||
|
||||
.gap-sm { gap: var(--spacing-sm); }
|
||||
.gap-md { gap: var(--spacing-md); }
|
||||
.gap-lg { gap: var(--spacing-lg); }
|
||||
.gap-xl { gap: var(--spacing-xl); }
|
||||
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.justify-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.justify-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Card Components
|
||||
======================================== */
|
||||
.card {
|
||||
background-color: var(--card);
|
||||
color: var(--card-foreground);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: calc(var(--radius) + 4px);
|
||||
padding: var(--spacing-xl);
|
||||
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Button Components
|
||||
======================================== */
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--spacing-sm);
|
||||
white-space: nowrap;
|
||||
border-radius: var(--radius);
|
||||
font-size: var(--font-size-sm);
|
||||
font-weight: 500;
|
||||
transition: all 0.2s;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: var(--spacing-sm) var(--spacing-lg);
|
||||
min-height: 2.25rem;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: var(--primary);
|
||||
color: var(--primary-foreground);
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: rgba(236, 236, 236, 0.9);
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--border);
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
.btn-outline:hover {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
|
||||
.btn-ghost {
|
||||
background-color: transparent;
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
.btn-ghost:hover {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
|
||||
.btn-destructive {
|
||||
background-color: var(--destructive);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-destructive:hover {
|
||||
background-color: rgba(220, 38, 38, 0.9);
|
||||
}
|
||||
|
||||
/* Button Sizes */
|
||||
.btn-sm {
|
||||
padding: var(--spacing-xs) var(--spacing-md);
|
||||
font-size: var(--font-size-xs);
|
||||
min-height: 2rem;
|
||||
}
|
||||
|
||||
.btn-lg {
|
||||
padding: var(--spacing-md) var(--spacing-xl);
|
||||
font-size: var(--font-size-base);
|
||||
min-height: 2.75rem;
|
||||
}
|
||||
|
||||
.btn-icon {
|
||||
padding: var(--spacing-sm);
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Form Components
|
||||
======================================== */
|
||||
.form-input {
|
||||
width: 100%;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
color: var(--foreground);
|
||||
font-size: var(--font-size-sm);
|
||||
outline: none;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.form-input:focus {
|
||||
border-color: var(--ring);
|
||||
box-shadow: 0 0 0 3px rgba(136, 136, 136, 0.5);
|
||||
}
|
||||
|
||||
.form-input::placeholder {
|
||||
color: var(--muted-foreground);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Badge Components
|
||||
======================================== */
|
||||
.badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid;
|
||||
padding: 0.125rem var(--spacing-sm);
|
||||
font-size: var(--font-size-xs);
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Priority Badge Variants */
|
||||
.badge-priority-high {
|
||||
background: rgba(127, 29, 29, 0.3);
|
||||
color: rgb(252, 165, 165);
|
||||
border: 1px solid rgba(153, 27, 27, 0.5);
|
||||
}
|
||||
|
||||
.badge-priority-medium {
|
||||
background: rgba(120, 53, 15, 0.3);
|
||||
color: rgb(252, 211, 77);
|
||||
border: 1px solid rgba(146, 64, 14, 0.5);
|
||||
}
|
||||
|
||||
.badge-priority-low {
|
||||
background: rgba(20, 83, 45, 0.3);
|
||||
color: rgb(134, 239, 172);
|
||||
border: 1px solid rgba(22, 101, 52, 0.5);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Tab Components
|
||||
======================================== */
|
||||
.tab-list {
|
||||
display: flex;
|
||||
gap: var(--spacing-sm);
|
||||
margin-bottom: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.tab-button {
|
||||
background-color: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
color: var(--foreground);
|
||||
text-transform: capitalize;
|
||||
font-weight: 500;
|
||||
transition: all 0.2s ease;
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
font-size: var(--font-size-sm);
|
||||
}
|
||||
|
||||
.tab-button:hover {
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
border-color: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.tab-button.active {
|
||||
background-color: #f8f9fa !important;
|
||||
color: #1a1a1a !important;
|
||||
border-color: #f8f9fa !important;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.tab-button.active:hover {
|
||||
background-color: #e9ecef !important;
|
||||
border-color: #e9ecef !important;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Typography
|
||||
======================================== */
|
||||
.text-xs { font-size: var(--font-size-xs); }
|
||||
.text-sm { font-size: var(--font-size-sm); }
|
||||
.text-base { font-size: var(--font-size-base); }
|
||||
.text-lg { font-size: var(--font-size-lg); }
|
||||
.text-xl { font-size: var(--font-size-xl); }
|
||||
.text-2xl { font-size: var(--font-size-2xl); }
|
||||
.text-3xl { font-size: var(--font-size-3xl); }
|
||||
.text-4xl { font-size: var(--font-size-4xl); }
|
||||
|
||||
.font-normal { font-weight: 400; }
|
||||
.font-medium { font-weight: 500; }
|
||||
.font-semibold { font-weight: 600; }
|
||||
.font-bold { font-weight: 700; }
|
||||
|
||||
.text-primary { color: var(--primary); }
|
||||
.text-muted { color: var(--muted-foreground); }
|
||||
.text-destructive { color: var(--destructive); }
|
||||
|
||||
.gradient-text {
|
||||
background: linear-gradient(to right, var(--primary), rgba(236, 236, 236, 0.6));
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Icon System
|
||||
======================================== */
|
||||
.icon {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
fill: currentColor;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.icon-sm { width: 0.875rem; height: 0.875rem; }
|
||||
.icon-lg { width: 1.25rem; height: 1.25rem; }
|
||||
.icon-xl { width: 1.5rem; height: 1.5rem; }
|
||||
.icon-2xl { width: 2rem; height: 2rem; }
|
||||
|
||||
/* ========================================
|
||||
Interactive Components
|
||||
======================================== */
|
||||
.checkbox {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.checkbox:hover {
|
||||
border-color: var(--ring);
|
||||
}
|
||||
|
||||
.checkbox.checked {
|
||||
background-color: rgb(22, 163, 74);
|
||||
border-color: rgb(22, 163, 74);
|
||||
}
|
||||
|
||||
.checkbox.checked::after {
|
||||
content: '✓';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: white;
|
||||
font-size: 0.75rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
List Components
|
||||
======================================== */
|
||||
.list-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--spacing-lg);
|
||||
padding: var(--spacing-lg);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||
transition: background-color 0.2s;
|
||||
}
|
||||
|
||||
.list-item:hover {
|
||||
background-color: rgba(255, 255, 255, 0.025);
|
||||
}
|
||||
|
||||
.list-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.list-item.completed {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Empty State Component
|
||||
======================================== */
|
||||
.empty-state {
|
||||
text-align: center;
|
||||
padding: var(--spacing-3xl) var(--spacing-lg);
|
||||
color: var(--muted-foreground);
|
||||
}
|
||||
|
||||
.empty-state .icon {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
margin: 0 auto var(--spacing-lg);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Utility Classes
|
||||
======================================== */
|
||||
.hidden { display: none; }
|
||||
.block { display: block; }
|
||||
.flex { display: flex; }
|
||||
.inline-flex { display: inline-flex; }
|
||||
|
||||
.w-full { width: 100%; }
|
||||
.h-full { height: 100%; }
|
||||
.min-h-screen { min-height: 100vh; }
|
||||
|
||||
.opacity-50 { opacity: 0.5; }
|
||||
.opacity-60 { opacity: 0.6; }
|
||||
.opacity-75 { opacity: 0.75; }
|
||||
|
||||
.transition-all { transition: all 0.2s ease; }
|
||||
.transition-colors { transition: color 0.2s ease, background-color 0.2s ease; }
|
||||
.transition-opacity { transition: opacity 0.2s ease; }
|
||||
|
||||
/* ========================================
|
||||
Responsive Design
|
||||
======================================== */
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
padding: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.grid-cols-auto {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.flex-col-mobile {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.text-center-mobile {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.gap-sm-mobile { gap: var(--spacing-sm); }
|
||||
|
||||
.hidden-mobile { display: none; }
|
||||
.block-mobile { display: block; }
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.text-2xl { font-size: var(--font-size-xl); }
|
||||
.text-3xl { font-size: var(--font-size-2xl); }
|
||||
.text-4xl { font-size: var(--font-size-3xl); }
|
||||
|
||||
.container {
|
||||
padding: var(--spacing-lg) var(--spacing-sm);
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Animation Utilities
|
||||
======================================== */
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(10px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
.animate-fade-in {
|
||||
animation: fadeIn 0.3s ease-out;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Focus & Accessibility
|
||||
======================================== */
|
||||
.focus-visible:focus-visible {
|
||||
outline: 2px solid var(--ring);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
* {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
383
个人简历_化工/.windsurfrules
Normal file
@@ -0,0 +1,383 @@
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
383
个人简历_化工/CLAUDE.md
Normal file
@@ -0,0 +1,383 @@
|
||||
When asked to design UI & frontend interface
|
||||
When asked to design UI & frontend interface
|
||||
# Role
|
||||
You are superdesign, a senior frontend designer integrated into VS Code as part of the Super Design extension.
|
||||
Your goal is to help user generate amazing design using code
|
||||
|
||||
# Instructions
|
||||
- Use the available tools when needed to help with file operations and code analysis
|
||||
- When creating design file:
|
||||
- Build one single html page of just one screen to build a design based on users' feedback/task
|
||||
- You ALWAYS output design files in '.superdesign/design_iterations' folder as {design_name}_{n}.html (Where n needs to be unique like table_1.html, table_2.html, etc.) or svg file
|
||||
- If you are iterating design based on existing file, then the naming convention should be {current_file_name}_{n}.html, e.g. if we are iterating ui_1.html, then each version should be ui_1_1.html, ui_1_2.html, etc.
|
||||
- You should ALWAYS use tools above for write/edit html files, don't just output in a message, always do tool calls
|
||||
|
||||
## Styling
|
||||
1. superdesign tries to use the flowbite library as a base unless the user specifies otherwise.
|
||||
2. superdesign avoids using indigo or blue colors unless specified in the user's request.
|
||||
3. superdesign MUST generate responsive designs.
|
||||
4. When designing component, poster or any other design that is not full app, you should make sure the background fits well with the actual poster or component UI color; e.g. if component is light then background should be dark, vice versa.
|
||||
5. Font should always using google font, below is a list of default fonts: 'JetBrains Mono', 'Fira Code', 'Source Code Pro','IBM Plex Mono','Roboto Mono','Space Mono','Geist Mono','Inter','Roboto','Open Sans','Poppins','Montserrat','Outfit','Plus Jakarta Sans','DM Sans','Geist','Oxanium','Architects Daughter','Merriweather','Playfair Display','Lora','Source Serif Pro','Libre Baskerville','Space Grotesk'
|
||||
6. When creating CSS, make sure you include !important for all properties that might be overwritten by tailwind & flowbite, e.g. h1, body, etc.
|
||||
7. Unless user asked specifcially, you should NEVER use some bootstrap style blue color, those are terrible color choices, instead looking at reference below.
|
||||
8. Example theme patterns:
|
||||
Ney-brutalism style that feels like 90s web design
|
||||
<neo-brutalism-style>
|
||||
:root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0 0 0);
|
||||
--primary: oklch(0.6489 0.2370 26.9728);
|
||||
--primary-foreground: oklch(1.0000 0 0);
|
||||
--secondary: oklch(0.9680 0.2110 109.7692);
|
||||
--secondary-foreground: oklch(0 0 0);
|
||||
--muted: oklch(0.9551 0 0);
|
||||
--muted-foreground: oklch(0.3211 0 0);
|
||||
--accent: oklch(0.5635 0.2408 260.8178);
|
||||
--accent-foreground: oklch(1.0000 0 0);
|
||||
--destructive: oklch(0 0 0);
|
||||
--destructive-foreground: oklch(1.0000 0 0);
|
||||
--border: oklch(0 0 0);
|
||||
--input: oklch(0 0 0);
|
||||
--ring: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-1: oklch(0.6489 0.2370 26.9728);
|
||||
--chart-2: oklch(0.9680 0.2110 109.7692);
|
||||
--chart-3: oklch(0.5635 0.2408 260.8178);
|
||||
--chart-4: oklch(0.7323 0.2492 142.4953);
|
||||
--chart-5: oklch(0.5931 0.2726 328.3634);
|
||||
--sidebar: oklch(0.9551 0 0);
|
||||
--sidebar-foreground: oklch(0 0 0);
|
||||
--sidebar-primary: oklch(0.6489 0.2370 26.9728);
|
||||
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-accent: oklch(0.5635 0.2408 260.8178);
|
||||
--sidebar-accent-foreground: oklch(1.0000 0 0);
|
||||
--sidebar-border: oklch(0 0 0);
|
||||
--sidebar-ring: oklch(0.6489 0.2370 26.9728);
|
||||
--font-sans: DM Sans, sans-serif;
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: Space Mono, monospace;
|
||||
--radius: 0px;
|
||||
--shadow-2xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-xs: 4px 4px 0px 0px hsl(0 0% 0% / 0.50);
|
||||
--shadow-sm: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 1px 2px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-md: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 2px 4px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-lg: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 4px 6px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-xl: 4px 4px 0px 0px hsl(0 0% 0% / 1.00), 4px 8px 10px -1px hsl(0 0% 0% / 1.00);
|
||||
--shadow-2xl: 4px 4px 0px 0px hsl(0 0% 0% / 2.50);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</neo-brutalism-style>
|
||||
|
||||
Modern dark mode style like vercel, linear
|
||||
<modern-dark-mode-style>
|
||||
:root {
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.1450 0 0);
|
||||
--card: oklch(1 0 0);
|
||||
--card-foreground: oklch(0.1450 0 0);
|
||||
--popover: oklch(1 0 0);
|
||||
--popover-foreground: oklch(0.1450 0 0);
|
||||
--primary: oklch(0.2050 0 0);
|
||||
--primary-foreground: oklch(0.9850 0 0);
|
||||
--secondary: oklch(0.9700 0 0);
|
||||
--secondary-foreground: oklch(0.2050 0 0);
|
||||
--muted: oklch(0.9700 0 0);
|
||||
--muted-foreground: oklch(0.5560 0 0);
|
||||
--accent: oklch(0.9700 0 0);
|
||||
--accent-foreground: oklch(0.2050 0 0);
|
||||
--destructive: oklch(0.5770 0.2450 27.3250);
|
||||
--destructive-foreground: oklch(1 0 0);
|
||||
--border: oklch(0.9220 0 0);
|
||||
--input: oklch(0.9220 0 0);
|
||||
--ring: oklch(0.7080 0 0);
|
||||
--chart-1: oklch(0.8100 0.1000 252);
|
||||
--chart-2: oklch(0.6200 0.1900 260);
|
||||
--chart-3: oklch(0.5500 0.2200 263);
|
||||
--chart-4: oklch(0.4900 0.2200 264);
|
||||
--chart-5: oklch(0.4200 0.1800 266);
|
||||
--sidebar: oklch(0.9850 0 0);
|
||||
--sidebar-foreground: oklch(0.1450 0 0);
|
||||
--sidebar-primary: oklch(0.2050 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9850 0 0);
|
||||
--sidebar-accent: oklch(0.9700 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2050 0 0);
|
||||
--sidebar-border: oklch(0.9220 0 0);
|
||||
--sidebar-ring: oklch(0.7080 0 0);
|
||||
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--radius: 0.625rem;
|
||||
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10);
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px);
|
||||
--radius-md: calc(var(--radius) - 2px);
|
||||
--radius-lg: var(--radius);
|
||||
--radius-xl: calc(var(--radius) + 4px);
|
||||
}
|
||||
</modern-dark-mode-style>
|
||||
|
||||
## Images & icons
|
||||
1. For images, just use placeholder image from public source like unsplash, placehold.co or others that you already know exact image url; Don't make up urls
|
||||
2. For icons, we should use lucid icons or other public icons, import like <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||
|
||||
## Script
|
||||
1. When importing tailwind css, just use <script src="https://cdn.tailwindcss.com"></script>, don't load CSS directly as a stylesheet resource like <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
2. When using flowbite, import like <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
|
||||
|
||||
## Workflow
|
||||
You should always follow workflow below unless user explicitly ask you to do something else:
|
||||
1. Layout design
|
||||
2. Theme design (Color, font, spacing, shadown), using generateTheme tool, it should save the css to a local file
|
||||
3. Core Animation design
|
||||
4. Generate a singlehtml file for the UI
|
||||
5. You HAVE TO confirm with user step by step, don't do theme design until user sign off the layout design, same for all follownig steps
|
||||
|
||||
### 1. Layout design
|
||||
Output type: Just text
|
||||
Think through how should the layout of interface look like, what are different UI components
|
||||
And present the layout in ASCII wireframe format, here are the guidelines of good ASCII wireframe, you can do ASCII art too for more custom layout or graphic design
|
||||
|
||||
### 2. Theme design
|
||||
Output type: Tool call
|
||||
Think through what are the colors, fonts, spacing, etc.
|
||||
You HAVE TO use generateTheme tool to generate the theme, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
### 3. Animation design
|
||||
Output type: Just text
|
||||
Think through what are the animations, transitions, etc.
|
||||
|
||||
### 4. Generate html file for each UI component and then combine them together to form a single html file
|
||||
Output type: Tool call
|
||||
Generate html file for each UI component and then combine them together to form a single html file
|
||||
Make sure to reference the theme css file you created in step 2, and add custom ones that doesn't exist yet in html file
|
||||
You HAVE TO use write tool to generate the html file, do NOT just output XML type text for tool-call, that is not allowed
|
||||
|
||||
<example>
|
||||
<user>design an AI chat UI</user>
|
||||
|
||||
<assistant>
|
||||
Let's think through the layout design for an AI chat UI. Here are the key components and layout considerations:
|
||||
|
||||
## Core UI Components
|
||||
|
||||
**Header Area**
|
||||
- Settings/menu button (Top left)
|
||||
- Chat title/AI name (Top left)
|
||||
- Conversation controls (new chat, clear, etc.) (Top right)
|
||||
|
||||
**Main Chat Area**
|
||||
- Message container (scrollable) (Full width & height)
|
||||
- User messages (typically right-aligned)
|
||||
- AI messages (typically left-aligned)
|
||||
- Message timestamps (Small subtle text at the bottom of each message, aligned to the right/left depending on the message)
|
||||
|
||||
**Input Area**
|
||||
- Text input field (Full width left)
|
||||
- Send button (Embed within the input field,Bottom right side of the screen)
|
||||
- Additional controls (attach files, voice input, etc.) (Embed within the input field, Bottom left)
|
||||
- Character/token counter (optional) (Embed within the input field, top right corner, small text)
|
||||
|
||||
|
||||
## Layout Structure Options
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ ☰ HEADER BAR + │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ User Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────┐ │
|
||||
│ │ AI Message Bubble │ │
|
||||
│ └─────────────────────────────┘ │
|
||||
│ │
|
||||
│ [CHAT AREA] │
|
||||
│ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [Text Input Field] [Send] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
When hamburger (☰) is clicked, sidebar slides out:
|
||||
┌──────────────┬─────────────────────────────────────┐
|
||||
│ SIDEBAR │ ☰ HEADER BAR + │
|
||||
│ ┌──────────┐ ├─────────────────────────────────────┤
|
||||
│ │ Chat 1 │ │ │
|
||||
│ │ Chat 2 │ │ ┌─────────────────────────────┐ │
|
||||
│ │ Chat 3 │ │ │ AI Message Bubble │ │
|
||||
│ │ + New │ │ └─────────────────────────────┘ │
|
||||
│ └──────────┘ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ User Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌─────────────────────────────┐ │
|
||||
│ │ │ AI Message Bubble │ │
|
||||
│ │ └─────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ [CHAT AREA] │
|
||||
│ │ │
|
||||
│ ├─────────────────────────────────────┤
|
||||
│ │ [Text Input Field] [Send] │
|
||||
└──────────────┘─────────────────────────────────────┘
|
||||
|
||||
Would you like to go ahead with this layout & UI interaction or needs any modification?
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
They looks good
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the color & font theme,
|
||||
|
||||
generateTheme(theme_name='Vercel techy style', reasoning_reference='Reference classic shadcn style that has ...', cssFilePath='.superdesign/design_iterations/theme_1.css', cssSheet=':root {
|
||||
--background: oklch(1.0000 0 0);
|
||||
--foreground: oklch(0.1448 0 0);
|
||||
--card: oklch(1.0000 0 0);
|
||||
--card-foreground: oklch(0.1448 0 0);
|
||||
--popover: oklch(1.0000 0 0);
|
||||
--popover-foreground: oklch(0.1448 0 0);
|
||||
--primary: oklch(0.5555 0 0);
|
||||
--primary-foreground: oklch(0.9851 0 0);
|
||||
--secondary: oklch(0.9702 0 0);
|
||||
--secondary-foreground: oklch(0.2046 0 0);
|
||||
--muted: oklch(0.9702 0 0);
|
||||
--muted-foreground: oklch(0.5486 0 0);
|
||||
--accent: oklch(0.9702 0 0);
|
||||
--accent-foreground: oklch(0.2046 0 0);
|
||||
--destructive: oklch(0.5830 0.2387 28.4765);
|
||||
--destructive-foreground: oklch(0.9702 0 0);
|
||||
--border: oklch(0.9219 0 0);
|
||||
--input: oklch(0.9219 0 0);
|
||||
--ring: oklch(0.7090 0 0);
|
||||
--chart-1: oklch(0.5555 0 0);
|
||||
--chart-2: oklch(0.5555 0 0);
|
||||
--chart-3: oklch(0.5555 0 0);
|
||||
--chart-4: oklch(0.5555 0 0);
|
||||
--chart-5: oklch(0.5555 0 0);
|
||||
--sidebar: oklch(0.9851 0 0);
|
||||
--sidebar-foreground: oklch(0.1448 0 0);
|
||||
--sidebar-primary: oklch(0.2046 0 0);
|
||||
--sidebar-primary-foreground: oklch(0.9851 0 0);
|
||||
--sidebar-accent: oklch(0.9702 0 0);
|
||||
--sidebar-accent-foreground: oklch(0.2046 0 0);
|
||||
--sidebar-border: oklch(0.9219 0 0);
|
||||
--sidebar-ring: oklch(0.7090 0 0);
|
||||
--font-sans: Geist Mono, monospace;
|
||||
--font-serif: Geist Mono, monospace;
|
||||
--font-mono: Geist Mono, monospace;
|
||||
--radius: 0rem;
|
||||
--shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--shadow-sm: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 1px 2px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-md: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 2px 4px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-lg: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 4px 6px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00), 0px 8px 10px -1px hsl(0 0% 0% / 0.00);
|
||||
--shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0.00);
|
||||
--tracking-normal: 0em;
|
||||
--spacing: 0.25rem;
|
||||
}')
|
||||
|
||||
|
||||
<user>
|
||||
I like the vintage style
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, next let's design the animation:
|
||||
|
||||
# CHAT UI ANIMATIONS - MICRO-SYNTAX
|
||||
|
||||
## Core Message Flow
|
||||
userMsg: 400ms ease-out [Y+20→0, X+10→0, S0.9→1]
|
||||
aiMsg: 600ms bounce [Y+15→0, S0.95→1] +200ms
|
||||
typing: 1400ms ∞ [Y±8, α0.4→1] stagger+200ms
|
||||
status: 300ms ease-out [α0.6→1, S1→1.05→1]
|
||||
|
||||
## Interface Transitions
|
||||
sidebar: 350ms ease-out [X-280→0, α0→1]
|
||||
overlay: 300ms [α0→1, blur0→4px]
|
||||
input: 200ms [S1→1.01, shadow+ring] focus
|
||||
input: 150ms [S1.01→1, shadow-ring] blur
|
||||
|
||||
## Button Interactions
|
||||
sendBtn: 150ms [S1→0.95→1, R±2°] press
|
||||
sendBtn: 200ms [S1→1.05, shadow↗] hover
|
||||
ripple: 400ms [S0→2, α1→0]
|
||||
|
||||
## Loading States
|
||||
chatLoad: 500ms ease-out [Y+40→0, α0→1]
|
||||
skeleton: 2000ms ∞ [bg: muted↔accent]
|
||||
spinner: 1000ms ∞ linear [R360°]
|
||||
|
||||
## Micro Interactions
|
||||
msgHover: 200ms [Y0→-2, shadow↗]
|
||||
msgSelect: 200ms [bg→accent, S1→1.02]
|
||||
error: 400ms [X±5] shake
|
||||
success: 600ms bounce [S0→1.2→1, R360°]
|
||||
|
||||
## Scroll & Navigation
|
||||
autoScroll: 400ms smooth
|
||||
scrollHint: 800ms ∞×3 [Y±5]
|
||||
|
||||
This animation system creates a cohesive, responsive feel throughout the chat interface. Each animation has specific timing and easing to feel natural and purposeful. Would you like me to adjust any of these animations or add additional ones?
|
||||
|
||||
</assistant>
|
||||
|
||||
<user>
|
||||
This looks great, lets do it
|
||||
</user>
|
||||
|
||||
<assistant>
|
||||
Great, I will generate the html file for each UI component and then combine them together to form a single html file
|
||||
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.css', content='...')
|
||||
write(file_path='.superdesign/design_iterations/chat_ui.html', content='...')
|
||||
|
||||
I've created the html design, please reveiw and let me know if you need any changes
|
||||
|
||||
</example>
|
||||
|
||||
IMPORTANT RULES:
|
||||
1. You MUST use tools call below for any action like generateTheme, write, edit, etc. You are NOT allowed to just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>; MUST USE TOOL CALL (This is very important!!)
|
||||
2. You MUST confirm the layout, and then theme style, and then animation
|
||||
3. You MUST use .superdesign/design_iterations folder to save the design files, do NOT save to other folders
|
||||
4. You MUST create follow the workflow above
|
||||
|
||||
# Available Tools
|
||||
- **read**: Read file contents within the workspace (supports text files, images, with line range options)
|
||||
- **write**: Write content to files in the workspace (creates parent directories automatically)
|
||||
- **edit**: Replace text within files using exact string matching (requires precise text matching including whitespace and indentation)
|
||||
- **multiedit**: Perform multiple find-and-replace operations on a single file in sequence (each edit applied to result of previous edit)
|
||||
- **glob**: Find files and directories matching glob patterns (e.g., "*.js", "src/**/*.ts") - efficient for locating files by name or path structure
|
||||
- **grep**: Search for text patterns within file contents using regular expressions (can filter by file types and paths)
|
||||
- **ls**: List directory contents with optional filtering, sorting, and detailed information (shows files and subdirectories)
|
||||
- **bash**: Execute shell/bash commands within the workspace (secure execution with timeouts and output capture)
|
||||
- **generateTheme**: Generate a theme for the design
|
||||
|
||||
When calling tools, you MUST use the actual tool call, do NOT just output text like 'Called tool: write with arguments: ...' or <tool-call>...</tool-call>, this won't actually call the tool. (This is very important to my life, please follow)
|
||||
416
个人简历_化工/chemical_modern_theme.css
Normal file
@@ -0,0 +1,416 @@
|
||||
/* 化工工程师简历 - 现代科技主题 */
|
||||
|
||||
:root {
|
||||
/* ===== 现代化工科技配色系统 ===== */
|
||||
|
||||
/* 深色背景系 - 科技感 */
|
||||
--bg-primary: #0a0e1a; /* 深蓝黑 */
|
||||
--bg-secondary: #111827; /* 深灰蓝 */
|
||||
--bg-tertiary: #1f2937; /* 中灰蓝 */
|
||||
--bg-surface: #374151; /* 浅灰蓝 */
|
||||
--bg-elevated: #4b5563; /* 表面色 */
|
||||
|
||||
/* 化工蓝绿色系 - 主色调 */
|
||||
--chem-primary: #06b6d4; /* 青蓝色 */
|
||||
--chem-primary-light: #22d3ee; /* 亮青蓝 */
|
||||
--chem-primary-dark: #0891b2; /* 深青蓝 */
|
||||
--chem-secondary: #10b981; /* 翠绿色 */
|
||||
--chem-accent: #3b82f6; /* 科技蓝 */
|
||||
|
||||
/* 警示色系 - 化工安全 */
|
||||
--safety-orange: #f97316; /* 安全橙 */
|
||||
--safety-red: #ef4444; /* 警示红 */
|
||||
--safety-yellow: #eab308; /* 警示黄 */
|
||||
--safety-green: #22c55e; /* 安全绿 */
|
||||
|
||||
/* 文字色系 */
|
||||
--text-primary: #f8fafc; /* 主文字 */
|
||||
--text-secondary: #e2e8f0; /* 次要文字 */
|
||||
--text-muted: #94a3b8; /* 弱化文字 */
|
||||
--text-disabled: #64748b; /* 禁用文字 */
|
||||
|
||||
/* 渐变效果 */
|
||||
--gradient-primary: linear-gradient(135deg, var(--chem-primary) 0%, var(--chem-secondary) 100%);
|
||||
--gradient-tech: linear-gradient(135deg, var(--chem-accent) 0%, var(--chem-primary) 50%, var(--chem-secondary) 100%);
|
||||
--gradient-safety: linear-gradient(135deg, var(--safety-orange) 0%, var(--safety-red) 100%);
|
||||
|
||||
/* 阴影系统 - 现代深度 */
|
||||
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
||||
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||
--shadow-glow: 0 0 20px rgba(6, 182, 212, 0.3);
|
||||
|
||||
/* 边框系统 */
|
||||
--border-light: 1px solid rgba(255, 255, 255, 0.1);
|
||||
--border-medium: 1px solid rgba(255, 255, 255, 0.2);
|
||||
--border-accent: 1px solid var(--chem-primary);
|
||||
|
||||
/* 圆角系统 */
|
||||
--radius-sm: 0.375rem;
|
||||
--radius-md: 0.5rem;
|
||||
--radius-lg: 0.75rem;
|
||||
--radius-xl: 1rem;
|
||||
--radius-2xl: 1.5rem;
|
||||
|
||||
/* 间距系统 */
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
|
||||
/* 过渡动画 */
|
||||
--transition-fast: 0.15s ease-out;
|
||||
--transition-normal: 0.3s ease-out;
|
||||
--transition-slow: 0.5s ease-out;
|
||||
}
|
||||
|
||||
/* 全局样式重置 */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
background: var(--bg-primary);
|
||||
color: var(--text-primary);
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* 背景科技网格效果 */
|
||||
body::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image:
|
||||
linear-gradient(rgba(6, 182, 212, 0.1) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(6, 182, 212, 0.1) 1px, transparent 1px);
|
||||
background-size: 50px 50px;
|
||||
z-index: -1;
|
||||
animation: gridMove 20s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes gridMove {
|
||||
0% { transform: translate(0, 0); }
|
||||
100% { transform: translate(50px, 50px); }
|
||||
}
|
||||
|
||||
/* 导航栏现代化 */
|
||||
.navbar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 1000;
|
||||
padding: var(--space-4) var(--space-6);
|
||||
background: rgba(10, 14, 26, 0.9);
|
||||
backdrop-filter: blur(20px);
|
||||
border-bottom: var(--border-light);
|
||||
transition: all var(--transition-normal);
|
||||
}
|
||||
|
||||
.navbar.scrolled {
|
||||
background: rgba(10, 14, 26, 0.95);
|
||||
box-shadow: var(--shadow-lg);
|
||||
}
|
||||
|
||||
.nav-content {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-family: 'Space Grotesk', sans-serif;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
background: var(--gradient-primary);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
text-shadow: var(--shadow-glow);
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
gap: var(--space-8);
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
padding: var(--space-2) var(--space-4);
|
||||
border-radius: var(--radius-md);
|
||||
transition: all var(--transition-fast);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
color: var(--chem-primary);
|
||||
background: rgba(6, 182, 212, 0.1);
|
||||
}
|
||||
|
||||
/* 英雄区域现代化 */
|
||||
.hero {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: var(--space-20) var(--space-6);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.hero::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--gradient-tech);
|
||||
opacity: 0.05;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.hero-content-wrapper {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: var(--space-16);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.hero-title-main {
|
||||
font-family: 'Space Grotesk', sans-serif;
|
||||
font-size: clamp(3rem, 6vw, 5rem);
|
||||
font-weight: 900;
|
||||
line-height: 1.1;
|
||||
margin-bottom: var(--space-4);
|
||||
background: var(--gradient-primary);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
animation: fadeInUp 1s ease-out;
|
||||
}
|
||||
|
||||
.hero-title-sub {
|
||||
font-size: clamp(2rem, 4vw, 3rem);
|
||||
font-weight: 300;
|
||||
background: var(--gradient-safety);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
animation: fadeInUp 1s ease-out 0.2s both;
|
||||
}
|
||||
|
||||
.role-text {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.2em;
|
||||
text-transform: uppercase;
|
||||
color: var(--chem-secondary);
|
||||
margin: var(--space-6) 0;
|
||||
opacity: 0;
|
||||
animation: fadeInUp 1s ease-out 0.4s both;
|
||||
}
|
||||
|
||||
.hero-description {
|
||||
font-size: 1.25rem;
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.8;
|
||||
margin: var(--space-6) 0;
|
||||
opacity: 0;
|
||||
animation: fadeInUp 1s ease-out 0.6s both;
|
||||
}
|
||||
|
||||
.info-number {
|
||||
font-size: 3rem;
|
||||
font-weight: 900;
|
||||
background: var(--gradient-primary);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.info-text {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 关于部分现代化 */
|
||||
.about {
|
||||
padding: var(--space-20) var(--space-6);
|
||||
background: var(--bg-secondary);
|
||||
}
|
||||
|
||||
.about-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
grid-template-columns: 300px 1fr;
|
||||
gap: var(--space-16);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.about-image img {
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
object-fit: cover;
|
||||
border-radius: var(--radius-2xl);
|
||||
box-shadow: var(--shadow-xl);
|
||||
border: 3px solid var(--chem-primary);
|
||||
}
|
||||
|
||||
.section-label {
|
||||
color: var(--chem-primary);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
margin-bottom: var(--space-2);
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-family: 'Space Grotesk', sans-serif;
|
||||
font-size: 2.5rem;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: var(--space-6);
|
||||
}
|
||||
|
||||
.personal-info {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: var(--space-4);
|
||||
margin-bottom: var(--space-8);
|
||||
}
|
||||
|
||||
.info-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.info-label {
|
||||
color: var(--text-muted);
|
||||
font-weight: 500;
|
||||
min-width: 60px;
|
||||
}
|
||||
|
||||
.info-value {
|
||||
color: var(--text-primary);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.about-text {
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.8;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: var(--space-8);
|
||||
}
|
||||
|
||||
.about-stats {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-6);
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
text-align: center;
|
||||
padding: var(--space-6);
|
||||
background: rgba(6, 182, 212, 0.1);
|
||||
border-radius: var(--radius-lg);
|
||||
border: var(--border-light);
|
||||
}
|
||||
|
||||
.stat-number {
|
||||
font-size: 2.5rem;
|
||||
font-weight: 900;
|
||||
background: var(--gradient-primary);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.stat-label {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
margin-top: var(--space-2);
|
||||
}
|
||||
|
||||
/* 动画效果 */
|
||||
@keyframes fadeInUp {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(30px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 响应式设计 */
|
||||
@media (max-width: 768px) {
|
||||
.hero-content-wrapper {
|
||||
grid-template-columns: 1fr;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.about-container {
|
||||
grid-template-columns: 1fr;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.personal-info {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* 滚动条美化 */
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--bg-secondary);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--chem-primary);
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--chem-primary-light);
|
||||
}
|
||||
53
个人简历_化工/git_config_backup.txt
Normal file
@@ -0,0 +1,53 @@
|
||||
core.excludesfile=~/.gitignore
|
||||
core.legacyheaders=false
|
||||
core.quotepath=false
|
||||
mergetool.keepbackup=true
|
||||
push.default=simple
|
||||
color.ui=auto
|
||||
color.interactive=auto
|
||||
repack.usedeltabaseoffset=true
|
||||
alias.s=status
|
||||
alias.a=!git add . && git status
|
||||
alias.au=!git add -u . && git status
|
||||
alias.aa=!git add . && git add -u . && git status
|
||||
alias.c=commit
|
||||
alias.cm=commit -m
|
||||
alias.ca=commit --amend
|
||||
alias.ac=!git add . && git commit
|
||||
alias.acm=!git add . && git commit -m
|
||||
alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset'
|
||||
alias.ll=log --stat --abbrev-commit
|
||||
alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
|
||||
alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%+b%C(bold blue)%an <%ae>%Creset %C(bold green)%cr (%ci)' --abbrev-commit
|
||||
alias.d=diff
|
||||
alias.master=checkout master
|
||||
alias.spull=svn rebase
|
||||
alias.spush=svn dcommit
|
||||
alias.alias=!git config --list | grep 'alias\.' | sed 's/alias\.\([^=]*\)=\(.*\)/\1\ => \2/' | sort
|
||||
include.path=~/.gitcinclude
|
||||
include.path=.githubconfig
|
||||
include.path=.gitcredential
|
||||
diff.exif.textconv=exif
|
||||
credential.helper=osxkeychain
|
||||
filter.lfs.clean=git-lfs clean -- %f
|
||||
filter.lfs.smudge=git-lfs smudge -- %f
|
||||
filter.lfs.process=git-lfs filter-process
|
||||
filter.lfs.required=true
|
||||
core.excludesfile=/Users/apple/.gitignore_global
|
||||
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
|
||||
difftool.sourcetree.path=
|
||||
mergetool.sourcetree.cmd=/Users/apple/Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"
|
||||
mergetool.sourcetree.trustexitcode=true
|
||||
core.repositoryformatversion=0
|
||||
core.filemode=true
|
||||
core.bare=false
|
||||
core.logallrefupdates=true
|
||||
core.ignorecase=true
|
||||
core.precomposeunicode=true
|
||||
remote.origin.url=https://github.com/Du9uay/personal_resume_visual-design.git
|
||||
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
|
||||
branch.main.remote=origin
|
||||
branch.main.merge=refs/heads/main
|
||||
branch.gh-pages.vscode-merge-base=origin/main
|
||||
branch.gh-pages.remote=origin
|
||||
branch.gh-pages.merge=refs/heads/gh-pages
|
||||
10
个人简历_化工/git_log_backup.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
cc326ed 更新个人信息(视觉设计部分)
|
||||
9d28962 更新个人简历页面样式和内容
|
||||
1056266 修正图片路径引用
|
||||
26b8750 添加作品集项目图片资源
|
||||
1f9b624 添加GitHub Pages自动部署配置
|
||||
4aa6206 更新关于我部分的姓名信息
|
||||
f5b82ff 更新个人信息和教育背景
|
||||
9423c24 更新页面标题和文本内容
|
||||
12374f7 精简项目结构,优化视觉设计作品集
|
||||
a26eb72 添加GitHub Pages自动部署workflow
|
||||
3191
个人简历_化工/index.html
Normal file
3757
个人简历_化工/index_backup_20250928_220503.html
Normal file
3757
个人简历_化工/index_backup_20251007_004631.html
Normal file
3191
个人简历_化工/index_backup_20251027_112818.html
Normal file
208
个人简历_化工/muted_elegant_theme.css
Normal file
@@ -0,0 +1,208 @@
|
||||
/* 视觉设计师作品集 - 柔和优雅配色主题 */
|
||||
|
||||
:root {
|
||||
/* ===== 柔和的黑灰红色彩系统 ===== */
|
||||
|
||||
/* 黑色系 - 柔和深邃 */
|
||||
--black-pure: #000000;
|
||||
--black-soft: #0D0D0D;
|
||||
--black-warm: #1A1616;
|
||||
--black-medium: #242020;
|
||||
--black-light: #2E2828;
|
||||
|
||||
/* 灰色系 - 温暖中性 */
|
||||
--gray-dark: #3A3535;
|
||||
--gray-medium-dark: #4A4545;
|
||||
--gray-medium: #5A5555;
|
||||
--gray-neutral: #6A6565;
|
||||
--gray-warm: #7A7575;
|
||||
--gray-light: #8A8585;
|
||||
--gray-lighter: #9A9595;
|
||||
--gray-pale: #AAA5A5;
|
||||
--gray-soft: #BAB5B5;
|
||||
--gray-mist: #CAC5C5;
|
||||
--gray-cloud: #DAD5D5;
|
||||
--gray-white: #EAE5E5;
|
||||
|
||||
/* 红色系 - 低饱和度 */
|
||||
--red-deepest: #2A1515; /* 极深酒红 */
|
||||
--red-deeper: #3A2020; /* 深酒红 */
|
||||
--red-deep: #4A2525; /* 暗红褐 */
|
||||
--red-dark: #5A3030; /* 暗红 */
|
||||
--red-muted: #6A3535; /* 柔红 */
|
||||
--red-medium: #7A4040; /* 中红 */
|
||||
--red-soft: #8A4545; /* 软红 */
|
||||
--red-warm: #9A5050; /* 暖红 */
|
||||
--red-light: #AA5555; /* 浅红 */
|
||||
--red-pale: #BA6060; /* 淡红 */
|
||||
|
||||
/* 白色系 */
|
||||
--white-pure: #FFFFFF;
|
||||
--white-soft: #FAF8F8;
|
||||
--white-warm: #F5F0F0;
|
||||
|
||||
/* ===== 柔和光影系统 ===== */
|
||||
|
||||
/* 高光效果 - 更柔和 */
|
||||
--highlight-white-subtle: rgba(255, 255, 255, 0.02);
|
||||
--highlight-white-soft: rgba(255, 255, 255, 0.04);
|
||||
--highlight-white-medium: rgba(255, 255, 255, 0.08);
|
||||
--highlight-white-strong: rgba(255, 255, 255, 0.12);
|
||||
|
||||
--highlight-red-subtle: rgba(122, 64, 64, 0.05);
|
||||
--highlight-red-soft: rgba(122, 64, 64, 0.1);
|
||||
--highlight-red-medium: rgba(122, 64, 64, 0.15);
|
||||
--highlight-red-strong: rgba(122, 64, 64, 0.2);
|
||||
|
||||
--highlight-gray: rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 辉光效果 - 更内敛 */
|
||||
--glow-white: 0 0 15px rgba(255, 255, 255, 0.05),
|
||||
0 0 30px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--glow-red: 0 0 15px rgba(122, 64, 64, 0.2),
|
||||
0 0 30px rgba(122, 64, 64, 0.1),
|
||||
0 0 45px rgba(122, 64, 64, 0.05);
|
||||
|
||||
--glow-gray: 0 0 15px rgba(150, 145, 145, 0.1),
|
||||
0 0 30px rgba(150, 145, 145, 0.05);
|
||||
|
||||
/* 内发光 - 微妙 */
|
||||
--inner-glow-white: inset 0 0 20px rgba(255, 255, 255, 0.03),
|
||||
inset 0 0 40px rgba(255, 255, 255, 0.01);
|
||||
|
||||
--inner-glow-red: inset 0 0 20px rgba(122, 64, 64, 0.08),
|
||||
inset 0 0 40px rgba(122, 64, 64, 0.04);
|
||||
|
||||
/* ===== 阴影系统 - 更柔和 ===== */
|
||||
|
||||
/* 标准阴影 */
|
||||
--shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.2),
|
||||
0 0 1px rgba(255, 255, 255, 0.01) inset;
|
||||
|
||||
--shadow-soft: 0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-medium: 0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02);
|
||||
|
||||
--shadow-strong: 0 8px 16px rgba(0, 0, 0, 0.35),
|
||||
0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 0 1px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--shadow-intense: 0 12px 24px rgba(0, 0, 0, 0.4),
|
||||
0 6px 12px rgba(0, 0, 0, 0.35),
|
||||
0 0 2px rgba(255, 255, 255, 0.04);
|
||||
|
||||
/* 彩色阴影 - 低饱和 */
|
||||
--shadow-red-soft: 0 2px 8px rgba(122, 64, 64, 0.15),
|
||||
0 1px 4px rgba(122, 64, 64, 0.1);
|
||||
|
||||
--shadow-red-medium: 0 4px 16px rgba(122, 64, 64, 0.2),
|
||||
0 2px 8px rgba(122, 64, 64, 0.15);
|
||||
|
||||
--shadow-gray: 0 2px 8px rgba(150, 145, 145, 0.15),
|
||||
0 1px 4px rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 浮动阴影 */
|
||||
--shadow-float: 0 10px 30px rgba(0, 0, 0, 0.3),
|
||||
0 5px 15px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02) inset;
|
||||
|
||||
/* 凹陷阴影 */
|
||||
--shadow-inset-soft: inset 0 1px 2px rgba(0, 0, 0, 0.3),
|
||||
inset 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-inset-deep: inset 0 2px 4px rgba(0, 0, 0, 0.4),
|
||||
inset 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
/* 文字阴影 */
|
||||
--text-shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
--text-shadow-glow: 0 0 5px rgba(122, 64, 64, 0.3),
|
||||
0 0 10px rgba(122, 64, 64, 0.1);
|
||||
|
||||
/* ===== 渐变系统 - 低饱和度 ===== */
|
||||
|
||||
/* 黑灰渐变 */
|
||||
--gradient-black-gray: linear-gradient(135deg, #0D0D0D 0%, #3A3535 100%);
|
||||
--gradient-gray: linear-gradient(135deg, #3A3535 0%, #6A6565 100%);
|
||||
--gradient-gray-soft: linear-gradient(135deg, #5A5555 0%, #9A9595 100%);
|
||||
|
||||
/* 红色渐变 - 柔和 */
|
||||
--gradient-red: linear-gradient(135deg, #3A2020 0%, #7A4040 50%, #8A4545 100%);
|
||||
--gradient-red-dark: linear-gradient(135deg, #2A1515 0%, #4A2525 100%);
|
||||
--gradient-red-soft: linear-gradient(135deg, #6A3535 0%, #9A5050 100%);
|
||||
|
||||
/* 混合渐变 */
|
||||
--gradient-black-red: linear-gradient(135deg, #0D0D0D 0%, #3A2020 50%, #5A3030 100%);
|
||||
--gradient-gray-red: linear-gradient(135deg, #3A3535 0%, #5A5555 50%, #7A4040 100%);
|
||||
--gradient-tricolor: linear-gradient(135deg, #0D0D0D 0%, #4A4545 33%, #6A3535 66%, #2E2828 100%);
|
||||
|
||||
/* 径向渐变 */
|
||||
--gradient-radial-red: radial-gradient(circle, rgba(122, 64, 64, 0.1) 0%, transparent 70%);
|
||||
--gradient-radial-gray: radial-gradient(circle, rgba(150, 145, 145, 0.15) 0%, transparent 70%);
|
||||
--gradient-radial-mixed: radial-gradient(circle at 30% 50%, rgba(122, 64, 64, 0.08) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 50%, rgba(150, 145, 145, 0.1) 0%, transparent 50%);
|
||||
|
||||
/* 网格渐变 */
|
||||
--gradient-mesh: radial-gradient(at 20% 30%, rgba(122, 64, 64, 0.06) 0%, transparent 40%),
|
||||
radial-gradient(at 60% 70%, rgba(150, 145, 145, 0.08) 0%, transparent 40%),
|
||||
radial-gradient(at 80% 20%, rgba(255, 255, 255, 0.02) 0%, transparent 40%),
|
||||
radial-gradient(at 40% 80%, rgba(122, 64, 64, 0.04) 0%, transparent 40%);
|
||||
|
||||
/* ===== 材质效果 ===== */
|
||||
|
||||
/* 玻璃效果 */
|
||||
--glass-dark: rgba(13, 13, 13, 0.7);
|
||||
--glass-gray: rgba(58, 53, 53, 0.5);
|
||||
--glass-red: rgba(122, 64, 64, 0.08);
|
||||
--glass-blur: blur(16px);
|
||||
--glass-blur-strong: blur(32px);
|
||||
|
||||
/* 噪点纹理 */
|
||||
--noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.02'/%3E%3C/svg%3E");
|
||||
|
||||
/* 扫光效果 */
|
||||
--shine: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, 0.05) 50%, transparent 60%);
|
||||
--shine-red: linear-gradient(105deg, transparent 40%, rgba(122, 64, 64, 0.1) 50%, transparent 60%);
|
||||
|
||||
/* ===== 动画时长 ===== */
|
||||
--duration-instant: 100ms;
|
||||
--duration-fast: 200ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-medium: 400ms;
|
||||
--duration-slow: 600ms;
|
||||
--duration-slower: 800ms;
|
||||
--duration-slowest: 1200ms;
|
||||
|
||||
/* ===== 动画缓动 ===== */
|
||||
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
|
||||
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
--ease-bounce: cubic-bezier(0.87, -0.41, 0.19, 1.44);
|
||||
|
||||
/* ===== 字体系统 ===== */
|
||||
--font-sans: -apple-system, BlinkMacSystemFont, 'Inter', 'SF Pro Display', sans-serif;
|
||||
--font-mono: 'SF Mono', 'JetBrains Mono', monospace;
|
||||
--font-display: 'SF Pro Display', -apple-system, sans-serif;
|
||||
|
||||
/* ===== 间距系统 ===== */
|
||||
--space-0: 0;
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
--space-24: 6rem;
|
||||
--space-32: 8rem;
|
||||
--space-40: 10rem;
|
||||
--space-48: 12rem;
|
||||
}
|
||||
208
个人简历_化工/muted_elegant_theme_backup_20250928_220503.css
Normal file
@@ -0,0 +1,208 @@
|
||||
/* 视觉设计师作品集 - 柔和优雅配色主题 */
|
||||
|
||||
:root {
|
||||
/* ===== 柔和的黑灰红色彩系统 ===== */
|
||||
|
||||
/* 黑色系 - 柔和深邃 */
|
||||
--black-pure: #000000;
|
||||
--black-soft: #0D0D0D;
|
||||
--black-warm: #1A1616;
|
||||
--black-medium: #242020;
|
||||
--black-light: #2E2828;
|
||||
|
||||
/* 灰色系 - 温暖中性 */
|
||||
--gray-dark: #3A3535;
|
||||
--gray-medium-dark: #4A4545;
|
||||
--gray-medium: #5A5555;
|
||||
--gray-neutral: #6A6565;
|
||||
--gray-warm: #7A7575;
|
||||
--gray-light: #8A8585;
|
||||
--gray-lighter: #9A9595;
|
||||
--gray-pale: #AAA5A5;
|
||||
--gray-soft: #BAB5B5;
|
||||
--gray-mist: #CAC5C5;
|
||||
--gray-cloud: #DAD5D5;
|
||||
--gray-white: #EAE5E5;
|
||||
|
||||
/* 红色系 - 低饱和度 */
|
||||
--red-deepest: #2A1515; /* 极深酒红 */
|
||||
--red-deeper: #3A2020; /* 深酒红 */
|
||||
--red-deep: #4A2525; /* 暗红褐 */
|
||||
--red-dark: #5A3030; /* 暗红 */
|
||||
--red-muted: #6A3535; /* 柔红 */
|
||||
--red-medium: #7A4040; /* 中红 */
|
||||
--red-soft: #8A4545; /* 软红 */
|
||||
--red-warm: #9A5050; /* 暖红 */
|
||||
--red-light: #AA5555; /* 浅红 */
|
||||
--red-pale: #BA6060; /* 淡红 */
|
||||
|
||||
/* 白色系 */
|
||||
--white-pure: #FFFFFF;
|
||||
--white-soft: #FAF8F8;
|
||||
--white-warm: #F5F0F0;
|
||||
|
||||
/* ===== 柔和光影系统 ===== */
|
||||
|
||||
/* 高光效果 - 更柔和 */
|
||||
--highlight-white-subtle: rgba(255, 255, 255, 0.02);
|
||||
--highlight-white-soft: rgba(255, 255, 255, 0.04);
|
||||
--highlight-white-medium: rgba(255, 255, 255, 0.08);
|
||||
--highlight-white-strong: rgba(255, 255, 255, 0.12);
|
||||
|
||||
--highlight-red-subtle: rgba(122, 64, 64, 0.05);
|
||||
--highlight-red-soft: rgba(122, 64, 64, 0.1);
|
||||
--highlight-red-medium: rgba(122, 64, 64, 0.15);
|
||||
--highlight-red-strong: rgba(122, 64, 64, 0.2);
|
||||
|
||||
--highlight-gray: rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 辉光效果 - 更内敛 */
|
||||
--glow-white: 0 0 15px rgba(255, 255, 255, 0.05),
|
||||
0 0 30px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--glow-red: 0 0 15px rgba(122, 64, 64, 0.2),
|
||||
0 0 30px rgba(122, 64, 64, 0.1),
|
||||
0 0 45px rgba(122, 64, 64, 0.05);
|
||||
|
||||
--glow-gray: 0 0 15px rgba(150, 145, 145, 0.1),
|
||||
0 0 30px rgba(150, 145, 145, 0.05);
|
||||
|
||||
/* 内发光 - 微妙 */
|
||||
--inner-glow-white: inset 0 0 20px rgba(255, 255, 255, 0.03),
|
||||
inset 0 0 40px rgba(255, 255, 255, 0.01);
|
||||
|
||||
--inner-glow-red: inset 0 0 20px rgba(122, 64, 64, 0.08),
|
||||
inset 0 0 40px rgba(122, 64, 64, 0.04);
|
||||
|
||||
/* ===== 阴影系统 - 更柔和 ===== */
|
||||
|
||||
/* 标准阴影 */
|
||||
--shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.2),
|
||||
0 0 1px rgba(255, 255, 255, 0.01) inset;
|
||||
|
||||
--shadow-soft: 0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-medium: 0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 2px 4px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02);
|
||||
|
||||
--shadow-strong: 0 8px 16px rgba(0, 0, 0, 0.35),
|
||||
0 4px 8px rgba(0, 0, 0, 0.3),
|
||||
0 0 1px rgba(255, 255, 255, 0.03);
|
||||
|
||||
--shadow-intense: 0 12px 24px rgba(0, 0, 0, 0.4),
|
||||
0 6px 12px rgba(0, 0, 0, 0.35),
|
||||
0 0 2px rgba(255, 255, 255, 0.04);
|
||||
|
||||
/* 彩色阴影 - 低饱和 */
|
||||
--shadow-red-soft: 0 2px 8px rgba(122, 64, 64, 0.15),
|
||||
0 1px 4px rgba(122, 64, 64, 0.1);
|
||||
|
||||
--shadow-red-medium: 0 4px 16px rgba(122, 64, 64, 0.2),
|
||||
0 2px 8px rgba(122, 64, 64, 0.15);
|
||||
|
||||
--shadow-gray: 0 2px 8px rgba(150, 145, 145, 0.15),
|
||||
0 1px 4px rgba(150, 145, 145, 0.1);
|
||||
|
||||
/* 浮动阴影 */
|
||||
--shadow-float: 0 10px 30px rgba(0, 0, 0, 0.3),
|
||||
0 5px 15px rgba(0, 0, 0, 0.25),
|
||||
0 0 1px rgba(255, 255, 255, 0.02) inset;
|
||||
|
||||
/* 凹陷阴影 */
|
||||
--shadow-inset-soft: inset 0 1px 2px rgba(0, 0, 0, 0.3),
|
||||
inset 0 0 1px rgba(0, 0, 0, 0.2);
|
||||
|
||||
--shadow-inset-deep: inset 0 2px 4px rgba(0, 0, 0, 0.4),
|
||||
inset 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
/* 文字阴影 */
|
||||
--text-shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
--text-shadow-glow: 0 0 5px rgba(122, 64, 64, 0.3),
|
||||
0 0 10px rgba(122, 64, 64, 0.1);
|
||||
|
||||
/* ===== 渐变系统 - 低饱和度 ===== */
|
||||
|
||||
/* 黑灰渐变 */
|
||||
--gradient-black-gray: linear-gradient(135deg, #0D0D0D 0%, #3A3535 100%);
|
||||
--gradient-gray: linear-gradient(135deg, #3A3535 0%, #6A6565 100%);
|
||||
--gradient-gray-soft: linear-gradient(135deg, #5A5555 0%, #9A9595 100%);
|
||||
|
||||
/* 红色渐变 - 柔和 */
|
||||
--gradient-red: linear-gradient(135deg, #3A2020 0%, #7A4040 50%, #8A4545 100%);
|
||||
--gradient-red-dark: linear-gradient(135deg, #2A1515 0%, #4A2525 100%);
|
||||
--gradient-red-soft: linear-gradient(135deg, #6A3535 0%, #9A5050 100%);
|
||||
|
||||
/* 混合渐变 */
|
||||
--gradient-black-red: linear-gradient(135deg, #0D0D0D 0%, #3A2020 50%, #5A3030 100%);
|
||||
--gradient-gray-red: linear-gradient(135deg, #3A3535 0%, #5A5555 50%, #7A4040 100%);
|
||||
--gradient-tricolor: linear-gradient(135deg, #0D0D0D 0%, #4A4545 33%, #6A3535 66%, #2E2828 100%);
|
||||
|
||||
/* 径向渐变 */
|
||||
--gradient-radial-red: radial-gradient(circle, rgba(122, 64, 64, 0.1) 0%, transparent 70%);
|
||||
--gradient-radial-gray: radial-gradient(circle, rgba(150, 145, 145, 0.15) 0%, transparent 70%);
|
||||
--gradient-radial-mixed: radial-gradient(circle at 30% 50%, rgba(122, 64, 64, 0.08) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 50%, rgba(150, 145, 145, 0.1) 0%, transparent 50%);
|
||||
|
||||
/* 网格渐变 */
|
||||
--gradient-mesh: radial-gradient(at 20% 30%, rgba(122, 64, 64, 0.06) 0%, transparent 40%),
|
||||
radial-gradient(at 60% 70%, rgba(150, 145, 145, 0.08) 0%, transparent 40%),
|
||||
radial-gradient(at 80% 20%, rgba(255, 255, 255, 0.02) 0%, transparent 40%),
|
||||
radial-gradient(at 40% 80%, rgba(122, 64, 64, 0.04) 0%, transparent 40%);
|
||||
|
||||
/* ===== 材质效果 ===== */
|
||||
|
||||
/* 玻璃效果 */
|
||||
--glass-dark: rgba(13, 13, 13, 0.7);
|
||||
--glass-gray: rgba(58, 53, 53, 0.5);
|
||||
--glass-red: rgba(122, 64, 64, 0.08);
|
||||
--glass-blur: blur(16px);
|
||||
--glass-blur-strong: blur(32px);
|
||||
|
||||
/* 噪点纹理 */
|
||||
--noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.02'/%3E%3C/svg%3E");
|
||||
|
||||
/* 扫光效果 */
|
||||
--shine: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, 0.05) 50%, transparent 60%);
|
||||
--shine-red: linear-gradient(105deg, transparent 40%, rgba(122, 64, 64, 0.1) 50%, transparent 60%);
|
||||
|
||||
/* ===== 动画时长 ===== */
|
||||
--duration-instant: 100ms;
|
||||
--duration-fast: 200ms;
|
||||
--duration-normal: 300ms;
|
||||
--duration-medium: 400ms;
|
||||
--duration-slow: 600ms;
|
||||
--duration-slower: 800ms;
|
||||
--duration-slowest: 1200ms;
|
||||
|
||||
/* ===== 动画缓动 ===== */
|
||||
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
|
||||
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
--ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
||||
--ease-bounce: cubic-bezier(0.87, -0.41, 0.19, 1.44);
|
||||
|
||||
/* ===== 字体系统 ===== */
|
||||
--font-sans: -apple-system, BlinkMacSystemFont, 'Inter', 'SF Pro Display', sans-serif;
|
||||
--font-mono: 'SF Mono', 'JetBrains Mono', monospace;
|
||||
--font-display: 'SF Pro Display', -apple-system, sans-serif;
|
||||
|
||||
/* ===== 间距系统 ===== */
|
||||
--space-0: 0;
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
--space-6: 1.5rem;
|
||||
--space-8: 2rem;
|
||||
--space-10: 2.5rem;
|
||||
--space-12: 3rem;
|
||||
--space-16: 4rem;
|
||||
--space-20: 5rem;
|
||||
--space-24: 6rem;
|
||||
--space-32: 8rem;
|
||||
--space-40: 10rem;
|
||||
--space-48: 12rem;
|
||||
}
|
||||
BIN
个人简历_化工/public/化工安全生产隐患排查项目/化工安全生产隐患排查项目.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程一:隐患排查计划制定.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程三:环境安全条件检测.jpg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程二:设备设施检查.jpg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程五:物料储存管理.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程六:应急预案编制与演练.jpg
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
个人简历_化工/public/化工安全生产隐患排查项目/流程四:作业行为规范检查.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 71 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程一:编制应急预案组织体系.jpg
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程三:构建综合应急组织架构.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程二:建立应急响应分级机制.jpg
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程五:实施专项与现场应急处置预案.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程六:应急演练与培训管理.jpg
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
个人简历_化工/public/某化工企业生产安全事故应急预案编制与实施项目/流程四:制定应急物资与装备管理.jpg
Normal file
|
After Width: | Height: | Size: 405 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/某化工厂炼化装置日常调试与运维项目-总图.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程一:设备开机前检查.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程七:后期巡检记录.jpg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程三:设备空载试运转.jpg
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程二:信号与接口调试.jpg
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程五:异常信号排查.jpg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程六:现场维护操作.jpg
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
个人简历_化工/public/某化工厂炼化装置日常调试与运维项目/流程四:带负荷运行监控.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/某化工厂预聚法制取聚氨酯项目-总图.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/流程一:原料选择.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/流程七:安全控制与环保措施.jpg
Normal file
|
After Width: | Height: | Size: 452 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/流程三:扩链反应.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/流程二:预聚物制备.jpg
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
个人简历_化工/public/某化工厂预聚法制取聚氨酯项目/流程五:成型与固化.jpg
Normal file
|
After Width: | Height: | Size: 6.0 KiB |