moyf_yearly-glance/test
RavenHogWarts b8619b76e8
feat: 支持事件的导入导出 (#86)
* feat: 新增通用按钮组件及样式支持多变体和图标

实现了一个可复用的 Button 组件,支持 primary、secondary、outline、danger
四种样式变体,small、medium、large 三种尺寸,支持禁用状态和图标显示。
新增对应的 CSS 样式,包含交互效果、响应式设计及深色模式适配,提升 UI
一致性和可用性。

* feat: 新增数据管理中心视图及相关命令

- 添加 DataPortManagerView 组件,实现数据管理中心界面
- 在主程序中注册数据管理中心视图类型
- 新增打开数据管理中心的命令,方便用户快速访问
- 补充中英文多语言支持,完善界面文本显示

提升插件的数据管理功能,增强用户操作体验。

* style: 优化按钮样式,移除聚焦轮廓和响应式限制

- 添加 box-shadow: none 以去除按钮阴影,提升视觉一致性
- 注释掉聚焦时的 outline 样式,避免默认蓝色边框影响设计
- 删除响应式中按钮最小尺寸限制,增强布局灵活性

* fix: 对日期数组进行排序以保证返回结果有序

对返回的日期数组使用 localeCompare 进行排序,确保
结果按字典序排列,提升数据一致性和后续处理的准确性。

* feat: 新增数据导入导出管理组件及视图集成

- 新增 DataPortManager 组件,实现数据导入和导出功能的切换
- 使用 NavTabs 实现导入导出标签页切换,提升用户体验
- 通过 DataPortManagerWrapper 组件结合 Hook 管理配置和数据状态
- 在 DataPortManagerView 中集成 DataPortManager,实现视图渲染
- 添加对应样式,优化界面布局和视觉效果

* feat: 新增数据导出组件,支持JSON和ICS格式导出

- 实现DataExport组件,支持按事件类型分组选择导出数据
- 支持全选、分组选中及单个事件选择功能
- 支持导出年份调整,导出文件名自动生成
- 组件卸载时原始年份配置,保证配置一致性
- 优化事件排序,确保导出数据按日期升序排列
- 提供友好的导出格式切换界面,提升用户体验

* feat: 优化导出配置界面及样式调整

- 将 JSON 和 ICS 导出配置拆分为独立函数,提升代码可读性
- ICS 导出新增年份选择器,支持通过按钮调整导出年份
- 导出按钮文案简化为“导出”,界面更简洁
- 导出配置区域改用 CSS Grid 布局,增强响应式适配能力
- 调整样式细节,减少间距,优化标签字体大小和颜色
- 年份选择器样式优化,提升交互体验和视觉一致性

* feat: 默认全选所有事件以优化导出体验

新增逻辑自动获取所有事件ID,并在组件初始化及数据变更时
将选中状态设置为全选,避免用户手动选择,提高导出操作的
便捷性和准确性。优化了事件选中状态的管理,确保数据同步。

* feat: 国际化数据导出组件文本内容

将数据导出相关的所有静态文本替换为国际化资源,
包括按钮、标签、提示信息等,支持简体和繁体中文。
提升多语言支持,便于后续扩展和维护。

* feat: 使用时安全方法生成默认导出文件名

引入 IsoUtils 工具,替换原有的 toISOString 方法,确保导出文件名中的日期
字符串符合本地时区,避免因时区差异导致的日期错误,提高导出文件名的准确性。

* feat: 移除 DataPortManagerView 组件并重构数据流转功能

- 完全删除 DataPortManagerView 视图组件及相关渲染逻辑
- 将数据流转功能整合至 DataPortManager 组件,简化结构
- 更新 GlanceManagerView,新增 dataPort支持,调用重构后的组件
- 调整国际化文案,移除“数据管理中心”相关描述,新增“数据流转”标签
- 优化代码依赖,统一使用 useYearlyGlanceConfig Hook 管理配置和事件数据

此改动旨在简化数据流转模块结构,提高代码维护性和扩展性。

* style: 优化导出事件列表和交互样式

将事件列表flex布局改为响应式grid布局,提升多列展示效果。
调整事件项样式,增加边框、圆角和背景色,增强视觉层次感。
新增悬停动画和阴影效果,提升交互反馈体验。
优化选中状态样式,突出高亮边和阴影。
针对不同屏幕宽度调整grid列数和间距,增强响应式适配。

* feat: 新增 CalloutBlock 组件及样式支持

新增通用提示块组件 CalloutBlock,支持标题、图标和内容
的灵活展示。通过 type 属性控制样式类型,提升界面
信息提示的统一性和可维护性。新增对应 CSS 样式,确保
布局和视觉效果符合设计规范。

* feat: 新增导入上传组件及JSON导入处理逻辑

- 新增 ImportUpload 组件,支持文件选择和上传,提升导入体验
- 实现 ImportJsonProcessor 类,解析并校验导入的 JSON 数据
- 在 DataConverter 中集成 ImportJsonProcessor,优化数据导入流程
- 校验导入事件的必填字段,区分有效和无效事件,增强数据可靠性

* feat: 实现数据导入功能并优化导出交互体验

- 新增导入组件,支持JSON格式事件数据的解析与选择导入
- 支持节日、生日、自定义事件的多类型导入及校验
- 导入时默认选中所有有效事件,支持显示/隐藏无效事件
- 导出时错误处理改为抛出异常,避免使用alert弹窗
- 导出界面文本改为国际化,提升多语言支持体验
- 优化导出按钮文案及选择统计显示格式,提升用户体验

* feat(i18n): 增加导入功能及优化导出文案

- 将导出操作文案由“导出”修改为“导出选中事件”,提升语义准确性
- 新增导入模块相关文案,包括操作按钮、导入文件说明、空状态提示及警告信息
- 支持 JSON 格式文件导入,要求事件包含 text 和 userInput 字段,支持三种事件类型
- 同步更新英文、简体中文和繁体中文多语言文件及类型定义,确保类型安全和多语言一致性

* feat(data-import): 优化导入示例展示及样式调整

新增详细的 JSON 导入示例,帮助用户更清晰理解数据格式。
调整导入区域布局,提升响应式适配和视觉层次感。
优化调用块和代码块样式,增强可读性和交互体验。
完善滚动条样式,提升长内容浏览的用户体验。

* feat(i18n): 优化英文文案并本地化导入警告

- 调整 Glance manager 子项的文案将 "Events manager" 改为
  "Events",将 "Data port" 改为 "Data",统一展示用词以简化界面。
- 规范导出/导入视图的操作按钮文案:将 "Reverse all" 更改为
  "Deselect all",将 "Cancel selection" 更改为 "Deselect ",
  统一为更明确的取消/反选描述,改善用户理解。
- 在 importJson 处理器中引入 i18n 翻译函数 t,并将硬编码的中文
 警告替换为可本地化的文案 key(view.dataPortView.import.warn.nullText
 和 view.dataPortView.import.warn.nullDate),便于后续多语言维护。

* feat(dataport): 统一选择动作文本并加入分组切换

移除多语言文件中已废弃的 selectCancel 字段,改为使用
selectAll / reverseAll 两个动作文本,简化并统一 i18n 结构。
修正导入/导出视图中按钮使用的文本键,从原先的 selectCancel
替换为 reverseAll,避免键名不一致导致的文案错误。
在 DataExport 和 DataImport 的分组行中添加 group-actions 区块,
加入用于整组选择/反选的按钮及图标,提升分组内批量操作的可
用性与交互一致性。

* feat(pre): 添加可复制的预格式化代码组件与样式

新增 Base/Pre 组件及其样式,提供带复制按钮的
预格式化代码块。主要变更:
- 新增 src/components/Base/Pre.tsx,实现 Pre 组件:
  - 支持 language 和 className 属性;
  - 可选显示复制按钮(默认显示);
  - 点击复制将把 pre 内文本写入剪贴板并显示短暂的“已复制”
    状态(2s),失败时在控制台打印错误;
  - 使用 lucide-react 的图标(Copy / Check)作为按钮图标。
- 新增 src/components/Base/style/Pre.css,包含:
  - 预格式化代码块基本样式、滚动条样式、暗黑模式适配;
  - 复制按钮样式、悬停与已复制状态样式;
  - 响应式调整与可选的语言指示(通过 data-language)。
- 在 DataPort/DataImport.tsx 中引入并准备使用 Pre 组件,
  并添加了一个 JSON 示例代码字符串常量便于展示或文档。

变更原因:
- 增强代码块展示体验,便于用户一键复制示例或导入数据;
- 提供一致的样式与暗黑模式支持,提升可用性與视觉一致性;
- 为数据导入界面提供示例展示组件,方便用户理解数据格式。

* feat(import): 添加粘贴导入弹窗与样式优化

- 在导入上传组件中新增粘贴导入功能(可粘贴 JSON 文本并校验后提交)。
  - 增加组件状态与处理函数:showPasteModal、pasteContent、isPasting、
    parseError、parseSuccess。
  - 添加 handlePasteSubmit、handlePasteCancel 等逻辑,进行 JSON
    校验、错误提示与提交回调 onPasteJson,以及提交成功后的自动
    关闭与清理。
- 丰富并调整组件图标集合,新增 AlertCircle、CheckCircle、Clipboard、
  FileText、X 等图标以支持新交互。
- 调整导入头部布局与对齐(justify-content: space-between),并将
  标题与动作区分开以提升响应式表现和可读性。
- 新增大量粘贴弹窗相关 CSS(.paste-modal、.paste-modal-header、
  .paste-textarea、.parse-status、.paste-modal-actions 等),包含遮罩、
  主题样式、聚焦效果、状态提示(成功/错误)以及响应式尺寸约束,
  改善粘贴体验和无障碍视觉反馈。
- 微调若干已有样式(如文本对齐、间距、动作区布局)以配合新弹窗
  与整体布局。

* feat(i18n): 抽取 dataPort 公共文案并调整导入/导出键

将 dataPortView 中 import/export 的重复文案抽出为 common.actions,
统一放置 selectAll、reverseAll、selectSummary 等共享文本,减少
冗余并统一翻译结构。为导入对话框补充 upload 与 paste 两个文案键,
并在类型定义(types.ts)中同步新增/移动的字段类型。更新组件中
所有 t() 调用的路径以匹配新的 i18n 结构,确保导入/导出界面能正
确读取文案。

* refactor(style): 移除 DataImport.css 中上传与粘贴相关冗余样式

删除 DataPort 组件下 DataImport.css 文件中大段与上传区域、
上传按钮、粘贴弹窗及其内部元素的样式定义。主要移除内容
包括 .import-upload(及其子元素如 header、description、pre、
code、ul 等)、.paste-modal(及 overlay、header、content、
textarea 等)和相关的滚动条、响应式、呼出块样式。目的是
清理不再使用或重复的样式,减小样式文件体积并避免样式冲突。

* fix(import): 调整导入文案与错误样式以统一展示

- 将导入相关文案由“重新选择文件”/“重新選擇文件”修改为
  “重新选择导入”/“重新選擇導入”,统一中文与繁体翻译,提升描述
  的准确性(更贴合“导入操作”语义)。
- 修改英文文案中复选重置按钮文本为“Reset selection”,使英文
  表达更简洁明确。
- 调整导入组件中无效事件区域的样式:
  - 将边框颜色从通用边框变量改为错误状态变量(
    --background-modifier-error),以突出错误区域。
  - 移除部分依赖背景色变化的 hover 与 success/warning/success
    背景样式,简化样式规则并依赖文本与边框颜色区分状态。
- 清理冗余 CSS 规则,减少样式冲突与维护成本。

这些改动旨在统一文案表述、增强错误可见性并简化样式逻辑。

* fix(import-json): 移除 finally 中清空粘贴内容的

在 ImportJson 组件解析 JSON 的异常处理分支中,
删除了 finally 块里对 pasteContent 的 setPasteContent("") 调用。
这样做是为了避免在解析失败后立即清空用户粘贴的数据,
便于用户查看并修正错误内容,提高调试和用户体验。

* refactor: 统一并修正内部模块导入路径

将多处组件与工具的导入路径从的 core/interfaces 或相对路径
替换为新的 "@/src/..." 命名别名路径,重组了 type、components、
utils 等模块的引用位置。重点变更包括:
- GlanceManagerView、EventManager、ViewSettings、DataPortManager 等视图组件
  使用 "@/src/components/..." 统一导入。
- Events、Date、Config、DataPort 等类型接口由 "@/src/core/interfaces/..."
  迁移为 "@/src/type/..." 并相应更新引用。
- utils 工具类(isoUtils、dataConverter、importJsonProcessor、lunarLibrary 等)
  的导入改为 "@/src/utils/..."。
- UI 基础组件(NavTabs、Tooltip、Button、Select、ColorSelector、Toggle、
  DateInput、CalloutBlock、Pre、ImportUpload)统一改为 "@/src/components/Base/..."。
- 修复了部分文件头部的路径不一致问题,删除冗余相对路径导入。

变更原因:
- 统一项目模块路径风格,便于维护和重构;
- 减少相对路径带来的易错性,提高可读性与可移植性;
- 为后续按类型分离与打包优化奠定基础。

* feat: 重构导入数据类型并移除测试文件

重命名并简化导入相关类型,统一 JSON 事件接口命名为
JsonEvent、ImportJsonEvents 和 JsonEventParse,替换原来的
ImportJsonEvent/ImportJson/ImportJsonEventParse 名称以提升可读性
和一致性。调整注释以更准确描述 json 格式的数据结构。

移除 test/lunarLibrary.test.ts 测试文件。该文件包含大量对
lunar-typescript 行为的记录性测试(包括对无效日期、闰月和边界
条件的探测),但已从代码库中删除以清理过时或不再需要的
测试代码。

* feat(frontmatter): 添加Matter 工具类用于统一 YAML 元数据

src/utils/front.ts,提供 FrontMatter 类以封装对
Obsidian 文件 YAML front 的一系列常用操作。主要改动与
目的如下:

- 新增 FrontMatter 构造与依赖注入 App 实例,便于在插件中复用
- 添加 createFrontMatter,用于将给定键值合并写入 frontmatter
  (使用 Object.assign 保持已有键)
- 添加 deleteFrontMatter,按键数组删除指定 frontmatter 字段
- 添加 updateFrontMatter,接受回调以便在 processFrontMatter 内原子
  修改 frontmatter
- 添加 readFrontMatter,安全读取并返回文件的 frontmatter 副本
- 添加 replaceFrontMatterKey,将现有键名替换为新键名(保留值)
- 添加 hasFrontMatterKey 与 getFrontMatterValue,用于检查键存在性
  与读取单个键的值

这些改动将前端对 YAML 元数据的操作集中在单一类中,降低重复代
码并确保通过 Obsidian 的 processFrontMatter 接口进行原子化修改,
减少并发写入冲突的风险,提升可维护性与可测试性。

* feat: 事件 ID 生成与校验,标准化日历大小写

- 新增 utils/uniqueEventId.ts,提供 generateEventId 与
  validEventId 两个函数,用于根据事件类型生成带前缀的 UUID,
  并在校验时保证 ID 前缀正确(birthday->birth,
  holiday->holi, customEvent->event)。
- 在 JsonService 中接入 validEventId,确保解析的事件始终有
  合法且规范的 ID;同时在解析与重复检查处统一将 calendar
  字段转换为大写("GREGORIAN"),避免大小写带来的不一致。
- 在主入口 main.ts 中移除类内冗余的 ID 生成逻辑,统一调用
  新的 generateEventId,简化代码并减少重复实现。
- 清理 EventManager 中基于字符串判断事件类型的不可靠逻辑
 (移除通过 ID 前缀推断类型的片段),为更可靠的类型判断
 留下空间。

原因:
- 将 ID 生成与校验逻辑集中到单一工具模块,避免重复实现并
  保证全局一致性。
- 统一 calendar 字段的大小写处理,减少因大小写差异导致的
  比较与解析错误。

* feat(type): 为导出添加 Markdown 类型定义

为Port 中的导出格式补充了 MarkdownEvent 接口,包含事件在 Markdown
导出时需要的字段(id、text、isoDate、calendar、dateArr 等),并为不同类
型事件添加特定字段(Holiday 的 foundDate,Birthday 的 nextBirthday/age/
animal/zodiac,CustomEvent 的 isRepeat)。同时从 Date 模块引入 CalendarType。

这样便于将事件数据按 Markdown 格式序列化,确保导出时保留各类型事件所需
的额外元数据和显示信息。

* feat(ui): 用可复 Button 组件替换 ConfirmDialog 的原生按钮

- 在 ConfirmDialog 中引入并使用通用 Button 组件,替换原有的
  原生 <button> 元素,以统一样式和交互行为。
- 为确认按钮添加了 className,便于单独定制样式与测试。
- 调整 ConfirmDialog 的样式文件,移除重复的按钮样式,
  依赖 Button 的样式实现对齐与间距控制。
- Button 组件允许 children 可选,防止空内容导致不必要的
  元素渲染;仅在有 children 时渲染文本容器。
- 修正 Button 样式的 padding 与 focus 样式,恢复 focus outline
  并使用变量化的内边距值。

原因:
- 组件化按钮可以复用样式和行为,减少重复 CSS 和潜在的
  交互差异,提高可维护性并便于后续主题统一。

* fix: 修正事件 ID 前缀处理与导入校验逻辑

- 导出 prefixMap,供外部使用并统一前缀映射,避免重复定义
- 在生成/规范化 ID 时只视为带前缀的情况为 `${prefix}-...`
 (从原先 startsWith(prefix) 改为 startsWith(`${prefix}-`),避免误判
- 在 JsonService 导入校验中传入 eventType,以便根据事件类型获取正确前缀
- 在导入重复检测前,若事件带有 id 且缺少正确前缀,则使用 validEventId
 生成/规范化为带前缀的 ID,确保重复检查准确
- 调整相关函数签名与调用以传递 eventType,修复因缺失前缀导致的误报

这些改动确保事件 ID 前缀一致性,提升导入时重复检测的准确性。

* feat(data-export): 添加 Markdown 导出配置与界面支持

- 在 src/type/DataPort.ts 中新增 MarkdownExportConfig 和
  MarkdownFieldConfig 类型,以及 DEFAULT_MARKDOWN_EXPORT_CONFIG
  默认配置。为假期、生日、自定义事件分别定义导出到
  frontmatter 的字段集合,并配置默认导出文件夹路径。

- 在 src/components/DataPort/DataExport.tsx 中:
  - 引入 DEFAULT_MARKDOWN_EXPORT_CONFIG、MarkdownExportConfig
    和 Obsidian 的 App 类型。
  - 在导出格式选项中添加 "Markdown (md)" 选项和对应图标。
  - 增加 markdownConfig 状态以保存 Markdown 导出配置,
    并在切换到 md 格式时清空文件名(Markdown 导出直接写入
    指定文件夹,无需下载文件名)。
  - 引入 Toggle 组件、FolderOpen 图标及 MarkdownService(为后续
    实现导出逻辑预留)。
  - 重构 JSON 与 ICS 导出分支:在 JSON 分支中改为显式创建
    Blob 并触发浏览器下载(避免后续行为不一致),为 Markdown
    分支预留处理位置。

原因:
- 增加 Markdown 导出能力的类型与默认配置,便于后续将事件导出为
  Obsidian 笔记并把元数据写入 frontmatter。
- 在 UI 中新增格式选项与配置状态,为用户提供直接将事件导入
  笔记库的入口,并确保现有 JSON/ICS 导出行为更明确可靠。

* feat(toggle): 为 Toggle 增加可见标签并调整样式

为 Toggle 组件添加了可选的 label 属性,并在渲染中根据有无
label 显示文本节点,方便在开关旁展示描述文字,提升可用性
和可访问性。为此调整了 CSS 布局:将容器从绝对定位的
固定尺寸改为 flex 布局(居中对齐、间距 8px),使标签与
滑块水平排列;将滑块样式改为相对定位并固定宽高,同时
防止收缩(flex-shrink: 0);增加了标签的字体大小和颜色样式。
修正了禁用态样式的闭合花括号位置。

这些改动使 Toggle 更易于在表单或行内布局中使用,提升了
视觉一致性和开发便利性,同时保持原有交互行为不变。

* feat(export): 优化Markdown导出与国际化字段配置

- MarkdownService:
  - 当目标文件不存在时,先创建空文件,再通过 frontMatterService
    更新 frontmatter,避免直接拼接内容导致的重复或格式问题。
  - 将导出时间从 ISO 字符串改为本地化字符串(toLocaleString),便于
    在本地环境阅读和展示。

- 移除内部生成 Markdown 内容与 YAML 序列化的私有方法,
  改为依赖 frontMatterService 统一管理 frontmatter,简化逻辑并降低
  重复实现风险。

- DataPort:
  - 将 holidayFields、birthdayFields、customEventFields 中的 id、
    emoji、color 标记从 true 改为 false,调整默认导出字段以减少
    冗余信息。

- i18n:
  - 在英文与中文(简体)语言文件中补充导出相关的字段标签与
    导出类型配置(如文件夹标签、字段标题等),并在类型定义中
   补齐相应的字段字符串类型声明,完善国际化支持。
  - 修正繁体中文 locales 中的用词(“过往” -> “過往”)。

以上改动主要为修复导出流程中 frontmatter 写入的健壮性、简化
Markdown 内容管理逻辑、调整默认导出字段,以及完善导出相关的
国际化文案。

* feat(data-export): 重构导出配置样式与改进导出提示

- 重命名并重构 DataExport.css 中的导出配置相关样式:
  - 将 .markdown-folder-config 改为 .markdown-export-config,调整整体间距与结构,统一为更清晰的
    folder-config-section / field-config-section / event-type-config 组织,优化边框、圆角、内边距与标题样式,
    提高样式一致性与可读性。
  - 合并并重写字段切换区布局,调整 grid 模板与间距,增强响应式表现。
  - 移除冗余旧样式(.config-label、.markdown-field-config 中重复或过时规则),精简样式文件。

- 在 DataExport.tsx 中进行逻辑与提示改进:
  - 使用 Obsidian 的 Notice 替代 alert 以提供原生通知体验(选择事件为空、导出成功/失败的提示)。
  - 将事件导出配置的数据结构化(eventCommonFields 与 eventTypeConfigs),把各类型事件的字段与文件夹
    配置抽象为统一映射,便于后续扩展与维护。
  - 为不同事件类型准备更清晰的字段列表与国际化标签引用,提升代码可读性与可扩展性。

总体上改善样式结构与导出交互反馈,且将导出配置逻辑模块化,便于后续功能拓展与维护。

* feat(ui): 添加文件夹自动完成组件并美化式

新增 FolderAutoComplete 组件用于在 Obsidian Vault 中自动完成
并选择文件夹路径,组件接收 label/value/onChange/placeholder/
disabled/className 等属性,基于 useObsidianApp 获取 vault 数据并
动态生成候选项与显示标签。该组件解决手动输入路径不便和
路径显示不直观的问题,提高用户选择文件夹的体验。

在 DataExport 视图中引入 ObsidianAppContext 与 FolderAutoComplete,
将原先文本输入替换为文件夹自动完成控件,便于在导出配置中
直接选择目标文件夹(保留图标与翻译标签)。

新增 Autocomplete 相关样式文件,完善下拉列表、输入框、项的
交互(悬停、选中、空状态、聚焦态等)及动效,以提升控件的
可用性和视觉一致性。

* fix: 处理根目录路径并避免双斜杠

- 在生成文件路径时对传入的文件夹路径进行规范化,
  使用 normalizePath(folderPath) 生成 normalizedFolderPath。
  若规范化后为空字符串则直接使用文件名,避免产生以
  双斜杠开头或类似的错误路径。
- 在确保文件夹存在的逻辑中添加根目录短路返回:
  当 folderPath 为 "/" 或 "" 时直接返回,不尝试创建根目录。
- 保持文件名生成与 frontmatter 构建逻辑不变。

为何变更:
- 修复在根目录或空路径情况下生成文件路径出现冗余斜杠或无效
  路径的问题,避免创建错误文件或异常。
- 防止尝试创建根目录导致不必要的操作或失败。

* feat(i18n,export): 添加导出提示与国际化支持

- 为中/繁/英文语言包增加 markdown 导出成功/失败的文案,
  并在 types 中声明对应字段(success, failure)。
- 为中/繁/英文语言包添加导出时未选中事件的提示文本
  (noSelectedEvents)。
- 在导出组件中替换硬编码提示为 i18n 文案,导出成功/失败
  使用本地化消息显示并在失败时抛出错误以便上层处理。
- 在 MarkdownService 中引入 normalizePath(为后续路径规范化
  做准备)。

原因:
- 提升导出流程的本地化体验,避免硬编码英文/中文提示。
- 在导出失败时提供更明确的用户反馈及错误传播,便于
  日志排查和上层统一处理。

* feat(i18n): 统一导入按钮文案为“选择”

将中文、繁体与英文语言文件中导按钮的文案从“导入/匯入/Upload”
更改为“选择/Choose”。目的是统一多语言文案以便与当前按钮
交互行为一致(实际为选择文件/选项),提高措辞准确性与翻译
一致性,避免用户混淆。

* feat(i18n): 添加导入成功提示类型定义

- 在中英文(zh, zh-TW, en)语言包中新增 paste
  success 文本,显示 "成功导入 {{count}} 个事件"(英文版为
  "Successfully imported {{count}} events"),用于导入 JSON
  后的成功提示- 在 i18n 类型定义 types.ts 中为 paste success 添加 string
  类型声明,保证类型检查通过。
- 在 DataImport 组件中引入 Obsidian 的 Notice,并在成功导入
  后显示本地化的成功通知(包含导入的事件数量),然后清
  理解析结果与选中状态。

为什么做出这些更改:
- 为了在用户成功通过粘贴 JSON 导入事件时提供明确的可视化
  反馈,增强用户体验并与现有的错误/提交文案保持一致。
- 补充类型声明以避免 TypeScript 报错并确保 i18n 字符串
  在运行时可用。

* feat(pre): 为代码块添加标题支持并补充示例文案

- 在 Pre 组件中新增 title 属性并在渲染时显示标题(.yg-pre-title),
  便于给代码示例添加说明,改善可读性和上下文提示。
- 在 DataImport 中为 JSON 示例使用 title,从 i18n 中读取对应的
  格式说明文案,替代之前直接无标题的代码块。
- 在多语言资源(zh、zh-TW、en)中增加 format_example 字段并在
  类型定义中声明,补充“有效 JSON 格式范例”文案以支持新标题。
- 调整样式:新增 .yg-pre-title 样式,移除 .yg-pre 的上边距以配合
  新标题显示,保证视觉间距和布局一致。
2025-08-21 23:58:59 +08:00
..
2025节假日.json feat: 支持事件的导入导出 (#86) 2025-08-21 23:58:59 +08:00
import.test.json feat: 支持事件的导入导出 (#86) 2025-08-21 23:58:59 +08:00