export const themeIcons = { lucide: { arrowDown: 'i-lucide-arrow-down', arrowLeft: 'i-lucide-arrow-left', arrowRight: 'i-lucide-arrow-right', arrowUp: 'i-lucide-arrow-up', caution: 'i-lucide-circle-alert', check: 'i-lucide-check', chevronDoubleLeft: 'i-lucide-chevrons-left', chevronDoubleRight: 'i-lucide-chevrons-right', chevronDown: 'i-lucide-chevron-down', chevronLeft: 'i-lucide-chevron-left', chevronRight: 'i-lucide-chevron-right', chevronUp: 'i-lucide-chevron-up', close: 'i-lucide-x', copy: 'i-lucide-copy', copyCheck: 'i-lucide-copy-check', dark: 'i-lucide-moon', drag: 'i-lucide-grip-vertical', ellipsis: 'i-lucide-ellipsis', error: 'i-lucide-circle-x', external: 'i-lucide-arrow-up-right', eye: 'i-lucide-eye', eyeOff: 'i-lucide-eye-off', file: 'i-lucide-file', folder: 'i-lucide-folder', folderOpen: 'i-lucide-folder-open', hash: 'i-lucide-hash', info: 'i-lucide-info', light: 'i-lucide-sun', loading: 'i-lucide-loader-circle', menu: 'i-lucide-menu', minus: 'i-lucide-minus', panelClose: 'i-lucide-panel-left-close', panelOpen: 'i-lucide-panel-left-open', plus: 'i-lucide-plus', reload: 'i-lucide-rotate-ccw', search: 'i-lucide-search', stop: 'i-lucide-square', star: 'i-lucide-star', success: 'i-lucide-circle-check', system: 'i-lucide-monitor', tip: 'i-lucide-lightbulb', upload: 'i-lucide-upload', warning: 'i-lucide-triangle-alert' }, phosphor: { arrowDown: 'i-ph-arrow-down', arrowLeft: 'i-ph-arrow-left', arrowRight: 'i-ph-arrow-right', arrowUp: 'i-ph-arrow-up', caution: 'i-ph-warning-circle', check: 'i-ph-check', chevronDoubleLeft: 'i-ph-caret-double-left', chevronDoubleRight: 'i-ph-caret-double-right', chevronDown: 'i-ph-caret-down', chevronLeft: 'i-ph-caret-left', chevronRight: 'i-ph-caret-right', chevronUp: 'i-ph-caret-up', close: 'i-ph-x', copy: 'i-ph-copy', copyCheck: 'i-ph-check-circle', dark: 'i-ph-moon', drag: 'i-ph-dots-six-vertical', ellipsis: 'i-ph-dots-three', error: 'i-ph-x-circle', external: 'i-ph-arrow-up-right', eye: 'i-ph-eye', eyeOff: 'i-ph-eye-slash', file: 'i-ph-file', folder: 'i-ph-folder', folderOpen: 'i-ph-folder-open', hash: 'i-ph-hash', info: 'i-ph-info', light: 'i-ph-sun', loading: 'i-ph-circle-notch', menu: 'i-ph-list', minus: 'i-ph-minus', panelClose: 'i-ph-caret-left', panelOpen: 'i-ph-caret-right', plus: 'i-ph-plus', reload: 'i-ph-arrow-counter-clockwise', search: 'i-ph-magnifying-glass', stop: 'i-ph-square', star: 'i-ph-star', success: 'i-ph-check-circle', system: 'i-ph-monitor', tip: 'i-ph-lightbulb', upload: 'i-ph-upload', warning: 'i-ph-warning' }, tabler: { arrowDown: 'i-tabler-arrow-down', arrowLeft: 'i-tabler-arrow-left', arrowRight: 'i-tabler-arrow-right', arrowUp: 'i-tabler-arrow-up', caution: 'i-tabler-alert-square-rounded', check: 'i-tabler-check', chevronDoubleLeft: 'i-tabler-chevrons-left', chevronDoubleRight: 'i-tabler-chevrons-right', chevronDown: 'i-tabler-chevron-down', chevronLeft: 'i-tabler-chevron-left', chevronRight: 'i-tabler-chevron-right', chevronUp: 'i-tabler-chevron-up', close: 'i-tabler-x', copy: 'i-tabler-copy', copyCheck: 'i-tabler-copy-check', dark: 'i-tabler-moon', drag: 'i-tabler-grip-vertical', ellipsis: 'i-tabler-dots', error: 'i-tabler-square-rounded-x', external: 'i-tabler-external-link', eye: 'i-tabler-eye', eyeOff: 'i-tabler-eye-off', file: 'i-tabler-file', folder: 'i-tabler-folder', folderOpen: 'i-tabler-folder-open', hash: 'i-tabler-hash', info: 'i-tabler-info-square-rounded', light: 'i-tabler-sun', loading: 'i-tabler-loader-2', menu: 'i-tabler-menu', minus: 'i-tabler-minus', panelClose: 'i-tabler-layout-sidebar-left-collapse', panelOpen: 'i-tabler-layout-sidebar-left-expand', plus: 'i-tabler-plus', reload: 'i-tabler-reload', search: 'i-tabler-search', stop: 'i-tabler-player-stop', star: 'i-tabler-star', success: 'i-tabler-square-rounded-check', system: 'i-tabler-device-desktop', tip: 'i-tabler-bulb', upload: 'i-tabler-upload', warning: 'i-tabler-alert-triangle' } } export type ThemeIcons = keyof typeof themeIcons /** * 按图标集覆盖当前图标表,图标集未收录的键回退当前值。 * 整体替换会丢失 @nuxt/ui 新增而图标集尚未跟进的键(如 4.10 的 star),故此处合并。 */ export function resolveThemeIcons(set: string, current: Record): Record { const icons = themeIcons[set as ThemeIcons] return icons ? { ...current, ...icons } : current }