feat: 完善MeNav浏览器扩展API规范实现

This commit is contained in:
coolzr
2025-10-14 19:34:47 +08:00
parent e5fc71aee8
commit 6447abef3a
7 changed files with 42 additions and 7 deletions

5
.gitignore vendored
View File

@@ -11,6 +11,7 @@ dist/
.specstory
.cursorindexingignore
.cursor
.spec-workflow/
# 系统文件
.DS_Store
@@ -18,9 +19,10 @@ Thumbs.db
# 个人笔记
docs/*
docs/
# 测试相关文件
dev/
jest.config.js
tests/
coverage/
@@ -32,5 +34,6 @@ tests/screenshots/
tests/fixtures/
*.test.js
*.spec.js
# SpecStory explanation file
.specstory/.what-is-this.md

View File

@@ -1,6 +1,6 @@
{
"name": "menav",
"version": "1.2.3",
"version": "1.3.0",
"description": "A personal navigation website",
"main": "src/generator.js",
"homepage": "https://rbetree.github.io/menav",

View File

@@ -283,12 +283,32 @@ function ensureConfigDefaults(config) {
result.site = result.site || {};
result.navigation = result.navigation || [];
result.fonts = result.fonts || {};
// 确保字体配置完整
result.fonts.title = result.fonts.title || {};
result.fonts.title.family = result.fonts.title.family || 'Arial';
result.fonts.title.weight = result.fonts.title.weight || 700;
result.fonts.title.source = result.fonts.title.source || 'system';
result.fonts.subtitle = result.fonts.subtitle || {};
result.fonts.subtitle.family = result.fonts.subtitle.family || 'Arial';
result.fonts.subtitle.weight = result.fonts.subtitle.weight || 500;
result.fonts.subtitle.source = result.fonts.subtitle.source || 'system';
result.fonts.body = result.fonts.body || {};
result.fonts.body.family = result.fonts.body.family || 'Arial';
result.fonts.body.weight = result.fonts.body.weight || 400;
result.fonts.body.source = result.fonts.body.source || 'system';
result.profile = result.profile || {};
result.social = result.social || [];
result.categories = result.categories || [];
// 站点基本信息默认值
result.site.title = result.site.title || 'MeNav导航';
result.site.description = result.site.description || '个人网络导航站';
result.site.author = result.site.author || 'MeNav User';
result.site.logo_text = result.site.logo_text || '导航站';
result.site.favicon = result.site.favicon || 'favicon.ico';
result.site.logo = result.site.logo || null;
result.site.footer = result.site.footer || '';

View File

@@ -1,5 +1,5 @@
<section class="category" id="{{name}}" data-type="category" data-name="{{name}}" data-icon="{{icon}}" data-container="categories">
<h2><i class="{{icon}}"></i> {{name}}</h2>
<h2 data-editable="category-name"><i class="{{icon}}"></i> {{name}}</h2>
<div class="sites-grid" data-container="sites">
{{#if sites.length}}
{{#each sites}}

View File

@@ -5,7 +5,7 @@
<div class="icon-container">
<i class="{{icon}}"></i>
</div>
<span class="nav-text">{{name}}</span>
<span class="nav-text" data-editable="nav-item-name">{{name}}</span>
{{#if submenu}}<i class="fas fa-chevron-down submenu-toggle"></i>{{/if}}
</a>
{{#if submenu}}

View File

@@ -5,7 +5,7 @@
<div class="icon-container">
<i class="{{icon}}"></i>
</div>
<span class="nav-text">{{name}}</span>
<span class="nav-text" data-editable="social-link-name">{{name}}</span>
<i class="fas fa-external-link-alt external-icon"></i>
</a>
{{/each}}

View File

@@ -4,13 +4,25 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="menav-version" content="{{_meta.version}}">
<title>{{site.title}}</title>
<title data-editable="site-title">{{site.title}}</title>
<meta name="description" content="{{site.description}}" data-editable="site-description">
<meta name="author" content="{{site.author}}" data-editable="site-author">
<link rel="icon" href="./favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
{{{googleFontsLink}}}
<style>
{{{fontVariables}}}
</style>
<!-- 字体配置数据,供扩展读取 -->
<meta name="font-title-family" content="{{fonts.title.family}}" data-editable="font-title-family">
<meta name="font-title-weight" content="{{fonts.title.weight}}" data-editable="font-title-weight">
<meta name="font-title-source" content="{{fonts.title.source}}" data-editable="font-title-source">
<meta name="font-subtitle-family" content="{{fonts.subtitle.family}}" data-editable="font-subtitle-family">
<meta name="font-subtitle-weight" content="{{fonts.subtitle.weight}}" data-editable="font-subtitle-weight">
<meta name="font-subtitle-source" content="{{fonts.subtitle.source}}" data-editable="font-subtitle-source">
<meta name="font-body-family" content="{{fonts.body.family}}" data-editable="font-body-family">
<meta name="font-body-weight" content="{{fonts.body.weight}}" data-editable="font-body-weight">
<meta name="font-body-source" content="{{fonts.body.source}}" data-editable="font-body-source">
<!-- 预设主题和侧边栏状态,避免闪烁 -->
<script>
(function() {