@bbc/psammead-story-promo

中文文档
8.0.38发布于 2022/03/29Apache-2.0ESM + CJS近 30 天下载 7206

用于索引页面的故事宣传

中文使用文档
文档目录15 节
  1. 说明
  2. 出口
  3. 安装
  4. 故事宣传道具
  5. 头条道具
  6. 推荐摘要
  7. 索引Alsos
  8. 道具
  9. 使用量
  10. 何时使用此组件
  11. 无障碍说明
  12. 路线图
  13. 捐款
  14. 行为守则
  15. 许可证

赞美 - 故事 - 促进 - Known Vulnerabilities Dependency Status peerDependencies Status Storybook GitHub license npm version PRs Welcome

说明

这个 StoryPromo 组件被设计用于“index”页面,这些页面是链接到其他文章/故事的页面。 这种信息可以是任何节点的集合,尽管这些节点通常是标题、文本摘要和时间戳.

出口

/index-alsos - 与顶级故事有关的故事链接的组件.

安装

npm install @bbc/psammead-story-promo

故事宣传道具

参数类型需求默认示例
图像节点没有无<img>
资讯节点对不详<h2>Title</h2>
媒体指标节点没有无效<MediaIndicator duration="2:15" datetime="PT2M15S" offscreenText="Video 2 minutes 15 seconds" />
目录字符串没有ltrrtl
显示图像布尔没有真实虚假
促销类型字符串没有regulartop

头条道具

参数类型需求默认示例
脚本对象对拉丁语{ canon: { groupA: { fontSize: '28', lineHeight: '32',}, groupB: { fontSize: '32', lineHeight: '36', }, groupD: { fontSize: '44', lineHeight: '48', }, }, trafalgar: { groupA: { fontSize: '20', lineHeight: '24', }, groupB: { fontSize: '24', lineHeight: '28', }, groupD: { fontSize: '32', lineHeight: '36', }, }, }
服务字符串对不详'news'
宣传图像嘘没有真实false
促销类型字符串没有regulartop

推荐摘要

参数类型需求默认示例
脚本对象对拉丁语{ canon: { groupA: { fontSize: '28', lineHeight: '32',}, groupB: { fontSize: '32', lineHeight: '36', }, groupD: { fontSize: '44', lineHeight: '48', }, }, trafalgar: { groupA: { fontSize: '20', lineHeight: '24', }, groupB: { fontSize: '24', lineHeight: '28', }, groupD: { fontSize: '32', lineHeight: '36', }, }, }
服务字符串对不详'news'
宣传图像嘘没有真实false
促销类型字符串没有regulartop

索引Alsos

"索引"(英語:The Index Assolutes)是和上层故事相关的故事的链接.

内部 IndexAlsos 组件有一个可视化隐藏 第4级标题,它宣布文本作为道具通过.

当有不止一个索引时,应将其包裹在一个列表项目中 IndexAlsosLi 在未排序的列表中 IndexAlsosUl 与角色 listitem 财务报告和审定财务报表 list 页:1.

另一方面,当有一个指数时,它应该使用 IndexAlso 内容不应包含在清单中.

道具

索引阿尔索斯道具

参数类型需求默认示例
儿童节点对不详<IndexAlsosUl><IndexAlsosLi script={latin} service="news" url="https://www.bbc.co.uk/news" mediaIndicator={<MediaIndicator service="news" type="video" indexAlsos/>}>Related content 1</IndexAlsosLi><IndexAlsosLi script={latin} service="news" url="https://www.bbc.co.uk/news">Related content 2</IndexAlsosLi></IndexAlsosUl>
关闭文本字符串没有无效Related content

数据属性, 例如 data-e2e 也可以通过测试.

索引AlsoUl 道具

参数类型需求默认示例
儿童节点对不详<IndexAlsosLi script={latin} service="news" url="https://www.bbc.co.uk/news" mediaIndicator={<MediaIndicator service="news" type="video" indexAlsos/>}>Related content 1</IndexAlsosLi><IndexAlsosLi script={latin} service="news url="https://www.bbc.co.uk/news">Related content 2</IndexAlsosLi>

索引AlsoLi 推进

