@airdraft/react-content 0.1.3 → 0.1.4

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,13 @@
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.4](https://github.com/aevrHQ/airdraft/compare/v0.1.3...v0.1.4) (2026-05-23)
6
+
7
+
8
+ ### Features
9
+
10
+ * **react-content:** add support for media lists and urls ([2cb0891](https://github.com/aevrHQ/airdraft/commit/2cb089102b0530217f305c782435138592f7754d))
11
+
5
12
  ### [0.1.3](https://github.com/aevrHQ/airdraft/compare/v0.1.2...v0.1.3) (2026-05-23)
6
13
 
7
14
  ### 0.1.1 (2026-05-22)
@@ -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":";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"}
@@ -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.4",
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",