feat: 完善MeNav浏览器扩展API规范实现
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 || '';
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user