feat: 完善MeNav浏览器扩展API规范实现
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -11,6 +11,7 @@ dist/
|
|||||||
.specstory
|
.specstory
|
||||||
.cursorindexingignore
|
.cursorindexingignore
|
||||||
.cursor
|
.cursor
|
||||||
|
.spec-workflow/
|
||||||
|
|
||||||
# 系统文件
|
# 系统文件
|
||||||
.DS_Store
|
.DS_Store
|
||||||
@@ -18,9 +19,10 @@ Thumbs.db
|
|||||||
|
|
||||||
|
|
||||||
# 个人笔记
|
# 个人笔记
|
||||||
docs/*
|
docs/
|
||||||
|
|
||||||
# 测试相关文件
|
# 测试相关文件
|
||||||
|
dev/
|
||||||
jest.config.js
|
jest.config.js
|
||||||
tests/
|
tests/
|
||||||
coverage/
|
coverage/
|
||||||
@@ -32,5 +34,6 @@ tests/screenshots/
|
|||||||
tests/fixtures/
|
tests/fixtures/
|
||||||
*.test.js
|
*.test.js
|
||||||
*.spec.js
|
*.spec.js
|
||||||
|
|
||||||
# SpecStory explanation file
|
# SpecStory explanation file
|
||||||
.specstory/.what-is-this.md
|
.specstory/.what-is-this.md
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "menav",
|
"name": "menav",
|
||||||
"version": "1.2.3",
|
"version": "1.3.0",
|
||||||
"description": "A personal navigation website",
|
"description": "A personal navigation website",
|
||||||
"main": "src/generator.js",
|
"main": "src/generator.js",
|
||||||
"homepage": "https://rbetree.github.io/menav",
|
"homepage": "https://rbetree.github.io/menav",
|
||||||
|
|||||||
@@ -283,12 +283,32 @@ function ensureConfigDefaults(config) {
|
|||||||
result.site = result.site || {};
|
result.site = result.site || {};
|
||||||
result.navigation = result.navigation || [];
|
result.navigation = result.navigation || [];
|
||||||
result.fonts = result.fonts || {};
|
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.profile = result.profile || {};
|
||||||
result.social = result.social || [];
|
result.social = result.social || [];
|
||||||
result.categories = result.categories || [];
|
result.categories = result.categories || [];
|
||||||
|
|
||||||
// 站点基本信息默认值
|
// 站点基本信息默认值
|
||||||
result.site.title = result.site.title || 'MeNav导航';
|
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.favicon = result.site.favicon || 'favicon.ico';
|
||||||
result.site.logo = result.site.logo || null;
|
result.site.logo = result.site.logo || null;
|
||||||
result.site.footer = result.site.footer || '';
|
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">
|
<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">
|
<div class="sites-grid" data-container="sites">
|
||||||
{{#if sites.length}}
|
{{#if sites.length}}
|
||||||
{{#each sites}}
|
{{#each sites}}
|
||||||
@@ -9,4 +9,4 @@
|
|||||||
<p class="empty-sites">暂无网站</p>
|
<p class="empty-sites">暂无网站</p>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="icon-container">
|
<div class="icon-container">
|
||||||
<i class="{{icon}}"></i>
|
<i class="{{icon}}"></i>
|
||||||
</div>
|
</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}}
|
{{#if submenu}}<i class="fas fa-chevron-down submenu-toggle"></i>{{/if}}
|
||||||
</a>
|
</a>
|
||||||
{{#if submenu}}
|
{{#if submenu}}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="icon-container">
|
<div class="icon-container">
|
||||||
<i class="{{icon}}"></i>
|
<i class="{{icon}}"></i>
|
||||||
</div>
|
</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>
|
<i class="fas fa-external-link-alt external-icon"></i>
|
||||||
</a>
|
</a>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
@@ -4,13 +4,25 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="menav-version" content="{{_meta.version}}">
|
<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="icon" href="./favicon.ico" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
|
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
|
||||||
{{{googleFontsLink}}}
|
{{{googleFontsLink}}}
|
||||||
<style>
|
<style>
|
||||||
{{{fontVariables}}}
|
{{{fontVariables}}}
|
||||||
</style>
|
</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>
|
<script>
|
||||||
(function() {
|
(function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user