newspaperui 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1197 -0
- package/dist/layout/Article.d.ts +23 -0
- package/dist/layout/Article.d.ts.map +1 -0
- package/dist/layout/BreakingNewsBanner.d.ts +17 -0
- package/dist/layout/BreakingNewsBanner.d.ts.map +1 -0
- package/dist/layout/Factbox.d.ts +22 -0
- package/dist/layout/Factbox.d.ts.map +1 -0
- package/dist/layout/Folio.d.ts +20 -0
- package/dist/layout/Folio.d.ts.map +1 -0
- package/dist/layout/Footer.d.ts +20 -0
- package/dist/layout/Footer.d.ts.map +1 -0
- package/dist/layout/IndexBox.d.ts +25 -0
- package/dist/layout/IndexBox.d.ts.map +1 -0
- package/dist/layout/Layer.d.ts +26 -0
- package/dist/layout/Layer.d.ts.map +1 -0
- package/dist/layout/Layout.d.ts +29 -0
- package/dist/layout/Layout.d.ts.map +1 -0
- package/dist/layout/Masthead.d.ts +28 -0
- package/dist/layout/Masthead.d.ts.map +1 -0
- package/dist/layout/RelatedArticles.d.ts +22 -0
- package/dist/layout/RelatedArticles.d.ts.map +1 -0
- package/dist/layout/Rule.d.ts +20 -0
- package/dist/layout/Rule.d.ts.map +1 -0
- package/dist/layout/Section.d.ts +35 -0
- package/dist/layout/Section.d.ts.map +1 -0
- package/dist/layout/Sidebar.d.ts +20 -0
- package/dist/layout/Sidebar.d.ts.map +1 -0
- package/dist/media/Figure.d.ts +34 -0
- package/dist/media/Figure.d.ts.map +1 -0
- package/dist/media/Image.d.ts +24 -0
- package/dist/media/Image.d.ts.map +1 -0
- package/dist/media/PullQuote.d.ts +25 -0
- package/dist/media/PullQuote.d.ts.map +1 -0
- package/dist/media/Video.d.ts +29 -0
- package/dist/media/Video.d.ts.map +1 -0
- package/dist/style.css +1 -0
- package/dist/text/AuthorCard.d.ts +18 -0
- package/dist/text/AuthorCard.d.ts.map +1 -0
- package/dist/text/BodyText.d.ts +27 -0
- package/dist/text/BodyText.d.ts.map +1 -0
- package/dist/text/Byline.d.ts +18 -0
- package/dist/text/Byline.d.ts.map +1 -0
- package/dist/text/Caption.d.ts +21 -0
- package/dist/text/Caption.d.ts.map +1 -0
- package/dist/text/Dateline.d.ts +20 -0
- package/dist/text/Dateline.d.ts.map +1 -0
- package/dist/text/Headline.d.ts +24 -0
- package/dist/text/Headline.d.ts.map +1 -0
- package/dist/text/JumpLine.d.ts +18 -0
- package/dist/text/JumpLine.d.ts.map +1 -0
- package/dist/text/Kicker.d.ts +19 -0
- package/dist/text/Kicker.d.ts.map +1 -0
- package/dist/text/Quote.d.ts +24 -0
- package/dist/text/Quote.d.ts.map +1 -0
- package/dist/text/Subhead.d.ts +23 -0
- package/dist/text/Subhead.d.ts.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface ArticleProps {
|
|
3
|
+
span?: number;
|
|
4
|
+
breakable?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Article — 文章块,grid-column span 跨栏
|
|
11
|
+
*
|
|
12
|
+
* - 通过 span 属性控制在 Section 栅格中占据的列数
|
|
13
|
+
* - 自动 clamp 到父 Section 的最大列数
|
|
14
|
+
* - 支持 print 分页控制(breakable)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <Article span={14} breakable={false}>
|
|
18
|
+
* <Headline weight="High">Breaking News</Headline>
|
|
19
|
+
* <BodyText columns={2}>...</BodyText>
|
|
20
|
+
* </Article>
|
|
21
|
+
*/
|
|
22
|
+
export declare const Article: React.FC<ArticleProps>;
|
|
23
|
+
//# sourceMappingURL=Article.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Article.d.ts","sourceRoot":"","sources":["../../src/layout/Article.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAkB1C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface BreakingNewsBannerProps {
|
|
3
|
+
label?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: CSSProperties;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* BreakingNewsBanner — 突发新闻横幅
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <BreakingNewsBanner label="BREAKING">
|
|
13
|
+
* Major earthquake strikes coastal region
|
|
14
|
+
* </BreakingNewsBanner>
|
|
15
|
+
*/
|
|
16
|
+
export declare const BreakingNewsBanner: React.FC<BreakingNewsBannerProps>;
|
|
17
|
+
//# sourceMappingURL=BreakingNewsBanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreakingNewsBanner.d.ts","sourceRoot":"","sources":["../../src/layout/BreakingNewsBanner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGxD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4BhE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface FactboxProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
span?: number;
|
|
5
|
+
variant?: 'default' | 'highlight' | 'timeline';
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Factbox — 嵌入正文的信息框
|
|
12
|
+
*
|
|
13
|
+
* 用于放关键数据、时间线、人物简介等结构化信息。
|
|
14
|
+
* InDesign 中称为 "Anchored Object"。
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <Factbox title="Key Facts" variant="highlight">
|
|
18
|
+
* <ul><li>GDP growth: 3.2%</li></ul>
|
|
19
|
+
* </Factbox>
|
|
20
|
+
*/
|
|
21
|
+
export declare const Factbox: React.FC<FactboxProps>;
|
|
22
|
+
//# sourceMappingURL=Factbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Factbox.d.ts","sourceRoot":"","sources":["../../src/layout/Factbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyD1C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface FolioProps {
|
|
3
|
+
page: string;
|
|
4
|
+
section?: string;
|
|
5
|
+
date?: string;
|
|
6
|
+
publication?: string;
|
|
7
|
+
align?: 'left' | 'center' | 'between';
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Folio — 版面页眉(页码 + 版名 + 日期)
|
|
13
|
+
*
|
|
14
|
+
* 报纸每个内页顶部的标识条,告诉读者当前在哪个版面。
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <Folio page="A2" section="要闻" date="2026年5月21日" publication="人民周报" />
|
|
18
|
+
*/
|
|
19
|
+
export declare const Folio: React.FC<FolioProps>;
|
|
20
|
+
//# sourceMappingURL=Folio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Folio.d.ts","sourceRoot":"","sources":["../../src/layout/Folio.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA2BtC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface FooterProps {
|
|
3
|
+
copyright?: string;
|
|
4
|
+
edition?: string;
|
|
5
|
+
links?: Array<{
|
|
6
|
+
label: string;
|
|
7
|
+
href: string;
|
|
8
|
+
}>;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Footer — 报纸页脚/版权信息区
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <Footer copyright="© 2026 The Daily Chronicle" edition="Vol. CXLIX" />
|
|
18
|
+
*/
|
|
19
|
+
export declare const Footer: React.FC<FooterProps>;
|
|
20
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGxD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqCxC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface IndexItem {
|
|
3
|
+
page: string;
|
|
4
|
+
title: string;
|
|
5
|
+
headline?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IndexBoxProps {
|
|
8
|
+
title?: string;
|
|
9
|
+
items: IndexItem[];
|
|
10
|
+
className?: string;
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* IndexBox — 头版内容索引框
|
|
15
|
+
*
|
|
16
|
+
* 告诉读者今天各版有什么内容。通常放在头版右上角或底部。
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <IndexBox title="Inside" items={[
|
|
20
|
+
* { page: 'A2', title: 'Economy', headline: 'Markets rally...' },
|
|
21
|
+
* { page: 'B1', title: 'Sports', headline: 'Championship final...' },
|
|
22
|
+
* ]} />
|
|
23
|
+
*/
|
|
24
|
+
export declare const IndexBox: React.FC<IndexBoxProps>;
|
|
25
|
+
//# sourceMappingURL=IndexBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexBox.d.ts","sourceRoot":"","sources":["../../src/layout/IndexBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA+D5C,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface LayerProps {
|
|
3
|
+
position?: 'absolute' | 'fixed' | 'sticky';
|
|
4
|
+
top?: string | number;
|
|
5
|
+
left?: string | number;
|
|
6
|
+
right?: string | number;
|
|
7
|
+
bottom?: string | number;
|
|
8
|
+
zIndex?: number;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Layer — 浮动层(absolute/fixed/sticky)
|
|
15
|
+
*
|
|
16
|
+
* - 支持 absolute、fixed、sticky 三种定位模式
|
|
17
|
+
* - 可精确控制 top/left/right/bottom/zIndex
|
|
18
|
+
* - 用于叠加装饰元素、浮动导航或 sticky 侧栏
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <Layer position="sticky" top={0} zIndex={100}>
|
|
22
|
+
* <nav>Sticky Navigation</nav>
|
|
23
|
+
* </Layer>
|
|
24
|
+
*/
|
|
25
|
+
export declare const Layer: React.FC<LayerProps>;
|
|
26
|
+
//# sourceMappingURL=Layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["../../src/layout/Layer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAUtC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface LayoutProps {
|
|
3
|
+
columns?: number;
|
|
4
|
+
maxWidth?: string;
|
|
5
|
+
padding?: string;
|
|
6
|
+
theme?: 'light' | 'dark';
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
interface LayoutContextValue {
|
|
12
|
+
columns: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const useLayout: () => LayoutContextValue;
|
|
15
|
+
/**
|
|
16
|
+
* Layout — 顶层容器,提供 24 列栅格 Context
|
|
17
|
+
*
|
|
18
|
+
* - 通过 LayoutContext 向子组件广播 columns 数量
|
|
19
|
+
* - 支持 light/dark 主题切换(data-theme 属性)
|
|
20
|
+
* - 居中布局,可配置 maxWidth 和 padding
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* <Layout columns={24} theme="light" maxWidth="1280px">
|
|
24
|
+
* <Section columns={24}>...</Section>
|
|
25
|
+
* </Layout>
|
|
26
|
+
*/
|
|
27
|
+
export declare const Layout: React.FC<LayoutProps>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=Layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAA6B,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEnF,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,UAAU,kBAAkB;IAAG,OAAO,EAAE,MAAM,CAAC;CAAE;AAEjD,eAAO,MAAM,SAAS,0BAAkC,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsBxC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface MastheadProps {
|
|
3
|
+
title: string;
|
|
4
|
+
kicker?: string;
|
|
5
|
+
edition?: string;
|
|
6
|
+
date?: string;
|
|
7
|
+
price?: string;
|
|
8
|
+
variant?: 'classic' | 'blackletter' | 'modern';
|
|
9
|
+
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Masthead — 报头(classic/blackletter/modern 三种 variant)
|
|
14
|
+
*
|
|
15
|
+
* - classic: Cormorant Garamond 居中衬线风格
|
|
16
|
+
* - blackletter: UnifrakturMaguntia 德式哥特体
|
|
17
|
+
* - modern: 左对齐现代大标题风格
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <Masthead
|
|
21
|
+
* variant="classic"
|
|
22
|
+
* title="The Daily Chronicle"
|
|
23
|
+
* date="May 19, 2026"
|
|
24
|
+
* edition="Vol. CLII No. 42"
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
export declare const Masthead: React.FC<MastheadProps>;
|
|
28
|
+
//# sourceMappingURL=Masthead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Masthead.d.ts","sourceRoot":"","sources":["../../src/layout/Masthead.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC/C,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkE5C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface RelatedArticle {
|
|
3
|
+
title: string;
|
|
4
|
+
href: string;
|
|
5
|
+
category?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RelatedArticlesProps {
|
|
8
|
+
title?: string;
|
|
9
|
+
articles: RelatedArticle[];
|
|
10
|
+
className?: string;
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* RelatedArticles — "See Also" / "相关报道" 列表
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <RelatedArticles title="Related" articles={[
|
|
18
|
+
* { title: 'Climate bill passes', href: '/article/1', category: 'Politics' }
|
|
19
|
+
* ]} />
|
|
20
|
+
*/
|
|
21
|
+
export declare const RelatedArticles: React.FC<RelatedArticlesProps>;
|
|
22
|
+
//# sourceMappingURL=RelatedArticles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelatedArticles.d.ts","sourceRoot":"","sources":["../../src/layout/RelatedArticles.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiD1D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface RuleProps {
|
|
3
|
+
variant?: 'hairline' | 'double' | 'thick';
|
|
4
|
+
orientation?: 'horizontal' | 'vertical';
|
|
5
|
+
span?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Rule — 分隔线(hairline/double/thick)
|
|
11
|
+
*
|
|
12
|
+
* - 支持水平和垂直方向
|
|
13
|
+
* - hairline: 1px 细线;double: 双线装饰;thick: 3px 粗线
|
|
14
|
+
* - 水平模式下可通过 span 控制跨栏宽度
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <Rule variant="double" orientation="horizontal" />
|
|
18
|
+
*/
|
|
19
|
+
export declare const Rule: React.FC<RuleProps>;
|
|
20
|
+
//# sourceMappingURL=Rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../src/layout/Rule.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA2CpC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface SectionProps {
|
|
3
|
+
columns: number;
|
|
4
|
+
gap?: string;
|
|
5
|
+
breakable?: boolean;
|
|
6
|
+
divider?: 'none' | 'top' | 'bottom' | 'both';
|
|
7
|
+
responsive?: {
|
|
8
|
+
sm?: number;
|
|
9
|
+
md?: number;
|
|
10
|
+
lg?: number;
|
|
11
|
+
};
|
|
12
|
+
className?: string;
|
|
13
|
+
style?: CSSProperties;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
interface SectionContextValue {
|
|
17
|
+
columns: number;
|
|
18
|
+
}
|
|
19
|
+
export declare const useSection: () => SectionContextValue;
|
|
20
|
+
/**
|
|
21
|
+
* Section — CSS Grid 栅格区域
|
|
22
|
+
*
|
|
23
|
+
* - 内部创建独立的 grid 容器,列数受父 Layout 约束
|
|
24
|
+
* - 支持 hairline divider 分隔线(top/bottom/both)
|
|
25
|
+
* - 通过 SectionContext 向子 Article 广播当前列数
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <Section columns={24} gap="var(--nui-gutter)" divider="bottom">
|
|
29
|
+
* <Article span={14}>...</Article>
|
|
30
|
+
* <Article span={10}>...</Article>
|
|
31
|
+
* </Section>
|
|
32
|
+
*/
|
|
33
|
+
export declare const Section: React.FC<SectionProps>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=Section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.d.ts","sourceRoot":"","sources":["../../src/layout/Section.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAoC,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI1F,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,UAAU,mBAAmB;IAAG,OAAO,EAAE,MAAM,CAAC;CAAE;AAElD,eAAO,MAAM,UAAU,2BAAmC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyC1C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface SidebarProps {
|
|
3
|
+
span?: number;
|
|
4
|
+
position?: 'left' | 'right';
|
|
5
|
+
divider?: boolean;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Sidebar — 侧边栏内容区(天气、股票、快讯摘要等)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <Section columns={24}>
|
|
15
|
+
* <Article span={18}>...</Article>
|
|
16
|
+
* <Sidebar span={6} position="right" divider>...</Sidebar>
|
|
17
|
+
* </Section>
|
|
18
|
+
*/
|
|
19
|
+
export declare const Sidebar: React.FC<SidebarProps>;
|
|
20
|
+
//# sourceMappingURL=Sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuB1C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface FigureProps {
|
|
3
|
+
src?: string;
|
|
4
|
+
alt?: string;
|
|
5
|
+
caption?: string;
|
|
6
|
+
credit?: string;
|
|
7
|
+
span?: number;
|
|
8
|
+
loading?: 'lazy' | 'eager';
|
|
9
|
+
aspectRatio?: string;
|
|
10
|
+
sizes?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Figure — 图文组合(img + Caption)
|
|
17
|
+
*
|
|
18
|
+
* - 将图片与 Caption 组合为语义化 figure 元素
|
|
19
|
+
* - 支持 caption 文字说明和 credit 来源标注
|
|
20
|
+
* - 自动避免 print 分页断开(break-inside: avoid)
|
|
21
|
+
* - 支持 children 自定义内容替代 img
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* <Figure
|
|
25
|
+
* src="/photo.jpg"
|
|
26
|
+
* alt="City skyline"
|
|
27
|
+
* caption="Downtown at dusk"
|
|
28
|
+
* credit="Photo by John"
|
|
29
|
+
* span={10}
|
|
30
|
+
* aspectRatio="16/9"
|
|
31
|
+
* />
|
|
32
|
+
*/
|
|
33
|
+
export declare const Figure: React.FC<FigureProps>;
|
|
34
|
+
//# sourceMappingURL=Figure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Figure.d.ts","sourceRoot":"","sources":["../../src/media/Figure.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2BxC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface ImageProps {
|
|
3
|
+
src: string;
|
|
4
|
+
alt: string;
|
|
5
|
+
span?: number;
|
|
6
|
+
loading?: 'lazy' | 'eager';
|
|
7
|
+
aspectRatio?: string;
|
|
8
|
+
sizes?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Image — 图片
|
|
14
|
+
*
|
|
15
|
+
* - 响应式全宽图片,自动适配栅格列宽
|
|
16
|
+
* - 通过 span 控制在 Section 中占据的列数
|
|
17
|
+
* - 默认 lazy loading 优化性能
|
|
18
|
+
* - 必须提供 alt 属性以确保无障碍访问
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <Image src="/photo.jpg" alt="City skyline" span={12} aspectRatio="16/9" />
|
|
22
|
+
*/
|
|
23
|
+
export declare const Image: React.FC<ImageProps>;
|
|
24
|
+
//# sourceMappingURL=Image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../src/media/Image.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAsBtC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface PullQuoteProps {
|
|
3
|
+
weight?: 'High' | 'Medium';
|
|
4
|
+
span?: number;
|
|
5
|
+
spanAllColumns?: boolean;
|
|
6
|
+
author?: string;
|
|
7
|
+
align?: 'left' | 'center';
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* PullQuote — 拉引(上下双 hairline + Display 字体)
|
|
14
|
+
*
|
|
15
|
+
* - 上下 hairline 边框包裹,Display 字体突出引文
|
|
16
|
+
* - 支持 spanAllColumns 跨越多栏 BodyText 的所有列
|
|
17
|
+
* - 可附带 author 署名(small-caps 样式)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <PullQuote weight="High" author="Jane Doe" align="center">
|
|
21
|
+
* "Design is not just what it looks like — design is how it works."
|
|
22
|
+
* </PullQuote>
|
|
23
|
+
*/
|
|
24
|
+
export declare const PullQuote: React.FC<PullQuoteProps>;
|
|
25
|
+
//# sourceMappingURL=PullQuote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PullQuote.d.ts","sourceRoot":"","sources":["../../src/media/PullQuote.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqD9C,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface VideoProps {
|
|
3
|
+
src: string;
|
|
4
|
+
poster?: string;
|
|
5
|
+
caption?: string;
|
|
6
|
+
credit?: string;
|
|
7
|
+
span?: number;
|
|
8
|
+
controls?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Video — 视频
|
|
14
|
+
*
|
|
15
|
+
* - 响应式视频播放器,支持 poster 封面图
|
|
16
|
+
* - 可附带 caption 说明和 credit 来源
|
|
17
|
+
* - 自动避免 print 分页断开
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <Video
|
|
21
|
+
* src="/clip.mp4"
|
|
22
|
+
* poster="/poster.jpg"
|
|
23
|
+
* caption="Interview footage"
|
|
24
|
+
* credit="Video by Reuters"
|
|
25
|
+
* span={14}
|
|
26
|
+
* />
|
|
27
|
+
*/
|
|
28
|
+
export declare const Video: React.FC<VideoProps>;
|
|
29
|
+
//# sourceMappingURL=Video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Video.d.ts","sourceRoot":"","sources":["../../src/media/Video.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK7C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CActC,CAAC"}
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&family=Inter:wght@400;500;600;700&family=UnifrakturMaguntia&display=swap";@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700;900&family=Noto+Serif+JP:wght@400;500;600;700;900&display=swap";:root{--font-family-masthead: "Cormorant Garamond", "Playfair Display", Georgia, serif;--font-family-blackletter: "UnifrakturMaguntia", "Cormorant Garamond", serif;--font-family-display: "Source Serif 4", Georgia, "Times New Roman", serif;--font-family-headline: "Source Serif 4", Georgia, "Times New Roman", serif;--font-family-body: "Source Serif 4", Georgia, "Times New Roman", serif;--font-family-meta: "Inter", system-ui, sans-serif;--font-family-cjk-serif: "Noto Serif SC", "Noto Serif JP", "Source Serif 4", serif;--font-family-cjk-jp: "Noto Serif JP", "Source Serif 4", serif;--nui-accent-cjk-red: #CC2929;--nui-bg-page: #F7F4ED;--nui-bg-surface: #FBF9F4;--nui-text-primary: #1A1A1A;--nui-text-body: #22201C;--nui-text-secondary: #4A4742;--nui-text-muted: #6E6A63;--nui-text-quote: #2E2A24;--nui-rule-hairline: #C9C2B2;--nui-rule-decorative: #1A1A1A;--nui-accent-primary: #7A1F1F;--nui-accent-ink-blue: #1B2A4A;--nui-highlight: #F2E9C8;--nui-gutter: 1.5rem;--nui-space-1: .25rem;--nui-space-2: .5rem;--nui-space-3: .75rem;--nui-space-4: 1rem;--nui-space-6: 1.5rem;--nui-space-8: 2rem;--nui-radius-none: 0;--nui-radius-sm: 2px;--nui-radius-md: 4px;--nui-shadow-sm: 0 1px 2px rgba(0,0,0,.05);--nui-shadow-md: 0 2px 8px rgba(0,0,0,.08);--nui-transition-fast: .15s ease;--nui-transition-normal: .25s ease;--nui-z-base: 0;--nui-z-sticky: 10;--nui-z-header: 50;--nui-z-modal: 100;--nui-z-tooltip: 150}[data-theme=dark]{--nui-bg-page: #14110D;--nui-bg-surface: #1C1812;--nui-text-primary: #EDE6D6;--nui-text-body: #DCD4C2;--nui-text-secondary: #A89F8C;--nui-text-muted: #857C6A;--nui-text-quote: #DCD4C2;--nui-rule-hairline: #3A352C;--nui-rule-decorative: #EDE6D6;--nui-accent-primary: #C97A6E;--nui-accent-ink-blue: #7E94C2;--nui-highlight: #3A2F18;--nui-shadow-sm: 0 1px 2px rgba(0,0,0,.3);--nui-shadow-md: 0 2px 8px rgba(0,0,0,.4)}html,body{background:var(--nui-bg-page);color:var(--nui-text-body)}.nui-drop-cap>p:first-of-type:first-letter,.nui-drop-cap>:first-child:first-letter{float:left;font-family:var(--font-family-display);font-weight:700;font-size:4.2em;line-height:.82;margin:.05em .1em 0 0;color:var(--nui-text-primary)}.nui-small-caps{font-variant-caps:small-caps;font-feature-settings:"smcp" 1,"c2sc" 1;letter-spacing:.06em;font-family:var(--font-family-meta)}.nui-paragraph-flow>p{margin:0;orphans:3;widows:3;-webkit-hyphens:auto;hyphens:auto;break-inside:avoid-column}.nui-paragraph-flow>p+p{text-indent:1em}.nui-paragraph-flow>p.nui-no-indent+p{text-indent:0}.nui-osf{font-feature-settings:"onum" 1,"kern" 1,"liga" 1;font-variant-numeric:oldstyle-nums proportional-nums}.nui-tnum{font-feature-settings:"lnum" 1,"tnum" 1;font-variant-numeric:lining-nums tabular-nums}.nui-hanging-punctuation{hanging-punctuation:first allow-end last}.nui-column-rule{column-rule:1px solid var(--nui-rule-hairline)}.nui-avoid-break{break-inside:avoid;page-break-inside:avoid}.nui-span-all-columns{column-span:all}.nui-masthead-rule-top,.nui-masthead-rule-bottom{height:8px;background:linear-gradient(to bottom,var(--nui-rule-decorative) 0,var(--nui-rule-decorative) 1px,transparent 1px,transparent 5px,var(--nui-rule-decorative) 5px,var(--nui-rule-decorative) 8px)}.nui-rule-hairline{border:0;border-top:1px solid var(--nui-rule-hairline);margin:0}@media (max-width: 640px){.nui-section{grid-template-columns:1fr!important}.nui-section>*{grid-column:1 / -1!important}.nui-bodytext{column-count:1!important;column-width:auto!important}}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface AuthorCardProps {
|
|
3
|
+
name: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
bio?: string;
|
|
6
|
+
avatar?: string;
|
|
7
|
+
email?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* AuthorCard — 作者简介卡片(长篇报道末尾)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <AuthorCard name="Eleanor Whitcombe" role="Senior Correspondent" bio="..." avatar="/avatar.jpg" />
|
|
16
|
+
*/
|
|
17
|
+
export declare const AuthorCard: React.FC<AuthorCardProps>;
|
|
18
|
+
//# sourceMappingURL=AuthorCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthorCard.d.ts","sourceRoot":"","sources":["../../src/text/AuthorCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqEhD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface BodyTextProps {
|
|
3
|
+
weight?: 'High' | 'Medium' | 'Low';
|
|
4
|
+
span?: number;
|
|
5
|
+
columns?: 1 | 2 | 3 | 4;
|
|
6
|
+
columnWidth?: string;
|
|
7
|
+
columnFill?: 'auto' | 'balance';
|
|
8
|
+
dropCap?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* BodyText — 正文(核心:columns 多栏文字流 + dropCap 首字下沉)
|
|
15
|
+
*
|
|
16
|
+
* - CSS Multi-column 实现真实报纸多栏排版(1-4 栏)
|
|
17
|
+
* - dropCap 启用 ::first-letter 首字下沉效果
|
|
18
|
+
* - 自动应用 old-style figures、hanging punctuation、column-rule hairline
|
|
19
|
+
* - columnFill 默认 'balance',浏览器自动均分内容到各栏(无需指定 height)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <BodyText columns={3} dropCap>
|
|
23
|
+
* <p>The story begins with a dramatic opening paragraph...</p>
|
|
24
|
+
* </BodyText>
|
|
25
|
+
*/
|
|
26
|
+
export declare const BodyText: React.FC<BodyTextProps>;
|
|
27
|
+
//# sourceMappingURL=BodyText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BodyText.d.ts","sourceRoot":"","sources":["../../src/text/BodyText.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyC5C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface BylineProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Byline — 署名(Inter small-caps)
|
|
9
|
+
*
|
|
10
|
+
* - Inter 字体 + OpenType small-caps 特性
|
|
11
|
+
* - 用于文章作者署名,通常置于标题下方
|
|
12
|
+
* - 字号、字重、间距由 visualWeights 数据驱动
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <Byline>BY ALICE SMITH</Byline>
|
|
16
|
+
*/
|
|
17
|
+
export declare const Byline: React.FC<BylineProps>;
|
|
18
|
+
//# sourceMappingURL=Byline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Byline.d.ts","sourceRoot":"","sources":["../../src/text/Byline.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmBxC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as React, ReactNode, CSSProperties } from 'react';
|
|
2
|
+
export interface CaptionProps {
|
|
3
|
+
credit?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: CSSProperties;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Caption — 图片说明(italic + credit small-caps)
|
|
10
|
+
*
|
|
11
|
+
* - 主体文字为 italic 衬线,描述图片内容
|
|
12
|
+
* - credit 部分以 small-caps 显示摄影师/来源信息
|
|
13
|
+
* - 渲染为 figcaption,语义化配合 Figure 使用
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* <Caption credit="Photograph by Jane Doe">
|
|
17
|
+
* A view of the city skyline at sunset.
|
|
18
|
+
* </Caption>
|
|
19
|
+
*/
|
|
20
|
+
export declare const Caption: React.FC<CaptionProps>;
|
|
21
|
+
//# sourceMappingURL=Caption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Caption.d.ts","sourceRoot":"","sources":["../../src/text/Caption.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAkC1C,CAAC"}
|