参数类型需求默认示例
儿童节点对不详This is a headline
脚本对象对拉丁语{可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指:
服务字符串对不详'news'
url 密码字符串对不详'https://www.bbc.co.uk/news'
目录字符串没有ltrrtl
媒体指标节点没有无效<MediaIndicator service="news" type="video" indexAlsos/>
介质类型字符串没有无效Video

索引辅助

参数类型需求默认示例
儿童节点对不详This is a headline
脚本对象对拉丁语{可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指: {可以指:
服务字符串对不详'news'
url 密码字符串对不详'https://www.bbc.co.uk/news'
目录字符串没有ltrrtl
媒体指标节点没有无效<MediaIndicator service="news" type="video" indexAlsos/>
介质类型字符串没有无效Video

使用量

此组件的典型用例如下所示. A Image 坐在宣传片的左侧,右侧有信息元素,除了引领倒转的故事. 这些信息要素通常是一个标题、文本摘要段落和时间戳。 这个 Headline 财务报告和审定财务报表 Summary 组件由本套件提供,可导入如下所示.

这一构成部分还有一个显示媒体指标的选项,该指标包括播放图标和媒体的持续时间,如果提供了数据的话.

这个 promoType 参考文献 top 可以通过600px下采用垂直卡布局. 在600px以上的断点上,保持横向布局,图像和文字摘要各占主容器的1/2.

另一方面,一个 promoType 参考文献 leading 可以在左侧和图像或组件右侧放置信息。 图像占主容器的2/3,文本摘要占1/3.

此道具必须传递到"故事宣传","标题"和"摘要"等组件.

import React, { Fragment } from 'react';
import StoryPromo, {
  Headline,
  Summary,
  Link,
  IndexAlsos,
  IndexAlso,
  IndexAlsosUl,
  IndexAlsosLi,
} from '@bbc/psammead-story-promo';
import MediaIndicator from '@bbc/psammead-media-indicator';
import { latin } from '@bbc/gel-foundations/scripts';
import LiveLabel from '@bbc/psammead-live-label';
import VisuallyHiddenText from '@bbc/psammead-visually-hidden-text';

const Image = <img src="https://foobar.com/image.jpg" />;

const IndexAlsosComponent = ({ alsoItems, script, service }) => (
  //This example doesn't show how the alsoItems are destructured to get the respective data
  <IndexAlsos offScreenText="Related content">
    {alsoItems.length > 1 ? (
      <IndexAlsosUl>
        <IndexAlsosLi
          script={script}
          service={service}
          url="https://www.bbc.co.uk/news"
          mediaIndicator={
            <MediaIndicator service={service} type="video" indexAlsos />
          }
        >
          Related text 1
        </IndexAlsosLi>
        <IndexAlsosLi
          script={script}
          service={service}
          url="https://www.bbc.co.uk/news"
        >
          Related text 2
        </IndexAlsosLi>
      </IndexAlsosUl>
    ) : (
      <IndexAlso>Related text</IndexAlso>
    )}
  </IndexAlsos>
);

const Info = ({ isLive, alsoItems }) => (
  <Fragment>
    <Headline script={latin} service="news" promoType="top">
      <Link href="https://www.bbc.co.uk/news">
        {isLive ? (
          <LiveLabel service="news" dir={dir} ariaHidden offScreenText="Live">
            The headline of the live promo
          </LiveLabel>
        ) : (
          'The headline of the promo'
        )}
      </Link>
    </Headline>
    <Summary script={latin} service="news" promoType="top">
      The summary of the promo
    </Summary>
    <time>12 March 2019</time>
    {topStory && alsoItems && (
      <IndexAlsosComponent
        alsoItems={alsoItems}
        script={latin}
        service="news"
      />
    )}
  </Fragment>
);

<StoryPromo image={Image} info={Info({ isLive: false })} promoType="top" />;

何时使用此组件

这个 StoryPromo 组件被设计在一个链接元素内使用,以使用户能够浏览另一页的故事.

无障碍说明

此组件使用完整的语义标记 Headline, (中文(简体) ), Summary,以及 Link,使用 h3, (中文(简体) ), p 财务报告和审定财务报表 a 页:1 其他无障碍因素,如图像替代文本和时间元素作为道具传入,未在此组件中明确设置.

连结在地上 h3 与Voice Over Mac和Safari合作提供更好的支持。 我们使用 faux block link 使整个块可以点击,同时使该块内嵌入的链接也能被点击.

这个 LiveLabel 上面的示例显示此组件被隐藏用于屏幕阅读器,并且有可视化的隐藏文本同时渲染。 这是为了确保屏幕阅读器正确宣布"活"字. 无需用其他语文说明.

路线图

捐款

Psammead完全开源. 我们感谢任何贡献,无论是新的组件、错误修正还是总体改进。 请参看我们的主要贡献指南,可查阅: psammead 仓库的根。 。 。 .

行为守则

我们欢迎对这项工作的反馈和帮助。 通过参与这个项目,你同意遵守 行为守则请稍候再读一下.

许可证

萨姆米德 Apache 2.0 许可。 。 。 .

版本与发布记录

@bbc/psammead-story-promo 共发布 155 个版本,首次发布于 2019/04/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
8.0.38latest2022/03/294 年前
8.0.372022/01/064 年前
8.0.362021/12/164 年前
8.0.352021/12/134 年前
8.0.342021/11/264 年前
8.0.332021/11/254 年前

其他发布通道:alpha → 7.0.0-alpha.0。

关于 @bbc/psammead-story-promo 的常见问题

@bbc/psammead-story-promo 是什么?

用于索引页面的故事宣传

如何安装 @bbc/psammead-story-promo?

在项目目录运行 npm install @bbc/psammead-story-promo,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=16.9.0)、prop-types(^15.7.2)、@emotion/react(^11.1.4)、@emotion/styled(^11.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bbc/psammead-story-promo 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/bbc__psammead-story-promo 是否存在。

@bbc/psammead-story-promo 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bbc/psammead-story-promo 可以商用吗?

@bbc/psammead-story-promo 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@bbc/psammead-story-promo 的下载量有多少?

根据 npm 官方下载统计,@bbc/psammead-story-promo 在 2026/10/08 – 2026/11/06 这 30 天内被下载 7,206 次,日均约 240 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bbc/psammead-story-promo 还在维护吗?

最新版本 8.0.38 发布于 2022/03/29(4 年前);至今共发布 155 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/04/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。