@airdraft/react-content 0.1.3 → 0.1.6
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/CHANGELOG.md +16 -0
- package/dist/blog/PostDetail.d.ts +2 -2
- package/dist/blog/PostDetail.d.ts.map +1 -1
- package/dist/blog/PostDetail.js +6 -1
- package/dist/blog/PostDetail.js.map +1 -1
- package/dist/compounds/EntryCard.d.ts +7 -1
- package/dist/compounds/EntryCard.d.ts.map +1 -1
- package/dist/compounds/EntryCard.js +21 -8
- package/dist/compounds/EntryCard.js.map +1 -1
- package/dist/compounds/EntryDetail.d.ts +7 -1
- package/dist/compounds/EntryDetail.d.ts.map +1 -1
- package/dist/compounds/EntryDetail.js +19 -6
- package/dist/compounds/EntryDetail.js.map +1 -1
- package/dist/fields/UrlField.d.ts +27 -0
- package/dist/fields/UrlField.d.ts.map +1 -0
- package/dist/fields/UrlField.js +17 -0
- package/dist/fields/UrlField.js.map +1 -0
- package/dist/fields/index.d.ts +2 -0
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +1 -0
- package/dist/fields/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.1.6](https://github.com/aevrHQ/airdraft/compare/v0.1.5...v0.1.6) (2026-05-23)
|
|
6
|
+
|
|
7
|
+
### [0.1.5](https://github.com/aevrHQ/airdraft/compare/v0.1.4...v0.1.5) (2026-05-23)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **types:** add asCollectionConfig function for casting schema objects ([f5bcaaf](https://github.com/aevrHQ/airdraft/commit/f5bcaafa42fb43d749c89dfe7e7b075adcd18474))
|
|
13
|
+
|
|
14
|
+
### [0.1.4](https://github.com/aevrHQ/airdraft/compare/v0.1.3...v0.1.4) (2026-05-23)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **react-content:** add support for media lists and urls ([2cb0891](https://github.com/aevrHQ/airdraft/commit/2cb089102b0530217f305c782435138592f7754d))
|
|
20
|
+
|
|
5
21
|
### [0.1.3](https://github.com/aevrHQ/airdraft/compare/v0.1.2...v0.1.3) (2026-05-23)
|
|
6
22
|
|
|
7
23
|
### 0.1.1 (2026-05-22)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode, type ComponentProps } from 'react';
|
|
2
2
|
import type { Entry } from '@airdraft/core';
|
|
3
3
|
import { type ExpandedAuthor } from '../fields/AuthorByline.js';
|
|
4
4
|
interface PostData {
|
|
@@ -37,7 +37,7 @@ export interface PostDetailProps extends ComponentProps<'article'> {
|
|
|
37
37
|
*
|
|
38
38
|
* RSC-compatible — no `"use client"`.
|
|
39
39
|
*/
|
|
40
|
-
export declare function PostDetail({ post, bodyType, renderBody, className, ...rest }: PostDetailProps): ReactNode;
|
|
40
|
+
export declare function PostDetail({ post, bodyType, renderBody, className, children, ...rest }: PostDetailProps): ReactNode;
|
|
41
41
|
export declare namespace PostDetail {
|
|
42
42
|
var Root: ({ className, children }: {
|
|
43
43
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostDetail.d.ts","sourceRoot":"","sources":["../../src/blog/PostDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PostDetail.d.ts","sourceRoot":"","sources":["../../src/blog/PostDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAA0C,MAAM,OAAO,CAAA;AACnG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAK3C,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7E,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,KAAK,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AAqChC,iBAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAS7E;AAMD,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,SAAS,CAAC;IAChE,IAAI,EAAE,SAAS,CAAA;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC/B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,GAAG,SAAS,CAkBjI;yBAlBe,UAAU;wCA9Da;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;qCAI/C;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;0CAIlC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;mDASlF;QACD,IAAI,EAAE,SAAS,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;KACrC;kDAKgD;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE"}
|
package/dist/blog/PostDetail.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Children, cloneElement, isValidElement } from 'react';
|
|
2
3
|
import { ImageField } from '../fields/ImageField.js';
|
|
3
4
|
import { BodyField } from '../fields/BodyField.js';
|
|
4
5
|
import { TagList } from '../fields/TagList.js';
|
|
@@ -35,7 +36,11 @@ function PostMeta({ post, className }) {
|
|
|
35
36
|
*
|
|
36
37
|
* RSC-compatible — no `"use client"`.
|
|
37
38
|
*/
|
|
38
|
-
export function PostDetail({ post, bodyType = 'rich-text', renderBody, className, ...rest }) {
|
|
39
|
+
export function PostDetail({ post, bodyType = 'rich-text', renderBody, className, children, ...rest }) {
|
|
40
|
+
if (children !== undefined) {
|
|
41
|
+
const injected = Children.map(children, (child) => isValidElement(child) ? cloneElement(child, { post }) : child);
|
|
42
|
+
return _jsx("article", { className: className, ...rest, children: injected });
|
|
43
|
+
}
|
|
39
44
|
return (_jsxs("article", { className: className, ...rest, children: [_jsx(Cover, { post: post }), _jsxs(Header, { children: [post.data.title && _jsx("h1", { children: post.data.title }), _jsx(PostMeta, { post: post })] }), _jsx(Body, { post: post, type: bodyType, render: renderBody }), _jsx(Tags, { post: post })] }));
|
|
40
45
|
}
|
|
41
46
|
PostDetail.Root = Root;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostDetail.js","sourceRoot":"","sources":["../../src/blog/PostDetail.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"PostDetail.js","sourceRoot":"","sources":["../../src/blog/PostDetail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,9 +18,10 @@ export declare namespace EntryCard {
|
|
|
18
18
|
className?: string;
|
|
19
19
|
children?: ReactNode;
|
|
20
20
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
var Cover: ({ entry, field, className, }: {
|
|
21
|
+
var Cover: ({ entry, field, multiple, className, }: {
|
|
22
22
|
entry: Entry;
|
|
23
23
|
field?: string;
|
|
24
|
+
multiple?: boolean;
|
|
24
25
|
className?: string;
|
|
25
26
|
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
26
27
|
var Title: ({ className, children }: {
|
|
@@ -40,5 +41,10 @@ export declare namespace EntryCard {
|
|
|
40
41
|
className?: string;
|
|
41
42
|
children?: ReactNode;
|
|
42
43
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
var Link: ({ value, label, className }: {
|
|
45
|
+
value?: string;
|
|
46
|
+
label?: string;
|
|
47
|
+
className?: string;
|
|
48
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
43
49
|
}
|
|
44
50
|
//# sourceMappingURL=EntryCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntryCard.d.ts","sourceRoot":"","sources":["../../src/compounds/EntryCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntryCard.d.ts","sourceRoot":"","sources":["../../src/compounds/EntryCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AA8D7D,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,SAAS,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,GAAG,SAAS,CAqD9F;yBArDe,SAAS;wCA9Dc;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;wDAShF;QACD,KAAK,EAAE,KAAK,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB;yCAcuC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;2CAI1C;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;kDAIrC;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;wCAKxE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;4CAjBxC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE"}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ImageField } from '../fields/ImageField.js';
|
|
3
|
+
import { MediaListField } from '../fields/MediaListField.js';
|
|
3
4
|
import { TagList } from '../fields/TagList.js';
|
|
4
5
|
import { DateField } from '../fields/DateField.js';
|
|
6
|
+
import { UrlField } from '../fields/UrlField.js';
|
|
5
7
|
// ---------------------------------------------------------------------------
|
|
6
8
|
// Sub-component primitives
|
|
7
9
|
// ---------------------------------------------------------------------------
|
|
8
10
|
function Root({ className, children }) {
|
|
9
11
|
return _jsx("article", { className: className, children: children });
|
|
10
12
|
}
|
|
11
|
-
function Cover({ entry, field = 'cover', className, }) {
|
|
13
|
+
function Cover({ entry, field = 'cover', multiple = false, className, }) {
|
|
12
14
|
const data = entry.data;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!imageField)
|
|
15
|
+
const hasField = data[field] !== undefined || data[`${field}_media`] !== undefined || data[`${field}_medias`] !== undefined;
|
|
16
|
+
if (!hasField)
|
|
16
17
|
return null;
|
|
17
|
-
|
|
18
|
+
if (multiple) {
|
|
19
|
+
return _jsx(MediaListField, { field: field, entry: entry, className: className });
|
|
20
|
+
}
|
|
21
|
+
return _jsx(ImageField, { field: field, entry: entry, className: className, alt: "" });
|
|
22
|
+
}
|
|
23
|
+
function Link({ value, label, className }) {
|
|
24
|
+
return _jsx(UrlField, { value: value, label: label, className: className });
|
|
18
25
|
}
|
|
19
26
|
function Title({ className, children }) {
|
|
20
27
|
return _jsx("h2", { className: className, children: children });
|
|
@@ -40,8 +47,12 @@ function Meta({ className, children }) {
|
|
|
40
47
|
*/
|
|
41
48
|
export function EntryCard({ entry, collection, className, ...rest }) {
|
|
42
49
|
const data = entry.data;
|
|
43
|
-
// Discover first image field from schema
|
|
44
|
-
const
|
|
50
|
+
// Discover first image/media field from schema
|
|
51
|
+
const imageFieldEntry = Object.entries(collection.fields).find(([, f]) => f.type === 'image' || f.type === 'media');
|
|
52
|
+
const imageFieldName = imageFieldEntry?.[0];
|
|
53
|
+
const imageFieldMultiple = imageFieldEntry ? imageFieldEntry[1].multiple === true : false;
|
|
54
|
+
// Discover first url field from schema
|
|
55
|
+
const urlFieldName = Object.entries(collection.fields).find(([, f]) => f.type === 'url')?.[0];
|
|
45
56
|
// Discover title-like string field
|
|
46
57
|
const titleFieldName = Object.keys(collection.fields).find((k) => ['title', 'name', 'heading', 'label'].includes(k));
|
|
47
58
|
// Discover excerpt-like text field
|
|
@@ -54,7 +65,8 @@ export function EntryCard({ entry, collection, className, ...rest }) {
|
|
|
54
65
|
const excerpt = excerptFieldName ? data[excerptFieldName] : undefined;
|
|
55
66
|
const tags = tagsFieldName ? data[tagsFieldName] : undefined;
|
|
56
67
|
const dateValue = dateFieldName ? data[dateFieldName] : undefined;
|
|
57
|
-
|
|
68
|
+
const urlValue = urlFieldName ? data[urlFieldName] : undefined;
|
|
69
|
+
return (_jsxs("article", { className: className, ...rest, children: [imageFieldName && _jsx(Cover, { entry: entry, field: imageFieldName, multiple: imageFieldMultiple }), title && _jsx(Title, { children: title }), excerpt && _jsx(Excerpt, { children: excerpt }), tags && _jsx(Tags, { tags: tags }), dateValue && (_jsx(Meta, { children: _jsx(DateField, { value: dateValue }) })), urlValue && _jsx(Link, { value: urlValue })] }));
|
|
58
70
|
}
|
|
59
71
|
EntryCard.Root = Root;
|
|
60
72
|
EntryCard.Cover = Cover;
|
|
@@ -62,4 +74,5 @@ EntryCard.Title = Title;
|
|
|
62
74
|
EntryCard.Excerpt = Excerpt;
|
|
63
75
|
EntryCard.Tags = Tags;
|
|
64
76
|
EntryCard.Meta = Meta;
|
|
77
|
+
EntryCard.Link = Link;
|
|
65
78
|
//# sourceMappingURL=EntryCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntryCard.js","sourceRoot":"","sources":["../../src/compounds/EntryCard.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntryCard.js","sourceRoot":"","sources":["../../src/compounds/EntryCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,9 +18,10 @@ export declare namespace EntryDetail {
|
|
|
18
18
|
className?: string;
|
|
19
19
|
children?: ReactNode;
|
|
20
20
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
var Cover: ({ entry, field, className }: {
|
|
21
|
+
var Cover: ({ entry, field, multiple, className }: {
|
|
22
22
|
entry: Entry;
|
|
23
23
|
field?: string;
|
|
24
|
+
multiple?: boolean;
|
|
24
25
|
className?: string;
|
|
25
26
|
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
26
27
|
var Header: ({ className, children }: {
|
|
@@ -41,5 +42,10 @@ export declare namespace EntryDetail {
|
|
|
41
42
|
className?: string;
|
|
42
43
|
children?: ReactNode;
|
|
43
44
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
var Link: ({ value, label, className }: {
|
|
46
|
+
value?: string;
|
|
47
|
+
label?: string;
|
|
48
|
+
className?: string;
|
|
49
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
44
50
|
}
|
|
45
51
|
//# sourceMappingURL=EntryDetail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntryDetail.d.ts","sourceRoot":"","sources":["../../src/compounds/EntryDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntryDetail.d.ts","sourceRoot":"","sources":["../../src/compounds/EntryDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AA4D7D,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,SAAS,CAAC;IACjE,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,GAAG,SAAS,CA4ClG;yBA5Ce,WAAW;wCA7DY;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;uDAIX;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;0CAcvG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;4CAQlF;QACD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB;kDAKgD;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;wCAKxE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;4CA1BxC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE"}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ImageField } from '../fields/ImageField.js';
|
|
3
|
+
import { MediaListField } from '../fields/MediaListField.js';
|
|
3
4
|
import { BodyField } from '../fields/BodyField.js';
|
|
4
5
|
import { TagList } from '../fields/TagList.js';
|
|
5
6
|
import { DateField } from '../fields/DateField.js';
|
|
7
|
+
import { UrlField } from '../fields/UrlField.js';
|
|
6
8
|
// ---------------------------------------------------------------------------
|
|
7
9
|
// Sub-component primitives
|
|
8
10
|
// ---------------------------------------------------------------------------
|
|
9
11
|
function Root({ className, children }) {
|
|
10
12
|
return _jsx("article", { className: className, children: children });
|
|
11
13
|
}
|
|
12
|
-
function Cover({ entry, field = 'cover', className }) {
|
|
14
|
+
function Cover({ entry, field = 'cover', multiple = false, className }) {
|
|
13
15
|
const data = entry.data;
|
|
14
|
-
const
|
|
15
|
-
if (!
|
|
16
|
+
const hasField = data[field] !== undefined || data[`${field}_media`] !== undefined || data[`${field}_medias`] !== undefined;
|
|
17
|
+
if (!hasField)
|
|
16
18
|
return null;
|
|
17
|
-
|
|
19
|
+
if (multiple) {
|
|
20
|
+
return _jsx(MediaListField, { field: field, entry: entry, className: className });
|
|
21
|
+
}
|
|
22
|
+
return _jsx(ImageField, { field: field, entry: entry, className: className, alt: "" });
|
|
23
|
+
}
|
|
24
|
+
function Link({ value, label, className }) {
|
|
25
|
+
return _jsx(UrlField, { value: value, label: label, className: className });
|
|
18
26
|
}
|
|
19
27
|
function Header({ className, children }) {
|
|
20
28
|
return _jsx("header", { className: className, children: children });
|
|
@@ -42,7 +50,10 @@ function Meta({ className, children }) {
|
|
|
42
50
|
*/
|
|
43
51
|
export function EntryDetail({ entry, collection, className, ...rest }) {
|
|
44
52
|
const data = entry.data;
|
|
45
|
-
const
|
|
53
|
+
const imageFieldEntry = Object.entries(collection.fields).find(([, f]) => f.type === 'image' || f.type === 'media');
|
|
54
|
+
const imageFieldName = imageFieldEntry?.[0];
|
|
55
|
+
const imageFieldMultiple = imageFieldEntry ? imageFieldEntry[1].multiple === true : false;
|
|
56
|
+
const urlFieldName = Object.entries(collection.fields).find(([, f]) => f.type === 'url')?.[0];
|
|
46
57
|
const titleFieldName = Object.keys(collection.fields).find((k) => ['title', 'name', 'heading', 'label'].includes(k));
|
|
47
58
|
const bodyFieldName = Object.entries(collection.fields).find(([, f]) => f.type === 'rich-text' || f.type === 'text')?.[0];
|
|
48
59
|
const bodyFieldType = bodyFieldName ? collection.fields[bodyFieldName]?.type : undefined;
|
|
@@ -52,7 +63,8 @@ export function EntryDetail({ entry, collection, className, ...rest }) {
|
|
|
52
63
|
const bodyValue = bodyFieldName ? data[bodyFieldName] : undefined;
|
|
53
64
|
const tags = tagsFieldName ? data[tagsFieldName] : undefined;
|
|
54
65
|
const dateValue = dateFieldName ? data[dateFieldName] : undefined;
|
|
55
|
-
|
|
66
|
+
const urlValue = urlFieldName ? data[urlFieldName] : undefined;
|
|
67
|
+
return (_jsxs("article", { className: className, ...rest, children: [imageFieldName && _jsx(Cover, { entry: entry, field: imageFieldName, multiple: imageFieldMultiple }), _jsxs(Header, { children: [title && _jsx("h1", { children: title }), dateValue && _jsx(DateField, { value: dateValue }), urlValue && _jsx(Link, { value: urlValue })] }), bodyValue && (_jsx(Body, { value: bodyValue, type: bodyFieldType === 'rich-text' ? 'rich-text' : 'text' })), tags && _jsx(Tags, { tags: tags })] }));
|
|
56
68
|
}
|
|
57
69
|
EntryDetail.Root = Root;
|
|
58
70
|
EntryDetail.Cover = Cover;
|
|
@@ -60,4 +72,5 @@ EntryDetail.Header = Header;
|
|
|
60
72
|
EntryDetail.Body = Body;
|
|
61
73
|
EntryDetail.Tags = Tags;
|
|
62
74
|
EntryDetail.Meta = Meta;
|
|
75
|
+
EntryDetail.Link = Link;
|
|
63
76
|
//# sourceMappingURL=EntryDetail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntryDetail.js","sourceRoot":"","sources":["../../src/compounds/EntryDetail.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntryDetail.js","sourceRoot":"","sources":["../../src/compounds/EntryDetail.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAgD;IACjF,OAAO,kBAAS,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAW,CAAA;AAC5D,CAAC;AAED,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,SAAS,EAA4E;IAC9I,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAA;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,SAAS,CAAA;IAC3H,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAI,CAAA;IAC7E,CAAC;IACD,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,GAAG,CAAA;AAChF,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAA0D;IAC/F,OAAO,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAI,CAAA;AACvE,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAgD;IACnF,OAAO,iBAAQ,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAU,CAAA;AAC1D,CAAC;AAED,SAAS,IAAI,CAAC,EACZ,KAAK,EACL,IAAI,GAAG,MAAM,EACb,SAAS,GAKV;IACC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAI,CAAA;AACtE,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAkE;IAC7G,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAI,CAAA;AAClF,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAgD;IACjF,OAAO,cAAK,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAO,CAAA;AACpD,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAoB;IACrF,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAA;IAElD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACnH,MAAM,cAAc,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAE,eAAe,CAAC,CAAC,CAA4B,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACrH,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7F,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClD,CAAA;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CACvD,EAAE,CAAC,CAAC,CAAC,CAAA;IACN,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IACxF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CACzD,EAAE,CAAC,CAAC,CAAC,CAAA;IACN,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CACtD,EAAE,CAAC,CAAC,CAAC,CAAA;IAEN,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAE,IAAI,CAAC,cAAc,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IACvF,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,aAAa,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IACzF,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,aAAa,CAA0B,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,aAAa,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IACzF,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAE,IAAI,CAAC,YAAY,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtF,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,KAAM,IAAI,aACpC,cAAc,IAAI,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,GAAI,EAC/F,MAAC,MAAM,eACJ,KAAK,IAAI,uBAAK,KAAK,GAAM,EACzB,SAAS,IAAI,KAAC,SAAS,IAAC,KAAK,EAAE,SAAS,GAAI,EAC5C,QAAQ,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,GAAI,IAC/B,EACR,SAAS,IAAI,CACZ,KAAC,IAAI,IACH,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAC1D,CACH,EACA,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,IACrB,CACX,CAAA;AACH,CAAC;AAED,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;AACzB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;AAC3B,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface UrlFieldProps {
|
|
3
|
+
/** The raw url value from entry data. */
|
|
4
|
+
value: string | undefined | null;
|
|
5
|
+
/** Text to display. Defaults to the URL itself. */
|
|
6
|
+
label?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Render prop — receives the validated URL and renders a custom element.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <UrlField value={entry.data.url}>
|
|
13
|
+
* {(url) => <Button asChild><a href={url}>Visit site</a></Button>}
|
|
14
|
+
* </UrlField>
|
|
15
|
+
*/
|
|
16
|
+
children?: (url: string) => ReactNode;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Renders a hyperlink from a `url`-type field value.
|
|
20
|
+
*
|
|
21
|
+
* Accepts absolute URLs (`https://…`) and root-relative paths (`/…`).
|
|
22
|
+
* Returns `null` when the value is empty or not a string.
|
|
23
|
+
*
|
|
24
|
+
* RSC-compatible — no `"use client"`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function UrlField({ value, label, className, children }: UrlFieldProps): ReactNode;
|
|
27
|
+
//# sourceMappingURL=UrlField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlField.d.ts","sourceRoot":"","sources":["../../src/fields/UrlField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IAChC,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAA;CACtC;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,SAAS,CAexF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a hyperlink from a `url`-type field value.
|
|
4
|
+
*
|
|
5
|
+
* Accepts absolute URLs (`https://…`) and root-relative paths (`/…`).
|
|
6
|
+
* Returns `null` when the value is empty or not a string.
|
|
7
|
+
*
|
|
8
|
+
* RSC-compatible — no `"use client"`.
|
|
9
|
+
*/
|
|
10
|
+
export function UrlField({ value, label, className, children }) {
|
|
11
|
+
if (!value || typeof value !== 'string')
|
|
12
|
+
return null;
|
|
13
|
+
if (children)
|
|
14
|
+
return children(value);
|
|
15
|
+
return (_jsx("a", { href: value, className: className, target: value.startsWith('http') ? '_blank' : undefined, rel: value.startsWith('http') ? 'noopener noreferrer' : undefined, children: label ?? value }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=UrlField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlField.js","sourceRoot":"","sources":["../../src/fields/UrlField.tsx"],"names":[],"mappings":";AAmBA;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAiB;IAC3E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAEpD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEpC,OAAO,CACL,YACE,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACvD,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,YAEhE,KAAK,IAAI,KAAK,GACb,CACL,CAAA;AACH,CAAC"}
|
package/dist/fields/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { MediaField } from './MediaField.js';
|
|
|
4
4
|
export type { MediaFieldProps } from './MediaField.js';
|
|
5
5
|
export { MediaListField } from './MediaListField.js';
|
|
6
6
|
export type { MediaListFieldProps } from './MediaListField.js';
|
|
7
|
+
export { UrlField } from './UrlField.js';
|
|
8
|
+
export type { UrlFieldProps } from './UrlField.js';
|
|
7
9
|
export { BodyField } from './BodyField.js';
|
|
8
10
|
export type { BodyFieldProps } from './BodyField.js';
|
|
9
11
|
export { TagList } from './TagList.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/fields/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { ImageField } from './ImageField.js';
|
|
2
2
|
export { MediaField } from './MediaField.js';
|
|
3
3
|
export { MediaListField } from './MediaListField.js';
|
|
4
|
+
export { UrlField } from './UrlField.js';
|
|
4
5
|
export { BodyField } from './BodyField.js';
|
|
5
6
|
export { TagList } from './TagList.js';
|
|
6
7
|
export { AuthorByline } from './AuthorByline.js';
|
package/dist/fields/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA"}
|
package/package.json
CHANGED