用途:为 vapor-ui 组件及其 props 编写面向使用者的 JSDoc 注释。JSDoc 在此被视为面向用户的 UI 文档,而非内部代码注释,读者是通过 Storybook Autodocs 等文档站点首次接触组件的开发者。
核心规则:仅使用英文,JSDoc 块内不得出现韩文;每个 /** ... */ 块的第一行必须留空。组件摘要写在组件函数上方,单个 prop 描述写在 Props 接口或类型内部,而非组件函数上。
写入位置:组件摘要位于 {component}.tsx 组件函数上方;单个 props 位于 {component}.tsx 的 interface 或 namespace Props 内;变体组位于 {component}.css.ts 中 componentRecipe() 内各变体键对象上。不要为单个变体值(sm、md、primary、fill 等)写 JSDoc,变体键描述已足够;也不要为 export type XxxVariants 写 JSDoc,工具会从 recipe 自动推导。
模式速查:Standalone 不在 namespace Props 本身写 JSDoc,变体组文档写在 .css.ts 的 componentRecipe() 中;Compound Root(通过 interface 自定义 props)写在 interface 上,由 namespace 包裹;带 context 的 Compound Root(Assign<…, Context> 模式)只写自定义 props;Compound 子部件(Omit<…, keyof Context> 模式)只写剩余 props。
组件摘要规则:单行,内部不换行;从用户视角说明“是什么→何时使用”;不使用内部术语(如 memoized、wrapper、token-based);结尾用反引号标注渲染出的 HTML 元素,如“Renders a <button> element.”或“Doesn't render its own HTML element.”。
Prop 描述规则:不重复 prop 名称或类型;描述副作用及与其他 props 的交互;数值型 props 需包含单位与有效范围;事件处理器需说明确切触发条件,而非仅写 handler;默认值使用 @default 标签,不要在描述文本中内联写 Default: value。
审查清单:所有 JSDoc 为英文;每个块首行为空;摘要单行完整句并含反引号 HTML 元素;描述不重复 prop 名;事件处理器说明确切触发条件;数值 props 含单位与范围;不为单个变体值写 JSDoc;不为 export type XxxVariants 写 JSDoc;默认值用 @default 标签。详细模式与示例见 references/guide.md。