Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions openless-all/app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions openless-all/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@
"check:hotkey-injection": "node scripts/check-hotkey-injection.mjs"
},
"dependencies": {
"@formkit/auto-animate": "^0.9.0",
"@tauri-apps/api": "^2.1.1",
"@tauri-apps/plugin-autostart": "^2.5.1",
"@tauri-apps/plugin-dialog": "^2.7.1",
"@tauri-apps/plugin-shell": "^2.0.1",
"@tauri-apps/plugin-updater": "^2.10.1",
"framer-motion": "^12.39.0",
"i18next": "^26.0.8",
"marked": "^11.2.0",
"react": "^18.3.1",
Expand Down
105 changes: 49 additions & 56 deletions openless-all/app/src/components/Icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,61 +4,54 @@
import type { CSSProperties } from 'react';

export const ICONS: Record<string, string> = {
// overview — 仪表盘三卡 + 顶卡内 sparkline 数据线,区分纯三块拼图(layout)
overview: 'M4 5h16v5H4zM4 13h7v6H4zM13 13h7v6h-7zM6 7.8l2 1 2-1.5 2 1',
// history — 时钟表盘 + 左上角逆时针回拨箭头,强调"过去/回看"
history: 'M12 8v4l3 2M3.5 12a8.5 8.5 0 1 0 2.8-6.3L3 8M3 4v4h4',
// vocab — Feather 风格 open-book(书脊居中 + 左右两页),相比旧的"带书签的合上书"在 14px 下更易辨识
vocab: 'M12 7v14M12 7a3 3 0 0 0-3-3H4v14h5a3 3 0 0 1 3 3M12 7a3 3 0 0 1 3-3h5v14h-5a3 3 0 0 0-3 3',
style: 'M12 3a9 9 0 1 0 0 18 3 3 0 0 0 3-3v-1a2 2 0 0 1 2-2h1a3 3 0 0 0 3-3 9 9 0 0 0-9-9z',
// translate — 地球仪(圆 + 赤道 + 经线椭圆),通用的"语言/国际化"符号,比旧版"A+文+三角"在 14px 下更清晰
translate:'M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zM3 12h18M12 3c2.5 2.5 4 5.5 4 9s-1.5 6.5-4 9c-2.5-2.5-4-5.5-4-9s1.5-6.5 4-9',
// selectionAsk — 三行文本 + 右下角对话气泡(尾巴拉到 y≈23 防 viewBox 24 底边 stroke-cap 裁切)
selectionAsk:'M3 5h12M3 9h12M3 13h7M14 14h6a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3.5l-2.5 2v-2a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2z',
settings:'M12 9.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1A2 2 0 1 1 7 4.9l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z',
help: 'M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3M12 17h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',
mic: 'M12 2a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3zM19 11a7 7 0 0 1-14 0M12 18v3M8 21h8',
search: 'M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14zM21 21l-4.5-4.5',
plus: 'M12 5v14M5 12h14',
check: 'M5 12l4 4 10-10',
x: 'M6 6l12 12M6 18L18 6',
copy: 'M9 9h10v10H9zM5 15V5h10',
eye: 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12zM12 9.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5z',
trash: 'M4 7h16M9 7V4h6v3M6 7v13a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7M10 11v7M14 11v7',
refresh: 'M4 4v6h6M20 20v-6h-6M4 10a8 8 0 0 1 14-3l2 3M20 14a8 8 0 0 1-14 3l-2-3',
sparkle: 'M12 3v3M12 18v3M5 12H2M22 12h-3M6 6l-2-2M20 20l-2-2M6 18l-2 2M20 4l-2 2M12 8a4 4 0 0 0 4 4 4 4 0 0 0-4 4 4 4 0 0 0-4-4 4 4 0 0 0 4-4z',
bolt: 'M13 2L4 14h7l-1 8 9-12h-7l1-8z',
clock: 'M12 7v5l3 2M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',
hash: 'M5 9h14M5 15h14M10 3l-2 18M16 3l-2 18',
chevDown:'M6 9l6 6 6-6',
chevRight:'M9 6l6 6-6 6',
chevLeft:'M15 6l-6 6 6 6',
chevLR: 'M8 5l-3 7 3 7M16 5l3 7-3 7',
collapse:'M9 4h11v16H9M14 9l-3 3 3 3M4 4v16',
expand: 'M4 4h16v16H4zM10 9l-3 3 3 3M14 9l3 3-3 3',
layout: 'M3 4h18v6H3zM3 14h7v6H3zM14 14h7v6h-7z',
cmd: 'M9 6a3 3 0 1 0 0 6h6a3 3 0 1 0 0-6 3 3 0 0 0-3 3v6a3 3 0 1 0 3-3H9a3 3 0 1 0 3 3z',
option: 'M5 6h4l5 12h5M14 6h5',
esc: 'M3 7h18v10H3zM7 10l3 4M7 14l3-4M14 10v4M14 14h3M14 10h3M14 12h3',
enter: 'M21 7v4a3 3 0 0 1-3 3H5M9 18l-4-4 4-4',
inserted:'M5 12l4 4 10-10',
cloud: 'M7 18h11a4 4 0 0 0 .5-8A6 6 0 0 0 7 11a4 4 0 0 0 0 7z',
mac: 'M16 4a4 4 0 0 0-4 4 4 4 0 0 0-4-4C5 4 3 7 3 11s2 9 5 9c1.5 0 2-1 4-1s2.5 1 4 1c3 0 5-5 5-9s-2-7-5-7zM13 4c0-1 1-2 2-2',
win: 'M3 5l8-1v8H3zM12 4l9-1v9h-9zM3 13h8v8l-8-1zM12 13h9v8l-9-1z',
doc: 'M6 3h8l5 5v13H6zM14 3v5h5',
link: 'M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 1 0-5.7-5.7L11 7M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 1 0 5.7 5.7L13 17',
filter: 'M3 5h18l-7 9v6l-4-2v-4z',
archive: 'M3 4h18v4H3zM5 8v12h14V8M9 12h6',
tag: 'M3 11V3h8l10 10-8 8L3 11zM7 7h.01',
user: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4 21a8 8 0 0 1 16 0',
mail: 'M3 6h18v12H3zM3 6l9 7 9-7',
info: 'M12 8h.01M11 12h1v4h1M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',
external:'M9 5h10v10M19 5L9 15M5 9v10h10',
close: 'M6 6l12 12M6 18L18 6',
// play — 右指三角箭头,标识"播放录音"按钮(History 详情)
play: 'M8 5v14l11-7z',
// download — 向下箭头 + 底托,标识"导出录音"按钮(History 详情)
download:'M12 3v12M7 12l5 5 5-5M5 21h14',
overview: 'M3 3v18h18M18 17V9M13 17V5M8 17v-3', // Simplified bar chart
history: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z', // Clock
vocab: 'M4 19.5A2.5 2.5 0 0 1 6.5 17H20M4 19.5A2.5 2.5 0 0 0 6.5 22H20V4H6.5A2.5 2.5 0 0 0 4 6.5v13Z', // Book
style: 'M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6', // Type / Font
translate: 'M12 2a10 10 0 1 0 0 20 10 10 0 1 0 0-20zM2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z', // Globe
selectionAsk: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z', // Message square
settings: 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z', // Settings gear
help: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z', // Help circle
mic: 'M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3zM19 10v2a7 7 0 0 1-14 0v-2M12 19v4M8 23h8', // Mic
search: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.35-4.35', // Search
plus: 'M12 5v14M5 12h14', // Plus
check: 'M20 6L9 17l-5-5', // Check
x: 'M18 6L6 18M6 6l12 12', // X
copy: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2M15 2H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z', // Clipboard
eye: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z', // Eye
trash: 'M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6', // Trash
refresh: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5', // Refresh ccw
sparkle: 'M12 3L14.5 9.5 21 12 14.5 14.5 12 21 9.5 14.5 3 12 9.5 9.5 12 3Z', // Sparkle
bolt: 'M13 2L3 14h9l-1 8 10-12h-9l1-8z', // Zap
clock: 'M12 8v4l3 3M12 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20z', // Clock standard
hash: 'M4 9h16M4 15h16M10 3L8 21M16 3l-2 18', // Hash
chevDown: 'M6 9l6 6 6-6', // Chevron down
chevRight: 'M9 18l6-6-6-6', // Chevron right
chevLeft: 'M15 18l-6-6 6-6', // Chevron left
chevLR: 'M8 5L5 12l3 7M16 5l3 7-3 7', // Code
collapse: 'M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7', // Shrink
expand: 'M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7', // Expand
layout: 'M3 3h18v18H3zM3 9h18M9 21V9', // Layout (Sidebar)
cmd: 'M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z', // Command
option: 'M3 3h6l6 18h6M14 3h7', // Option
esc: 'M10 6l-6 6 6 6M4 12h16', // Move left (escape substitute)
enter: 'M9 10L4 15l5 5M20 4v7a4 4 0 0 1-4 4H4', // Corner down left
inserted: 'M20 6L9 17l-5-5', // Check
cloud: 'M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9z', // Cloud
mac: 'M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6zm8 14v2m-4 0h8', // Monitor
win: 'M4 14.5V20l16-2v-3.5H4zm16-4V2l-16 2v4.5h16z', // Windows logo proxy (Squares)
doc: 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6', // File
link: 'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71', // Link
filter: 'M22 3H2l8 9.46V19l4 2v-8.54L22 3z', // Filter
archive: 'M21 8v13H3V8M1 3h22v5H1zM10 12h4', // Archive
tag: 'M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82zM7 7h.01', // Tag
user: 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z', // User
mail: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zM22 6l-10 7L2 6', // Mail
info: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 16v-4M12 8h.01', // Info
external: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3', // External link
close: 'M18 6L6 18M6 6l12 12', // Close / X
play: 'M5 3l14 9-14 9V3z', // Play
download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3', // Download
};

export interface IconProps {
Expand All @@ -75,7 +68,7 @@ export function Icon({
name,
size = 16,
stroke = 'currentColor',
strokeWidth = 1.5,
strokeWidth = 1.8,
fill = 'none',
style,
className,
Expand Down
Loading
Loading