Files
pangolin/design/flutter/widgets/pangolin_icons.dart
T
wangjia a642bf16a2 feat: 同步 design/ 设计系统(含 iPad tablet kit) + 架构任务拆分(todo/)
design/ 同步自最新设计导出,新增 ui_kits/tablet/ 平板分栏布局;todo/ 录入 18 个并行实施任务。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 23:57:57 +08:00

86 lines
5.0 KiB
Dart

// pangolin_icons.dart — Lucide 图标映射表
//
// React UI Kit 用 Lucide 图标(按名引用,如 'power' / 'shield-check')。
// 本文件把这些名映射到 Flutter 的 lucide_icons 包常量,保证与设计像素一致。
//
// 依赖:在 pubspec.yaml 添加
// dependencies:
// lucide_icons: ^0.x # https://pub.dev/packages/lucide_icons
//
// 用法 A(直用常量,推荐):
// Icon(PangolinIcons.power, size: 20, color: c.accent)
// 用法 B(按 Lucide 名查表,便于从 React data-lucide 移植):
// Icon(PangolinIcons.byName('shield-check'))
//
// ⚠️ lucide_icons 各版本常量名可能略有差异;若某常量在你的版本里不存在,
// 按 IDE 提示替换为最接近的名称即可(已在右侧注明 Lucide 原名)。
import 'package:flutter/widgets.dart';
import 'package:lucide_icons/lucide_icons.dart';
class PangolinIcons {
PangolinIcons._();
// ── 连接 / 状态 ──
static const power = LucideIcons.power; // power — 连接键
static const shieldCheck = LucideIcons.shieldCheck; // shield-check — 已加密
static const shield = LucideIcons.shield; // shield — Kill Switch
static const loader = LucideIcons.loader; // loader-circle — 连接中(旋转)
static const zap = LucideIcons.zap; // zap — 延迟 / 极速
static const globe = LucideIcons.globe; // globe — 节点
// ── 导航 / 操作 ──
static const settings = LucideIcons.settings; // settings
static const user = LucideIcons.user; // user — 账户
static const search = LucideIcons.search; // search
static const check = LucideIcons.check; // check — 选中
static const checkCircle = LucideIcons.checkCircle; // check-circle — 成功
static const x = LucideIcons.x; // x — 关闭
static const chevronRight = LucideIcons.chevronRight; // chevron-right
static const chevronDown = LucideIcons.chevronDown; // chevron-down
static const arrowLeft = LucideIcons.arrowLeft; // arrow-left — 返回
static const arrowUp = LucideIcons.arrowUp; // arrow-up — 上传
static const arrowDown = LucideIcons.arrowDown; // arrow-down — 下载
static const refreshCw = LucideIcons.refreshCw; // refresh-cw — 检查更新
static const compass = LucideIcons.compass; // compass — 引导
static const barChart = LucideIcons.barChart; // chart-no-axes-column / chart — 统计
static const mapPin = LucideIcons.mapPin; // map-pin
// ── 主题 ──
static const moon = LucideIcons.moon; // moon — 深色
static const sun = LucideIcons.sun; // sun — 浅色
// ── 账户 / 套餐 / 兑换 ──
static const crown = LucideIcons.crown; // crown — PRO
static const ticket = LucideIcons.ticket; // ticket — 兑换 / 续费
static const creditCard = LucideIcons.creditCard; // credit-card
static const shoppingBag = LucideIcons.shoppingBag; // shopping-bag — 发卡商店
static const mail = LucideIcons.mail; // mail — 邮箱
static const lock = LucideIcons.lock; // lock — 密码
static const logOut = LucideIcons.logOut; // log-out — 退出
static const send = LucideIcons.send; // send — Telegram
static const messageCircle= LucideIcons.messageCircle; // message-circle — LINE / 联系
static const externalLink = LucideIcons.externalLink; // external-link — 外链
// ── 设备 ──
static const laptop = LucideIcons.laptop; // laptop
static const smartphone = LucideIcons.smartphone; // smartphone
// monitor-smartphone 在部分版本缺失,回退到 smartphone(平板亦可用 LucideIcons.tablet)
static const monitorSmartphone = LucideIcons.smartphone; // monitor-smartphone(回退)
/// 按 Lucide 原名查表(React data-lucide 名 → IconData)。未命中返回 null。
static IconData? byName(String name) => _byName[name];
static const Map<String, IconData> _byName = {
'power': power, 'shield-check': shieldCheck, 'shield': shield, 'loader-circle': loader,
'zap': zap, 'globe': globe, 'settings': settings, 'user': user, 'search': search,
'check': check, 'check-circle': checkCircle, 'x': x, 'chevron-right': chevronRight,
'chevron-down': chevronDown, 'arrow-left': arrowLeft, 'arrow-up': arrowUp, 'arrow-down': arrowDown,
'refresh-cw': refreshCw, 'compass': compass, 'chart-no-axes-column': barChart, 'chart': barChart,
'map-pin': mapPin, 'moon': moon, 'sun': sun, 'crown': crown, 'ticket': ticket,
'credit-card': creditCard, 'shopping-bag': shoppingBag, 'mail': mail, 'lock': lock,
'log-out': logOut, 'send': send, 'message-circle': messageCircle, 'external-link': externalLink,
'laptop': laptop, 'smartphone': smartphone, 'monitor-smartphone': monitorSmartphone,
};
}