@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 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 { ReactNode, ComponentProps } from 'react';
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,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,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,GAAG,IAAI,EAAE,EAAE,eAAe,GAAG,SAAS,CAYvH;yBAZe,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"}
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"}
@@ -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":";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;AAClD,OAAO,EAAE,YAAY,EAAuB,MAAM,2BAA2B,CAAA;AAqB7E,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,IAAI,EAAE,SAAS,EAA2C;IACzE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,IAAa,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAI,CAAA;AAC7G,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,IAAI,EACJ,IAAI,GAAG,WAAW,EAClB,SAAS,EACT,MAAM,GAMP;IACC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,OAAO,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAI,CAAA;AAC/F,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAkE;IAC7G,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAI,CAAA;AAClG,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAA2C;IAC5E,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,aACtB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAI,EACpE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CACpB,KAAC,YAAY,IAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAA+C,GAAI,CACrF,IACG,CACP,CAAA;AACH,CAAC;AAcD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAmB;IAC1G,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,KAAM,IAAI,aACrC,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,GAAI,EACrB,MAAC,MAAM,eACJ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,uBAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAM,EAC9C,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,IACjB,EACT,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAI,EACxD,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,IACZ,CACX,CAAA;AACH,CAAC;AAED,UAAU,CAAC,IAAI,GAAG,IAAI,CAAA;AACtB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;AACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAA;AAC1B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAA;AACtB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAA;AACtB,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA"}
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;AAoD7D,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,CA8C9F;yBA9Ce,SAAS;wCAtDc;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;8CAQhF;QACD,KAAK,EAAE,KAAK,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB;yCAQuC;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"}
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
- // Detect the first image field in the entry if 'cover' isn't present
14
- const imageField = data[field] !== undefined || data[`${field}_media`] !== undefined ? field : undefined;
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
- return _jsx(ImageField, { field: imageField, entry: entry, className: className, alt: "" });
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 imageFieldName = Object.entries(collection.fields).find(([, f]) => f.type === 'image')?.[0];
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
- return (_jsxs("article", { className: className, ...rest, children: [imageFieldName && _jsx(Cover, { entry: entry, field: imageFieldName }), title && _jsx(Title, { children: title }), excerpt && _jsx(Excerpt, { children: excerpt }), tags && _jsx(Tags, { tags: tags }), dateValue && (_jsx(Meta, { children: _jsx(DateField, { value: dateValue }) }))] }));
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;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGlD,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,EACb,KAAK,EACL,KAAK,GAAG,OAAO,EACf,SAAS,GAKV;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAA;IAClD,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IACxG,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,GAAG,CAAA;AACrF,CAAC;AAED,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAgD;IAClF,OAAO,aAAI,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAM,CAAA;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAgD;IACpF,OAAO,YAAG,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAK,CAAA;AAChD,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,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAkB;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAA;IAElD,yCAAyC;IACzC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC3D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAC9B,EAAE,CAAC,CAAC,CAAC,CAAA;IAEN,mCAAmC;IACnC,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;IAED,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjE,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClD,CAAA;IAED,oCAAoC;IACpC,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;IAEN,sBAAsB;IACtB,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,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAE,IAAI,CAAC,gBAAgB,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7F,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;IAEzF,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,KAAM,IAAI,aACpC,cAAc,IAAI,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,GAAI,EAChE,KAAK,IAAI,KAAC,KAAK,cAAE,KAAK,GAAS,EAC/B,OAAO,IAAI,KAAC,OAAO,cAAE,OAAO,GAAW,EACvC,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,EAC5B,SAAS,IAAI,CACZ,KAAC,IAAI,cACH,KAAC,SAAS,IAAC,KAAK,EAAE,SAAS,GAAI,GAC1B,CACR,IACO,CACX,CAAA;AACH,CAAC;AAED,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;AACrB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;AACvB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;AACvB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAA;AAC3B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;AACrB,SAAS,CAAC,IAAI,GAAG,IAAI,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;AAmD7D,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,CAuClG;yBAvCe,WAAW;wCAtDY;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE;6CAI7B;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;0CAOjE;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"}
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 imageField = data[field] !== undefined || data[`${field}_media`] !== undefined ? field : undefined;
15
- if (!imageField)
16
+ const hasField = data[field] !== undefined || data[`${field}_media`] !== undefined || data[`${field}_medias`] !== undefined;
17
+ if (!hasField)
16
18
  return null;
17
- return _jsx(ImageField, { field: imageField, entry: entry, className: className, alt: "" });
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 imageFieldName = Object.entries(collection.fields).find(([, f]) => f.type === 'image')?.[0];
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
- return (_jsxs("article", { className: className, ...rest, children: [imageFieldName && _jsx(Cover, { entry: entry, field: imageFieldName }), _jsxs(Header, { children: [title && _jsx("h1", { children: title }), dateValue && _jsx(DateField, { value: dateValue })] }), bodyValue && (_jsx(Body, { value: bodyValue, type: bodyFieldType === 'rich-text' ? 'rich-text' : 'text' })), tags && _jsx(Tags, { tags: tags })] }));
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":"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"}
1
+ {"version":3,"file":"EntryDetail.js","sourceRoot":"","sources":["../../src/compounds/EntryDetail.tsx"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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"}
@@ -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';
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airdraft/react-content",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "description": "Airdraft React components for rendering CMS content — field atoms, entry cards, and blog recipes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",